aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--BUILD24
-rw-r--r--Makefile207
-rw-r--r--binding.gyp2
-rw-r--r--build.yaml44
-rw-r--r--composer.json2
-rw-r--r--config.m42
-rw-r--r--doc/fail_fast.md15
-rw-r--r--examples/cpp/helloworld/Makefile9
-rw-r--r--examples/cpp/helloworld/greeter_async_client.cc8
-rw-r--r--examples/cpp/helloworld/greeter_async_client2.cc153
-rw-r--r--examples/cpp/route_guide/Makefile2
-rw-r--r--examples/objective-c/route_guide/ViewControllers.m89
-rw-r--r--examples/python/README.md11
-rw-r--r--examples/python/helloworld/helloworld_pb2.py73
-rw-r--r--examples/python/route_guide/route_guide_pb2.py189
-rw-r--r--gRPC.podspec10
-rw-r--r--grpc.def1
-rwxr-xr-xgrpc.gemspec7
-rw-r--r--include/grpc++/impl/codegen/call.h7
-rw-r--r--include/grpc++/impl/codegen/core_codegen_interface.h32
-rw-r--r--include/grpc++/impl/codegen/proto_utils.h161
-rw-r--r--include/grpc/byte_buffer_reader.h21
-rw-r--r--include/grpc/grpc.h3
-rw-r--r--include/grpc/impl/codegen/byte_buffer_reader.h57
-rw-r--r--include/grpc/impl/codegen/grpc_types.h6
-rw-r--r--include/grpc/impl/codegen/port_platform.h71
-rw-r--r--include/grpc/impl/codegen/slice_buffer.h5
-rw-r--r--package.json27
-rw-r--r--package.xml30
-rw-r--r--requirements.txt7
-rw-r--r--setup.py40
-rw-r--r--src/compiler/config.h14
-rw-r--r--src/compiler/cpp_generator.cc35
-rw-r--r--src/compiler/cpp_generator.h17
-rw-r--r--src/compiler/cpp_plugin.cc33
-rw-r--r--src/compiler/csharp_generator.cc137
-rw-r--r--src/compiler/csharp_generator.h4
-rw-r--r--src/compiler/csharp_plugin.cc24
-rw-r--r--src/compiler/generator_helpers.h119
-rw-r--r--src/compiler/node_generator.cc277
-rw-r--r--src/compiler/node_generator.h49
-rw-r--r--src/compiler/node_generator_helpers.h50
-rw-r--r--src/compiler/node_plugin.cc77
-rw-r--r--src/compiler/objective_c_generator.cc6
-rw-r--r--src/compiler/objective_c_plugin.cc6
-rw-r--r--src/compiler/python_generator.cc53
-rw-r--r--src/compiler/ruby_generator.cc4
-rw-r--r--src/core/ext/census/grpc_filter.c4
-rw-r--r--src/core/ext/client_config/client_channel.c43
-rw-r--r--src/core/ext/client_config/resolver_registry.c8
-rw-r--r--src/core/ext/client_config/subchannel.c15
-rw-r--r--src/core/ext/client_config/subchannel_call_holder.c6
-rw-r--r--src/core/ext/lb_policy/round_robin/round_robin.c6
-rw-r--r--src/core/ext/resolver/dns/native/dns_resolver.c14
-rw-r--r--src/core/ext/resolver/zookeeper/zookeeper_resolver.c6
-rw-r--r--src/core/ext/transport/chttp2/client/insecure/channel_create.c4
-rw-r--r--src/core/ext/transport/chttp2/transport/chttp2_transport.c887
-rw-r--r--src/core/ext/transport/chttp2/transport/frame_rst_stream.c5
-rw-r--r--src/core/ext/transport/chttp2/transport/hpack_encoder.c6
-rw-r--r--src/core/ext/transport/chttp2/transport/hpack_parser.c2
-rw-r--r--src/core/ext/transport/chttp2/transport/hpack_table.c4
-rw-r--r--src/core/ext/transport/chttp2/transport/incoming_metadata.c1
-rw-r--r--src/core/ext/transport/chttp2/transport/incoming_metadata.h1
-rw-r--r--src/core/ext/transport/chttp2/transport/internal.h91
-rw-r--r--src/core/ext/transport/chttp2/transport/parsing.c79
-rw-r--r--src/core/ext/transport/chttp2/transport/stream_lists.c8
-rw-r--r--src/core/lib/channel/channel_args.h4
-rw-r--r--src/core/lib/channel/channel_stack.c6
-rw-r--r--src/core/lib/channel/channel_stack.h11
-rw-r--r--src/core/lib/channel/compress_filter.c36
-rw-r--r--src/core/lib/channel/compress_filter.h2
-rw-r--r--src/core/lib/channel/connected_channel.c7
-rw-r--r--src/core/lib/channel/http_client_filter.c4
-rw-r--r--src/core/lib/channel/http_server_filter.c17
-rw-r--r--src/core/lib/http/httpcli.c2
-rw-r--r--src/core/lib/iomgr/closure.c6
-rw-r--r--src/core/lib/iomgr/closure.h3
-rw-r--r--src/core/lib/iomgr/ev_posix.c1
-rw-r--r--src/core/lib/iomgr/exec_ctx.h2
-rw-r--r--src/core/lib/iomgr/iomgr.c6
-rw-r--r--src/core/lib/iomgr/resolve_address.h5
-rw-r--r--src/core/lib/iomgr/resolve_address_posix.c9
-rw-r--r--src/core/lib/iomgr/resolve_address_windows.c9
-rw-r--r--src/core/lib/iomgr/tcp_client_posix.c25
-rw-r--r--src/core/lib/iomgr/tcp_client_windows.c29
-rw-r--r--src/core/lib/iomgr/tcp_posix.c4
-rw-r--r--src/core/lib/iomgr/tcp_server_windows.c28
-rw-r--r--src/core/lib/iomgr/tcp_windows.c16
-rw-r--r--src/core/lib/iomgr/timer.c15
-rw-r--r--src/core/lib/security/client_auth_filter.c4
-rw-r--r--src/core/lib/security/server_auth_filter.c4
-rw-r--r--src/core/lib/support/env_win32.c44
-rw-r--r--src/core/lib/support/log_linux.c4
-rw-r--r--src/core/lib/support/log_win32.c18
-rw-r--r--src/core/lib/support/string_util_win32.c94
-rw-r--r--src/core/lib/support/string_win32.c32
-rw-r--r--src/core/lib/support/time_posix.c10
-rw-r--r--src/core/lib/support/time_win32.c4
-rw-r--r--src/core/lib/support/tmpfile_msys.c73
-rw-r--r--src/core/lib/support/tmpfile_posix.c4
-rw-r--r--src/core/lib/support/tmpfile_win32.c4
-rw-r--r--src/core/lib/surface/call.c137
-rw-r--r--src/core/lib/surface/completion_queue.c4
-rw-r--r--src/core/lib/surface/init.c3
-rw-r--r--src/core/lib/surface/lame_client.c9
-rw-r--r--src/core/lib/surface/server.c4
-rw-r--r--src/core/lib/surface/validate_metadata.c2
-rw-r--r--src/core/lib/surface/version.c2
-rw-r--r--src/core/lib/transport/metadata.c29
-rw-r--r--src/core/lib/transport/metadata.h5
-rw-r--r--src/core/lib/transport/metadata_batch.c9
-rw-r--r--src/core/lib/transport/metadata_batch.h3
-rw-r--r--src/core/lib/transport/transport.c5
-rw-r--r--src/core/lib/transport/transport.h12
-rw-r--r--src/core/lib/transport/transport_impl.h2
-rw-r--r--src/cpp/common/core_codegen.cc204
-rw-r--r--src/cpp/common/core_codegen.h26
-rw-r--r--src/csharp/Grpc.Core.Tests/ClientServerTest.cs63
-rw-r--r--src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj2
-rw-r--r--src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs191
-rw-r--r--src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs548
-rw-r--r--src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs184
-rw-r--r--src/csharp/Grpc.Core/GrpcEnvironment.cs34
-rw-r--r--src/csharp/Grpc.Core/Internal/AsyncCall.cs18
-rw-r--r--src/csharp/Grpc.Core/Internal/AsyncCallBase.cs61
-rw-r--r--src/csharp/Grpc.Core/Internal/AsyncCallServer.cs58
-rw-r--r--src/csharp/Grpc.Core/Internal/CallSafeHandle.cs7
-rw-r--r--src/csharp/Grpc.Core/Internal/ClientResponseStream.cs4
-rw-r--r--src/csharp/Grpc.Core/Internal/INativeCall.cs2
-rw-r--r--src/csharp/Grpc.Core/Internal/NativeMethods.cs18
-rw-r--r--src/csharp/Grpc.Core/Internal/ServerCallHandler.cs79
-rw-r--r--src/csharp/Grpc.Core/Internal/ServerRequestStream.cs4
-rw-r--r--src/csharp/Grpc.Core/Internal/ServerResponseStream.cs7
-rw-r--r--src/csharp/Grpc.Core/Server.cs24
-rw-r--r--src/csharp/Grpc.Core/Version.cs3
-rw-r--r--src/csharp/Grpc.Core/VersionInfo.cs13
-rw-r--r--src/csharp/Grpc.Examples/MathGrpc.cs208
-rw-r--r--src/csharp/Grpc.HealthCheck/HealthGrpc.cs66
-rw-r--r--src/csharp/Grpc.IntegrationTesting/ClientRunners.cs23
-rw-r--r--src/csharp/Grpc.IntegrationTesting/InteropClient.cs3
-rw-r--r--src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs130
-rw-r--r--src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs340
-rw-r--r--src/csharp/Grpc.IntegrationTesting/TestGrpc.cs380
-rw-r--r--src/csharp/build_packages.bat2
-rw-r--r--src/csharp/buildall.bat6
-rw-r--r--src/csharp/ext/grpc_csharp_ext.c30
-rw-r--r--src/csharp/tests.json1
-rw-r--r--src/node/.gitignore2
-rw-r--r--src/node/.jshintignore1
-rw-r--r--src/node/.jshintrc28
-rw-r--r--src/node/ext/node_grpc.cc35
-rw-r--r--src/node/ext/server_credentials.cc4
-rw-r--r--src/node/index.js7
-rw-r--r--src/node/src/client.js3
-rw-r--r--src/node/src/server.js34
-rw-r--r--src/node/test/math/math_grpc_pb.js99
-rw-r--r--src/node/test/math/math_pb.js866
-rw-r--r--src/node/test/math/math_server.js42
-rw-r--r--src/node/test/math/node_modules/grpc.js37
-rw-r--r--src/node/test/math_client_test.js45
-rw-r--r--src/node/test/surface_test.js56
-rwxr-xr-xsrc/node/tools/bin/protoc.js4
-rwxr-xr-xsrc/node/tools/bin/protoc_plugin.js56
-rw-r--r--src/node/tools/package.json6
-rw-r--r--src/objective-c/BoringSSL.podspec4
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h56
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m66
-rw-r--r--src/objective-c/GRPCClient/GRPCCall+Tests.m12
-rw-r--r--src/objective-c/GRPCClient/GRPCCall.m54
-rw-r--r--src/objective-c/GRPCClient/private/GRPCChannel.h12
-rw-r--r--src/objective-c/GRPCClient/private/GRPCChannel.m52
-rw-r--r--src/objective-c/GRPCClient/private/GRPCHost.h7
-rw-r--r--src/objective-c/GRPCClient/private/GRPCHost.m92
-rw-r--r--src/objective-c/tests/InteropTests.m6
-rwxr-xr-xsrc/php/tests/interop/interop_client.php259
-rw-r--r--src/php/tests/interop/metrics_client.php49
-rw-r--r--src/php/tests/interop/stress_client.php116
-rw-r--r--src/proto/grpc/testing/compiler_test.proto75
-rw-r--r--src/proto/grpc/testing/echo.proto4
-rw-r--r--src/python/.gitignore1
-rw-r--r--src/python/grpcio/README.rst14
-rw-r--r--src/python/grpcio/commands.py50
-rw-r--r--src/python/grpcio/grpc/__init__.py3
-rw-r--r--src/python/grpcio/grpc/_adapter/fore.py363
-rw-r--r--src/python/grpcio/grpc/_adapter/rear.py395
-rw-r--r--src/python/grpcio/grpc/_cython/imports.generated.c2
-rw-r--r--src/python/grpcio/grpc/_cython/imports.generated.h3
-rw-r--r--src/python/grpcio/grpc/beta/implementations.py9
-rw-r--r--src/python/grpcio/grpc/early_adopter/__init__.py35
-rw-r--r--src/python/grpcio/grpc/early_adopter/implementations.py262
-rw-r--r--src/python/grpcio/grpc/framework/alpha/_face_utilities.py183
-rw-r--r--src/python/grpcio/grpc/framework/alpha/_reexport.py205
-rw-r--r--src/python/grpcio/grpc/framework/alpha/interfaces.py384
-rw-r--r--src/python/grpcio/grpc/framework/alpha/utilities.py269
-rw-r--r--src/python/grpcio/grpc/framework/base/_context.py99
-rw-r--r--src/python/grpcio/grpc/framework/base/_emission.py125
-rw-r--r--src/python/grpcio/grpc/framework/base/_ends.py399
-rw-r--r--src/python/grpcio/grpc/framework/base/_expiration.py158
-rw-r--r--src/python/grpcio/grpc/framework/base/_ingestion.py443
-rw-r--r--src/python/grpcio/grpc/framework/base/_interfaces.py266
-rw-r--r--src/python/grpcio/grpc/framework/base/_reception.py400
-rw-r--r--src/python/grpcio/grpc/framework/base/_termination.py204
-rw-r--r--src/python/grpcio/grpc/framework/base/_transmission.py429
-rw-r--r--src/python/grpcio/grpc/framework/base/implementations.py77
-rw-r--r--src/python/grpcio/grpc/framework/base/in_memory.py108
-rw-r--r--src/python/grpcio/grpc/framework/base/interfaces.py353
-rw-r--r--src/python/grpcio/grpc/framework/base/util.py94
-rw-r--r--src/python/grpcio/grpc/framework/face/__init__.py35
-rw-r--r--src/python/grpcio/grpc/framework/face/_calls.py422
-rw-r--r--src/python/grpcio/grpc/framework/face/_control.py201
-rw-r--r--src/python/grpcio/grpc/framework/face/_service.py187
-rw-r--r--src/python/grpcio/grpc/framework/face/demonstration.py118
-rw-r--r--src/python/grpcio/grpc/framework/face/implementations.py320
-rw-r--r--src/python/grpcio/grpc/framework/face/interfaces.py634
-rw-r--r--src/python/grpcio/grpc/framework/face/utilities.py177
-rw-r--r--src/python/grpcio/grpc_core_dependencies.py2
-rw-r--r--src/python/grpcio/grpc_version.py2
-rw-r--r--src/python/grpcio/precompiled.py114
-rw-r--r--src/python/grpcio/tests/interop/_insecure_interop_test.py2
-rw-r--r--src/python/grpcio/tests/interop/_secure_interop_test.py2
-rw-r--r--src/python/grpcio/tests/interop/client.py2
-rw-r--r--src/python/grpcio/tests/interop/messages.proto167
-rw-r--r--src/python/grpcio/tests/interop/methods.py6
-rw-r--r--src/python/grpcio/tests/interop/server.py2
-rw-r--r--src/python/grpcio/tests/interop/test.proto86
-rw-r--r--src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py41
-rw-r--r--src/python/grpcio/tests/qps/__init__.py (renamed from src/python/grpcio/tests/unit/framework/face/testing/__init__.py)4
-rw-r--r--src/python/grpcio/tests/qps/benchmark_client.py186
-rw-r--r--src/python/grpcio/tests/qps/benchmark_server.py58
-rw-r--r--src/python/grpcio/tests/qps/client_runner.py104
-rw-r--r--src/python/grpcio/tests/qps/histogram.py (renamed from src/python/grpcio/grpc/framework/base/_cancellation.py)79
-rw-r--r--src/python/grpcio/tests/qps/qps_worker.py60
-rw-r--r--src/python/grpcio/tests/qps/worker_server.py184
-rw-r--r--src/python/grpcio/tests/stress/__init__.py28
-rw-r--r--src/python/grpcio/tests/stress/client.py135
-rw-r--r--[-rwxr-xr-x]src/python/grpcio/tests/stress/metrics_server.py (renamed from src/ruby/bin/interop/interop_client.rb)51
-rw-r--r--src/python/grpcio/tests/stress/test_runner.py (renamed from src/python/grpcio/grpc/framework/face/exceptions.py)95
-rw-r--r--src/python/grpcio/tests/unit/_cython/_channel_test.py5
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/base_util.py102
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py224
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/callback.py94
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/control.py87
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/coverage.py121
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/digest.py452
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py378
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py384
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/interfaces.py118
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/service.py321
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/stock_service.py374
-rw-r--r--src/python/grpcio/tests/unit/framework/face/testing/test_case.py81
-rw-r--r--src/ruby/.rubocop.yml4
-rw-r--r--src/ruby/ext/grpc/extconf.rb32
-rw-r--r--src/ruby/ext/grpc/rb_byte_buffer.c3
-rw-r--r--src/ruby/ext/grpc/rb_call.c33
-rw-r--r--src/ruby/ext/grpc/rb_call_credentials.c6
-rw-r--r--src/ruby/ext/grpc/rb_channel.c3
-rw-r--r--src/ruby/ext/grpc/rb_channel_args.c3
-rw-r--r--src/ruby/ext/grpc/rb_channel_credentials.c32
-rw-r--r--src/ruby/ext/grpc/rb_completion_queue.c2
-rw-r--r--src/ruby/ext/grpc/rb_event_thread.c2
-rw-r--r--src/ruby/ext/grpc/rb_grpc.c4
-rw-r--r--src/ruby/ext/grpc/rb_grpc_imports.generated.c2
-rw-r--r--src/ruby/ext/grpc/rb_grpc_imports.generated.h3
-rw-r--r--src/ruby/ext/grpc/rb_server.c3
-rw-r--r--src/ruby/ext/grpc/rb_server_credentials.c3
-rw-r--r--src/ruby/ext/grpc/rb_signal.c70
-rw-r--r--src/ruby/ext/grpc/rb_signal.h39
-rw-r--r--src/ruby/lib/grpc.rb32
-rw-r--r--src/ruby/lib/grpc/core/time_consts.rb2
-rw-r--r--src/ruby/lib/grpc/errors.rb2
-rw-r--r--src/ruby/lib/grpc/generic/active_call.rb13
-rw-r--r--src/ruby/lib/grpc/generic/bidi_call.rb2
-rw-r--r--src/ruby/lib/grpc/generic/client_stub.rb4
-rw-r--r--src/ruby/lib/grpc/generic/rpc_desc.rb2
-rw-r--r--src/ruby/lib/grpc/generic/rpc_server.rb78
-rw-r--r--src/ruby/lib/grpc/generic/service.rb20
-rw-r--r--src/ruby/lib/grpc/grpc.rb4
-rw-r--r--[-rwxr-xr-x]src/ruby/lib/grpc/signals.rb (renamed from src/ruby/bin/interop/interop_server.rb)59
-rw-r--r--src/ruby/lib/grpc/version.rb2
-rw-r--r--src/ruby/pb/grpc/testing/metrics.rb28
-rw-r--r--src/ruby/pb/grpc/testing/metrics_services.rb27
-rwxr-xr-xsrc/ruby/pb/test/client.rb33
-rwxr-xr-xsrc/ruby/pb/test/server.rb2
-rw-r--r--src/ruby/spec/generic/rpc_server_spec.rb23
-rw-r--r--src/ruby/spec/generic/service_spec.rb69
-rw-r--r--src/ruby/stress/metrics_server.rb83
-rwxr-xr-xsrc/ruby/stress/stress_client.rb155
-rw-r--r--src/ruby/tools/README.md12
-rwxr-xr-xsrc/ruby/tools/bin/grpc_tools_ruby_protoc.rb41
-rwxr-xr-xsrc/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb41
-rw-r--r--src/ruby/tools/grpc-tools.gemspec22
-rw-r--r--src/ruby/tools/os_check.rb (renamed from src/python/grpcio/grpc/framework/alpha/__init__.py)22
-rw-r--r--[-rwxr-xr-x]src/ruby/tools/version.rb (renamed from src/ruby/bin/grpc_ruby_interop_server)9
-rw-r--r--templates/gRPC.podspec.template7
-rw-r--r--templates/grpc.gemspec.template4
-rw-r--r--templates/package.json.template25
-rw-r--r--templates/package.xml.template23
-rw-r--r--templates/src/csharp/Grpc.Core/VersionInfo.cs.template11
-rw-r--r--templates/src/node/tools/package.json.template4
-rw-r--r--templates/src/ruby/tools/version.rb.template36
-rw-r--r--templates/tools/distrib/python/grpcio_tools/grpc_version.py.template34
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template39
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template39
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template37
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template37
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template44
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template39
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template64
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template39
-rw-r--r--templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template39
-rw-r--r--templates/tools/dockerfile/node_deps.include4
-rw-r--r--templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template41
-rw-r--r--templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template45
-rw-r--r--templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template41
-rw-r--r--templates/tools/dockerfile/test/sanity/Dockerfile.template12
-rw-r--r--templates/tools/fuzzer/runners.template2
-rw-r--r--test/core/bad_client/bad_client.c40
-rw-r--r--test/core/bad_client/bad_client.h18
-rwxr-xr-xtest/core/bad_client/gen_build_yaml.py3
-rw-r--r--test/core/bad_client/tests/badreq.c10
-rw-r--r--test/core/bad_client/tests/connection_prefix.c49
-rw-r--r--test/core/bad_client/tests/head_of_line_blocking.c2
-rw-r--r--test/core/bad_client/tests/headers.c120
-rw-r--r--test/core/bad_client/tests/initial_settings_frame.c54
-rw-r--r--test/core/bad_client/tests/large_metadata.c489
-rw-r--r--test/core/bad_client/tests/large_metadata.headers106
-rw-r--r--test/core/bad_client/tests/server_registered_method.c22
-rw-r--r--test/core/bad_client/tests/server_registered_method.headers2
-rw-r--r--test/core/bad_client/tests/simple_request.c44
-rw-r--r--test/core/bad_client/tests/simple_request_unusual2.headers13
-rw-r--r--test/core/bad_client/tests/unknown_frame.c2
-rw-r--r--test/core/bad_client/tests/window_overflow.c2
-rw-r--r--test/core/channel/channel_stack_test.c6
-rw-r--r--test/core/end2end/fixtures/h2_census.c2
-rw-r--r--test/core/end2end/fixtures/h2_proxy.c12
-rw-r--r--test/core/end2end/fixtures/h2_ssl_proxy.c19
-rw-r--r--test/core/end2end/fixtures/proxy.c9
-rw-r--r--test/core/end2end/fixtures/proxy.h11
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer.c896
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer.dictionary27
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/00.binbin0 -> 1 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524bin0 -> 166 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47bin0 -> 572 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727abin0 -> 416 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05ebin0 -> 168 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711bin0 -> 318 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451bin0 -> 24 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220bin0 -> 327 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737cbin0 -> 570 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105bin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263bbin0 -> 316 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582ebin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfebin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75bin0 -> 361 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2bebin0 -> 319 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638bin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64cbin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26fbin0 -> 25 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1bin0 -> 316 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0bin0 -> 227 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6bin0 -> 354 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cbbin0 -> 227 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9fbin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2bin0 -> 299 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524bin0 -> 593 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36bin0 -> 236 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24bin0 -> 60 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2bin0 -> 297 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3bin0 -> 211 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69ebin0 -> 151 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6bin0 -> 145 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8fbin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aabin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4cbin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772bin0 -> 388 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66bin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38bin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bcbin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2eebin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2bin0 -> 214 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5bin0 -> 126 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6dbin0 -> 24 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23bin0 -> 368 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32efbin0 -> 299 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563bin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4bin0 -> 168 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297bin0 -> 129 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0bin0 -> 273 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044bin0 -> 211 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363bin0 -> 325 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2ebin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268bin0 -> 232 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868bin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873bin0 -> 322 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50fbin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08adbin0 -> 288 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cddbin0 -> 174 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15dbin0 -> 181 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631bin0 -> 166 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79bin0 -> 418 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7bbin0 -> 363 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dcbin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124bin0 -> 267 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193dbin0 -> 70 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9fbin0 -> 129 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426bin0 -> 539 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398bin0 -> 222 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4ebin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8bin0 -> 354 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106bbin0 -> 567 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5bin0 -> 323 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34bin0 -> 400 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fbbin0 -> 331 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac80939981
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1bin0 -> 225 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972bin0 -> 235 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146bin0 -> 217 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173bin0 -> 22 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6ebin0 -> 217 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766bin0 -> 299 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765ebin0 -> 82 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56abin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bddbin0 -> 229 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06bin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9fbin0 -> 223 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62bin0 -> 230 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060bin0 -> 167 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9bin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85bin0 -> 366 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59bin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96cbin0 -> 307 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965cbin0 -> 172 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454bbin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060bin0 -> 349 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57bin0 -> 228 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130dbbin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53fbin0 -> 570 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643bbin0 -> 338 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0abin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1bin0 -> 172 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793bin0 -> 317 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0abin0 -> 493 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07dbin0 -> 244 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623fbin0 -> 328 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1fbin0 -> 146 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8bin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289bin0 -> 47 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2cbin0 -> 200 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238ebin0 -> 266 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41bin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2ebin0 -> 625 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3dbin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42bin0 -> 293 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5ebin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9bin0 -> 318 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346bin0 -> 98 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0bin0 -> 266 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305bin0 -> 121 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cdabin0 -> 60 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4bin0 -> 222 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171ebin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0dbin0 -> 62 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7abbin0 -> 216 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959bin0 -> 133 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165bin0 -> 213 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225cbin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9bin0 -> 225 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16bin0 -> 337 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732bin0 -> 317 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97bin0 -> 245 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04bin0 -> 368 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8bin0 -> 353 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00bin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480dbin0 -> 46 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1bin0 -> 349 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64bin0 -> 37 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629bin0 -> 667 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74bin0 -> 122 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856bin0 -> 299 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8cbin0 -> 407 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431bin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295ddbin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab051
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450bin0 -> 325 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317dbin0 -> 320 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18bin0 -> 22 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6bin0 -> 375 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907ebbin0 -> 347 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00bin0 -> 19 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512cbin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804ebin0 -> 455 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7bin0 -> 381 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6bin0 -> 428 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891bin0 -> 297 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494efbin0 -> 264 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0bin0 -> 245 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05bin0 -> 266 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0bin0 -> 462 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0bin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92bin0 -> 66 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55cbin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424bin0 -> 210 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8bbin0 -> 215 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385fbin0 -> 168 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183fbin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8bin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cfbin0 -> 167 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646dbin0 -> 392 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739bin0 -> 168 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758bbin0 -> 152 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7fbin0 -> 819 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549dbin0 -> 299 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8bin0 -> 1008 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0bin0 -> 223 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0bin0 -> 597 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799bin0 -> 264 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d3871
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91cbin0 -> 493 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690bin0 -> 214 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05bin0 -> 25 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58bin0 -> 595 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842abin0 -> 335 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493abin0 -> 390 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18bin0 -> 62 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7ebin0 -> 24 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078faebin0 -> 34 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3bin0 -> 595 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2bin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881bbin0 -> 330 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156bin0 -> 595 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653bin0 -> 297 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82dbin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2bin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4bbin0 -> 388 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397fbin0 -> 19 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9bin0 -> 367 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2bin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfbbin0 -> 266 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536bin0 -> 92 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18ebin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6babin0 -> 328 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2bin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59fbin0 -> 319 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40cafbin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40cebin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3abin0 -> 325 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48dbin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fabin0 -> 215 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fbbin0 -> 379 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7bin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2dbin0 -> 539 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218bin0 -> 416 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3bin0 -> 21 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aaebin0 -> 327 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969bin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829bin0 -> 130 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3abin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302bin0 -> 87 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6bin0 -> 493 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9abin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59bbin0 -> 353 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbabbin0 -> 24 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6abin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88ebin0 -> 756 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6ebin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027bin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006abin0 -> 341 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27bin0 -> 45 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504bin0 -> 45 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9bin0 -> 167 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007fbin0 -> 18 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1bin0 -> 381 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79cbin0 -> 462 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6cbin0 -> 244 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5fbin0 -> 337 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544bin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713bin0 -> 232 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25abin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1ebin0 -> 266 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3bin0 -> 167 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6abbin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985bin0 -> 79 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232bin0 -> 347 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8bbin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3ebin0 -> 216 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776bin0 -> 213 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394bin0 -> 369 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75bin0 -> 595 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1bin0 -> 838 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4bin0 -> 98 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74bin0 -> 308 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6cbin0 -> 21 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0bin0 -> 214 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276bin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9bin0 -> 488 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987bin0 -> 166 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ffbin0 -> 267 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0bin0 -> 570 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7bin0 -> 85 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44bin0 -> 57 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356edabin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605bin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8bin0 -> 233 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99bin0 -> 121 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36bin0 -> 224 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bcbin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1bin0 -> 320 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937adbin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3bin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956bin0 -> 513 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568bin0 -> 417 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473bin0 -> 233 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7bin0 -> 255 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7bin0 -> 549 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54bin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5bbin0 -> 216 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792cbin0 -> 399 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7bin0 -> 936 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19bin0 -> 211 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bbbin0 -> 268 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89bin0 -> 383 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008dbin0 -> 297 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5ebin0 -> 19 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8cabin0 -> 352 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cbbin0 -> 461 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30bin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898dbin0 -> 360 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4abbin0 -> 21 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6fbin0 -> 571 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20bin0 -> 111 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810ebin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247bin0 -> 456 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92bin0 -> 341 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2bin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981abbin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148bin0 -> 41 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75bin0 -> 328 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0bin0 -> 357 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8ebin0 -> 21 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997bin0 -> 299 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445bin0 -> 489 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684bebin0 -> 224 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698bin0 -> 462 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4bin0 -> 24 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006bin0 -> 327 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7accbin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471eebin0 -> 346 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06bin0 -> 126 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53bin0 -> 316 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4bin0 -> 266 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902abin0 -> 352 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cbabin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896cbin0 -> 237 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39bin0 -> 163 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045acbin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08bin0 -> 367 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4aebin0 -> 61 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093bin0 -> 703 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01dbin0 -> 224 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907eebin0 -> 212 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453abin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3bin0 -> 553 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657bin0 -> 322 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9bin0 -> 197 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7bin0 -> 382 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394bbin0 -> 365 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8bin0 -> 227 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4babin0 -> 353 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315bin0 -> 46 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6abin0 -> 341 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408cbin0 -> 512 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3bin0 -> 324 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ecbin0 -> 232 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5bin0 -> 348 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50bin0 -> 353 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aeebin0 -> 49 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5bin0 -> 224 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7ebin0 -> 338 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1bin0 -> 824 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157bin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304bin0 -> 605 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361bin0 -> 232 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346bbin0 -> 329 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49eabin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3bin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820bin0 -> 57 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34dbin0 -> 448 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099cbin0 -> 409 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17fbin0 -> 115 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0bin0 -> 317 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6ebin0 -> 314 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73bin0 -> 463 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bad.binbin0 -> 19 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505bin0 -> 65 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176bin0 -> 328 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2abin0 -> 455 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624cbin0 -> 211 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651bin0 -> 231 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2bin0 -> 68 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974bin0 -> 397 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4cbin0 -> 195 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042fbin0 -> 226 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4bin0 -> 176 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57bin0 -> 168 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0decbin0 -> 323 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2bin0 -> 325 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9bin0 -> 594 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2bin0 -> 410 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2bin0 -> 454 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53bin0 -> 181 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362bin0 -> 587 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6bin0 -> 34 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4bin0 -> 163 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2bin0 -> 47 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1bin0 -> 171 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40bin0 -> 410 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73bin0 -> 274 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0bin0 -> 322 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceedbin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065bin0 -> 26 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103bin0 -> 349 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191bin0 -> 216 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04bin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989bin0 -> 228 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92abin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeacbin0 -> 294 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439ebin0 -> 399 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11bbin0 -> 323 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098bin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599bin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212bin0 -> 276 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29bin0 -> 324 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204abin0 -> 80 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1abin0 -> 319 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bcebin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168abin0 -> 664 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843abin0 -> 272 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9bin0 -> 571 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298bin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221bin0 -> 62 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048bin0 -> 23 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066cbin0 -> 318 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326cbin0 -> 47 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44fbin0 -> 113 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033abin0 -> 216 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693bbin0 -> 135 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752bbin0 -> 428 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3bin0 -> 180 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27bin0 -> 437 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00bin0 -> 327 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbfbin0 -> 144 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08bin0 -> 575 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219bin0 -> 45 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32bin0 -> 647 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33bbin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631ebbin0 -> 429 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1bin0 -> 170 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37bin0 -> 327 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668bin0 -> 322 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5bin0 -> 501 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335edabin0 -> 408 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152bin0 -> 124 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6eccbin0 -> 26 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259abin0 -> 463 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7bin0 -> 681 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0bin0 -> 407 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dcbin0 -> 381 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3bin0 -> 69 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9bbin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03bin0 -> 346 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738bin0 -> 383 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243bin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562bbin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096bbin0 -> 82 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731bbin0 -> 379 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554cbin0 -> 380 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499bin0 -> 524 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168bin0 -> 406 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9bin0 -> 577 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6bin0 -> 348 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4bin0 -> 65 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21ebin0 -> 318 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0ebin0 -> 491 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1bin0 -> 249 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03bin0 -> 151 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2bin0 -> 318 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13bin0 -> 342 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6bin0 -> 49 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bdbin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978bin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449bin0 -> 225 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332efbin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66dbin0 -> 572 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32bin0 -> 362 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4bin0 -> 319 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444bin0 -> 188 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1bin0 -> 405 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817ccbin0 -> 233 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fefbin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3bin0 -> 341 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02bbin0 -> 362 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35bin0 -> 60 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063bin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5bin0 -> 354 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921abin0 -> 49 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51bin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9bin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641bin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518dbin0 -> 327 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818bin0 -> 37 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bbbin0 -> 47 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cbbin0 -> 226 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120bin0 -> 19 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3bin0 -> 314 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346bin0 -> 262 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1eadbin0 -> 165 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1bbin0 -> 340 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420ebin0 -> 174 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146adbin0 -> 275 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8bin0 -> 220 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43bin0 -> 263 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95bin0 -> 129 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594bin0 -> 21 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17ebin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36bin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3bin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0bin0 -> 225 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287fbin0 -> 232 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2dbin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94bin0 -> 234 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842bin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380bin0 -> 234 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0bin0 -> 25 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762fbin0 -> 385 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686bin0 -> 554 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60fbin0 -> 211 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8bin0 -> 347 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0bin0 -> 43 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778cbin0 -> 321 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085bin0 -> 73 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424bin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909bin0 -> 341 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749bin0 -> 324 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5bin0 -> 345 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f41
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3bin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46fbin0 -> 460 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7bin0 -> 321 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864bin0 -> 325 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206cbin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8bin0 -> 64 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220bin0 -> 188 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006bin0 -> 325 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3bin0 -> 722 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527bin0 -> 39 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50adbin0 -> 296 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8bin0 -> 263 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4abin0 -> 47 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396abin0 -> 321 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42bin0 -> 44 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fcbin0 -> 267 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3bin0 -> 317 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57bin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8bin0 -> 46 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28bin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8bin0 -> 217 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528aebin0 -> 319 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888bbin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9ebin0 -> 60 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3fbin0 -> 428 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52abin0 -> 37 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6dbin0 -> 354 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63abin0 -> 124 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208bin0 -> 48 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23cbin0 -> 344 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fcbin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730bin0 -> 375 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037bin0 -> 491 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99bebin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213abin0 -> 375 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165bin0 -> 353 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716bin0 -> 346 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacdbin0 -> 330 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4bin0 -> 616 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7bin0 -> 341 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4abin0 -> 176 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4bin0 -> 705 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715bbin0 -> 343 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36bin0 -> 217 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6bin0 -> 221 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318bin0 -> 163 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34febbin0 -> 297 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0bin0 -> 339 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2bin0 -> 354 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2bin0 -> 232 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4bin0 -> 406 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200bin0 -> 136 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579bin0 -> 20 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4bbin0 -> 195 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652abin0 -> 295 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78bin0 -> 409 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437ccbin0 -> 111 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79bin0 -> 246 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206bin0 -> 397 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1bin0 -> 170 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243bin0 -> 326 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3bin0 -> 624 bytes
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499bin0 -> 524 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1bin0 -> 95 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6bin0 -> 67 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5bin0 -> 435 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36bin0 -> 422 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872dbin0 -> 384 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290abin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431bin0 -> 229 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1cbin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65bin0 -> 142 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829bin0 -> 194 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042bbin0 -> 67 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7bin0 -> 69 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0bin0 -> 737 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3cbin0 -> 1476 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600bin0 -> 22 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979bin0 -> 69 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777bin0 -> 77 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7bin0 -> 415 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfcbin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27bbin0 -> 403 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7bin0 -> 75 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6bin0 -> 415 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9fbin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729fbin0 -> 216 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825bin0 -> 67 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708bin0 -> 15 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09fbin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49bin0 -> 398 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1bbin0 -> 804 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126dbin0 -> 38 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7abin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028bin0 -> 131 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556bin0 -> 733 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956bbin0 -> 66 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5bin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1adbin0 -> 353 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440cbin0 -> 50 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6cbin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4ebin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30bin0 -> 52 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334bin0 -> 67 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97bin0 -> 433 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5bin0 -> 748 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cbbin0 -> 52 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127abin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605fbin0 -> 51 bytes
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9bin0 -> 25 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450bin0 -> 225 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306bin0 -> 286 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576bin0 -> 651 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215bin0 -> 286 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470cbin0 -> 650 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41dbin0 -> 963 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732ebin0 -> 650 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3bin0 -> 286 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70bin0 -> 287 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93abin0 -> 650 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416bin0 -> 357 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47bbin0 -> 287 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621eebin0 -> 628 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaeebin0 -> 287 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871bin0 -> 1106 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723bin0 -> 322 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54bin0 -> 289 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9bin0 -> 651 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505ebin0 -> 286 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8abin0 -> 287 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66abin0 -> 651 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6bin0 -> 213 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5abbin0 -> 651 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809bin0 -> 104 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397bin0 -> 286 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83bin0 -> 356 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002abin0 -> 651 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4bin0 -> 75 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504bin0 -> 651 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5abin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0bin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3cbin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534bbin0 -> 2046 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83bin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3bin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4abin0 -> 2046 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77bin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652edbin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbfbin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dccbin0 -> 2046 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471bin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6bin0 -> 2045 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647bbin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fbbin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20bbin0 -> 2048 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53bin0 -> 2047 bytes
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833bin0 -> 2046 bytes
-rwxr-xr-xtest/core/end2end/gen_build_yaml.py8
-rw-r--r--test/core/end2end/tests/filter_causes_close.c4
-rw-r--r--test/core/end2end/tests/large_metadata.c15
-rw-r--r--test/core/end2end/tests/max_message_length.c5
-rw-r--r--test/core/iomgr/resolve_address_test.c28
-rw-r--r--test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51bin0 -> 49 bytes
-rw-r--r--test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3bin0 -> 66 bytes
-rw-r--r--test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aabin0 -> 78 bytes
-rw-r--r--test/core/surface/channel_create_test.c3
-rw-r--r--test/core/surface/concurrent_connectivity_test.c13
-rw-r--r--test/core/surface/public_headers_must_be_c89.c1
-rw-r--r--test/core/util/passthru_endpoint.c162
-rw-r--r--test/core/util/passthru_endpoint.h42
-rw-r--r--test/core/util/port_windows.c9
-rw-r--r--test/core/util/test_config.c4
-rw-r--r--test/cpp/codegen/compiler_test_golden294
-rw-r--r--test/cpp/codegen/golden_file_test.cc64
-rw-r--r--test/cpp/end2end/async_end2end_test.cc338
-rw-r--r--test/cpp/interop/stress_interop_client.cc40
-rw-r--r--test/cpp/interop/stress_interop_client.h8
-rw-r--r--test/cpp/interop/stress_test.cc13
-rw-r--r--test/cpp/qps/client.h12
-rw-r--r--test/cpp/qps/driver.cc3
-rwxr-xr-xtest/cpp/qps/gen_build_yaml.py10
-rw-r--r--test/cpp/util/metrics_server.cc45
-rw-r--r--test/cpp/util/metrics_server.h40
-rw-r--r--test/distrib/csharp/DistribTest/DistribTest.csproj6
-rw-r--r--test/distrib/csharp/DistribTest/packages.config3
-rwxr-xr-xtest/distrib/python/run_distrib_test.sh26
-rwxr-xr-xtools/buildgen/plugins/expand_version.py4
-rwxr-xr-xtools/buildgen/plugins/list_api.py9
-rw-r--r--tools/buildgen/plugins/make_fuzzer_tests.py4
-rwxr-xr-xtools/codegen/core/gen_header_frame.py7
-rwxr-xr-xtools/distrib/check_include_guards.py3
-rwxr-xr-xtools/distrib/python/bazel_deps.sh46
-rwxr-xr-xtools/distrib/python/check_grpcio_tools.py45
-rw-r--r--tools/distrib/python/grpcio_tools/.gitignore7
-rw-r--r--tools/distrib/python/grpcio_tools/MANIFEST.in7
-rw-r--r--tools/distrib/python/grpcio_tools/README.rst128
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/__init__.py30
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/tools/__init__.py (renamed from src/python/grpcio/tests/unit/framework/face/__init__.py)3
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/tools/main.cc54
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/tools/main.h (renamed from src/python/grpcio/tests/interop/empty.proto)18
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/tools/protoc.py (renamed from src/python/grpcio/grpc/framework/base/_constants.py)12
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/tools/protoc_compiler.pyx (renamed from src/python/grpcio/grpc/framework/base/__init__.py)16
-rw-r--r--[-rwxr-xr-x]tools/distrib/python/grpcio_tools/grpc_version.py (renamed from src/ruby/bin/grpc_ruby_interop_client)7
-rw-r--r--tools/distrib/python/grpcio_tools/protoc_lib_deps.py32
-rw-r--r--tools/distrib/python/grpcio_tools/setup.py96
-rwxr-xr-xtools/distrib/python/make_grpcio_tools.py140
-rw-r--r--tools/dockerfile/bazel/Dockerfile52
-rw-r--r--tools/dockerfile/grpc_artifact_linux_x64/Dockerfile5
-rw-r--r--tools/dockerfile/grpc_artifact_linux_x86/Dockerfile5
-rw-r--r--tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile43
-rw-r--r--tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile (renamed from src/python/grpcio/grpc/framework/alpha/exceptions.py)26
-rw-r--r--tools/dockerfile/grpc_base/Dockerfile68
-rw-r--r--tools/dockerfile/grpc_base/README.md11
-rw-r--r--tools/dockerfile/grpc_linuxbrew/Dockerfile62
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile (renamed from tools/dockerfile/grpc_interop_csharp/Dockerfile)35
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_csharp/build_interop.sh (renamed from tools/dockerfile/grpc_interop_csharp/build_interop.sh)0
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile (renamed from tools/dockerfile/grpc_interop_cxx/Dockerfile)25
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_cxx/build_interop.sh (renamed from tools/dockerfile/grpc_interop_cxx/build_interop.sh)0
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_go/Dockerfile (renamed from tools/dockerfile/grpc_interop_go/Dockerfile)0
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_go/build_interop.sh (renamed from tools/dockerfile/grpc_interop_go/build_interop.sh)0
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile (renamed from tools/dockerfile/grpc_interop_http2/Dockerfile)0
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_http2/build_interop.sh (renamed from tools/dockerfile/grpc_interop_http2/build_interop.sh)0
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_java/Dockerfile (renamed from tools/dockerfile/grpc_interop_java/Dockerfile)12
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_java/build_interop.sh (renamed from tools/dockerfile/grpc_interop_java/build_interop.sh)0
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_node/Dockerfile (renamed from tools/dockerfile/grpc_interop_node/Dockerfile)35
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_node/build_interop.sh (renamed from tools/dockerfile/grpc_interop_node/build_interop.sh)4
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_php/Dockerfile (renamed from tools/dockerfile/grpc_interop_php/Dockerfile)43
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_php/build_interop.sh (renamed from tools/dockerfile/grpc_interop_php/build_interop.sh)0
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_python/Dockerfile (renamed from tools/dockerfile/grpc_interop_python/Dockerfile)41
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_python/build_interop.sh (renamed from tools/dockerfile/grpc_interop_python/build_interop.sh)6
-rw-r--r--tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile (renamed from tools/dockerfile/grpc_interop_ruby/Dockerfile)36
-rwxr-xr-xtools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh (renamed from tools/dockerfile/grpc_interop_ruby/build_interop.sh)2
-rw-r--r--tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile101
-rwxr-xr-xtools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh47
-rw-r--r--tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile5
-rwxr-xr-xtools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh2
-rw-r--r--tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile103
-rwxr-xr-xtools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh46
-rw-r--r--tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile99
-rwxr-xr-xtools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh48
-rw-r--r--tools/dockerfile/test/multilang_jessie_x64/Dockerfile5
-rw-r--r--tools/dockerfile/test/node_jessie_x64/Dockerfile5
-rw-r--r--tools/dockerfile/test/sanity/Dockerfile9
-rw-r--r--tools/doxygen/Doxyfile.c++3
-rw-r--r--tools/doxygen/Doxyfile.c++.internal3
-rw-r--r--tools/doxygen/Doxyfile.core3
-rw-r--r--tools/doxygen/Doxyfile.core.internal5
-rw-r--r--tools/fuzzer/runners/api_fuzzer.sh46
-rw-r--r--tools/fuzzer/runners/client_fuzzer.sh2
-rw-r--r--tools/fuzzer/runners/hpack_parser_fuzzer_test.sh2
-rw-r--r--tools/fuzzer/runners/http_fuzzer_test.sh2
-rw-r--r--tools/fuzzer/runners/json_fuzzer_test.sh2
-rw-r--r--tools/fuzzer/runners/nanopb_fuzzer_response_test.sh2
-rw-r--r--tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh2
-rw-r--r--tools/fuzzer/runners/server_fuzzer.sh2
-rw-r--r--tools/fuzzer/runners/uri_fuzzer_test.sh2
-rwxr-xr-xtools/gce/linux_performance_worker_init.sh5
-rwxr-xr-x[-rw-r--r--]tools/gcp/stress_test/run_ruby.sh (renamed from src/python/grpcio/grpc/framework/base/exceptions.py)11
-rw-r--r--tools/jenkins/README.md1
-rwxr-xr-xtools/jenkins/run_distribution.sh144
-rwxr-xr-xtools/jenkins/run_fuzzer.sh4
-rwxr-xr-xtools/jenkins/run_performance.sh2
-rw-r--r--tools/run_tests/artifact_targets.py34
-rw-r--r--tools/run_tests/build_artifact_node.bat6
-rwxr-xr-xtools/run_tests/build_artifact_node.sh2
-rw-r--r--tools/run_tests/build_artifact_python.bat29
-rwxr-xr-xtools/run_tests/build_artifact_python.sh46
-rwxr-xr-xtools/run_tests/build_package_node.sh50
-rwxr-xr-xtools/run_tests/build_package_ruby.sh24
-rwxr-xr-xtools/run_tests/build_python.sh12
-rw-r--r--tools/run_tests/distribtest_targets.py4
-rwxr-xr-xtools/run_tests/dockerize/build_and_run_docker.sh (renamed from tools/jenkins/build_and_run_docker.sh)2
-rwxr-xr-xtools/run_tests/dockerize/build_docker_and_run_tests.sh (renamed from tools/jenkins/build_docker_and_run_tests.sh)2
-rwxr-xr-xtools/run_tests/dockerize/build_interop_image.sh (renamed from tools/jenkins/build_interop_image.sh)8
-rwxr-xr-xtools/run_tests/dockerize/build_interop_stress_image.sh (renamed from tools/jenkins/build_interop_stress_image.sh)2
-rwxr-xr-xtools/run_tests/dockerize/docker_run.sh (renamed from tools/jenkins/docker_run.sh)0
-rwxr-xr-xtools/run_tests/dockerize/docker_run_tests.sh (renamed from tools/jenkins/docker_run_tests.sh)0
-rw-r--r--tools/run_tests/package_targets.py4
-rwxr-xr-x[-rw-r--r--]tools/run_tests/performance/kill_workers.sh (renamed from src/python/grpcio/grpc/framework/base/null.py)36
-rwxr-xr-xtools/run_tests/performance/remote_host_prepare.sh7
-rwxr-xr-xtools/run_tests/performance/run_worker_node.sh2
-rwxr-xr-xtools/run_tests/performance/run_worker_python.sh35
-rw-r--r--tools/run_tests/performance/scenario_config.py763
-rwxr-xr-xtools/run_tests/run_interop_tests.py16
-rwxr-xr-xtools/run_tests/run_performance_tests.py78
-rwxr-xr-xtools/run_tests/run_python.sh6
-rwxr-xr-xtools/run_tests/run_stress_tests.py2
-rwxr-xr-xtools/run_tests/run_tests.py49
-rw-r--r--tools/run_tests/sanity/sanity_tests.yaml1
-rw-r--r--tools/run_tests/sources_and_headers.json93
-rw-r--r--tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md4
-rw-r--r--tools/run_tests/stress_test/configs/asan.json5
-rw-r--r--tools/run_tests/stress_test/configs/csharp.json90
-rw-r--r--tools/run_tests/stress_test/configs/go.json2
-rw-r--r--tools/run_tests/stress_test/configs/java.json2
-rw-r--r--tools/run_tests/stress_test/configs/node-cxx.json4
-rw-r--r--tools/run_tests/stress_test/configs/node.json2
-rw-r--r--tools/run_tests/stress_test/configs/opt-tsan-asan.json9
-rw-r--r--tools/run_tests/stress_test/configs/opt.json5
-rw-r--r--tools/run_tests/stress_test/configs/python.json98
-rw-r--r--tools/run_tests/stress_test/configs/ruby.json92
-rw-r--r--tools/run_tests/stress_test/configs/tsan.json5
-rwxr-xr-xtools/run_tests/stress_test/run_on_gke.py13
-rw-r--r--tools/run_tests/tests.json30824
-rw-r--r--tox.ini2
-rw-r--r--vsprojects/buildtests_c.sln28
-rw-r--r--vsprojects/grpc_protoc_plugins.sln16
-rw-r--r--vsprojects/vcxproj/gpr/gpr.vcxproj4
-rw-r--r--vsprojects/vcxproj/gpr/gpr.vcxproj.filters6
-rw-r--r--vsprojects/vcxproj/grpc++/grpc++.vcxproj1
-rw-r--r--vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj1
-rw-r--r--vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/grpc/grpc.vcxproj1
-rw-r--r--vsprojects/vcxproj/grpc/grpc.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj168
-rw-r--r--vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters18
-rw-r--r--vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj4
-rw-r--r--vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters9
-rw-r--r--vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj3
-rw-r--r--vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters6
-rw-r--r--vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj3
-rw-r--r--vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters6
-rw-r--r--vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj1
-rw-r--r--vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj1
-rw-r--r--vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj1
-rw-r--r--vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters3
-rw-r--r--vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj206
-rw-r--r--vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters36
-rw-r--r--vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj202
-rw-r--r--vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters24
1260 files changed, 31506 insertions, 29176 deletions
diff --git a/.gitignore b/.gitignore
index 502483f456..ca61bda124 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,7 @@ dist/
*.egg
# Node installation output
-node_modules/
+^node_modules
src/node/extension_binary/
# gcov coverage data
diff --git a/BUILD b/BUILD
index ff5220bc8e..ad6903d684 100644
--- a/BUILD
+++ b/BUILD
@@ -84,6 +84,7 @@ cc_library(
"src/core/lib/support/stack_lockfree.c",
"src/core/lib/support/string.c",
"src/core/lib/support/string_posix.c",
+ "src/core/lib/support/string_util_win32.c",
"src/core/lib/support/string_win32.c",
"src/core/lib/support/subprocess_posix.c",
"src/core/lib/support/subprocess_windows.c",
@@ -98,6 +99,7 @@ cc_library(
"src/core/lib/support/time_precise.c",
"src/core/lib/support/time_win32.c",
"src/core/lib/support/tls_pthread.c",
+ "src/core/lib/support/tmpfile_msys.c",
"src/core/lib/support/tmpfile_posix.c",
"src/core/lib/support/tmpfile_win32.c",
"src/core/lib/support/wrap_memcpy.c",
@@ -461,6 +463,7 @@ cc_library(
"include/grpc/grpc.h",
"include/grpc/status.h",
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -772,6 +775,7 @@ cc_library(
"include/grpc/grpc.h",
"include/grpc/status.h",
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -944,6 +948,7 @@ cc_library(
"include/grpc++/impl/codegen/sync_stream.h",
"include/grpc++/impl/codegen/time.h",
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -1089,6 +1094,7 @@ cc_library(
"include/grpc++/impl/codegen/sync_stream.h",
"include/grpc++/impl/codegen/time.h",
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -1136,6 +1142,8 @@ cc_library(
"src/compiler/csharp_generator.h",
"src/compiler/csharp_generator_helpers.h",
"src/compiler/generator_helpers.h",
+ "src/compiler/node_generator.h",
+ "src/compiler/node_generator_helpers.h",
"src/compiler/objective_c_generator.h",
"src/compiler/objective_c_generator_helpers.h",
"src/compiler/python_generator.h",
@@ -1145,6 +1153,7 @@ cc_library(
"src/compiler/ruby_generator_string-inl.h",
"src/compiler/cpp_generator.cc",
"src/compiler/csharp_generator.cc",
+ "src/compiler/node_generator.cc",
"src/compiler/objective_c_generator.cc",
"src/compiler/python_generator.cc",
"src/compiler/ruby_generator.cc",
@@ -1216,6 +1225,7 @@ objc_library(
"src/core/lib/support/stack_lockfree.c",
"src/core/lib/support/string.c",
"src/core/lib/support/string_posix.c",
+ "src/core/lib/support/string_util_win32.c",
"src/core/lib/support/string_win32.c",
"src/core/lib/support/subprocess_posix.c",
"src/core/lib/support/subprocess_windows.c",
@@ -1230,6 +1240,7 @@ objc_library(
"src/core/lib/support/time_precise.c",
"src/core/lib/support/time_win32.c",
"src/core/lib/support/tls_pthread.c",
+ "src/core/lib/support/tmpfile_msys.c",
"src/core/lib/support/tmpfile_posix.c",
"src/core/lib/support/tmpfile_win32.c",
"src/core/lib/support/wrap_memcpy.c",
@@ -1473,6 +1484,7 @@ objc_library(
"include/grpc/grpc.h",
"include/grpc/status.h",
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -1667,6 +1679,18 @@ cc_binary(
cc_binary(
+ name = "grpc_node_plugin",
+ srcs = [
+ "src/compiler/node_plugin.cc",
+ ],
+ deps = [
+ "//external:protobuf_compiler",
+ ":grpc_plugin_support",
+ ],
+)
+
+
+cc_binary(
name = "grpc_objective_c_plugin",
srcs = [
"src/compiler/objective_c_plugin.cc",
diff --git a/Makefile b/Makefile
index 027a24664a..b9752a6ff7 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
Q = @
endif
-VERSION = 0.14.0-dev
+VERSION = 0.15.0-dev
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -779,7 +779,7 @@ endif
.SECONDARY = %.pb.h %.pb.cc
-PROTOC_PLUGINS = $(BINDIR)/$(CONFIG)/grpc_cpp_plugin $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(BINDIR)/$(CONFIG)/grpc_python_plugin $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
+PROTOC_PLUGINS = $(BINDIR)/$(CONFIG)/grpc_cpp_plugin $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(BINDIR)/$(CONFIG)/grpc_node_plugin $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(BINDIR)/$(CONFIG)/grpc_python_plugin $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
ifeq ($(DEP_MISSING),)
all: static shared plugins
dep_error:
@@ -881,6 +881,7 @@ alarm_test: $(BINDIR)/$(CONFIG)/alarm_test
algorithm_test: $(BINDIR)/$(CONFIG)/algorithm_test
alloc_test: $(BINDIR)/$(CONFIG)/alloc_test
alpn_test: $(BINDIR)/$(CONFIG)/alpn_test
+api_fuzzer: $(BINDIR)/$(CONFIG)/api_fuzzer
bin_encoder_test: $(BINDIR)/$(CONFIG)/bin_encoder_test
census_context_test: $(BINDIR)/$(CONFIG)/census_context_test
channel_create_test: $(BINDIR)/$(CONFIG)/channel_create_test
@@ -1009,9 +1010,11 @@ cxx_time_test: $(BINDIR)/$(CONFIG)/cxx_time_test
end2end_test: $(BINDIR)/$(CONFIG)/end2end_test
generic_async_streaming_ping_pong_test: $(BINDIR)/$(CONFIG)/generic_async_streaming_ping_pong_test
generic_end2end_test: $(BINDIR)/$(CONFIG)/generic_end2end_test
+golden_file_test: $(BINDIR)/$(CONFIG)/golden_file_test
grpc_cli: $(BINDIR)/$(CONFIG)/grpc_cli
grpc_cpp_plugin: $(BINDIR)/$(CONFIG)/grpc_cpp_plugin
grpc_csharp_plugin: $(BINDIR)/$(CONFIG)/grpc_csharp_plugin
+grpc_node_plugin: $(BINDIR)/$(CONFIG)/grpc_node_plugin
grpc_objective_c_plugin: $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin
grpc_python_plugin: $(BINDIR)/$(CONFIG)/grpc_python_plugin
grpc_ruby_plugin: $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
@@ -1086,6 +1089,7 @@ connection_prefix_bad_client_test: $(BINDIR)/$(CONFIG)/connection_prefix_bad_cli
head_of_line_blocking_bad_client_test: $(BINDIR)/$(CONFIG)/head_of_line_blocking_bad_client_test
headers_bad_client_test: $(BINDIR)/$(CONFIG)/headers_bad_client_test
initial_settings_frame_bad_client_test: $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test
+large_metadata_bad_client_test: $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test
server_registered_method_bad_client_test: $(BINDIR)/$(CONFIG)/server_registered_method_bad_client_test
simple_request_bad_client_test: $(BINDIR)/$(CONFIG)/simple_request_bad_client_test
unknown_frame_bad_client_test: $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test
@@ -1119,6 +1123,7 @@ h2_sockpair_nosec_test: $(BINDIR)/$(CONFIG)/h2_sockpair_nosec_test
h2_sockpair+trace_nosec_test: $(BINDIR)/$(CONFIG)/h2_sockpair+trace_nosec_test
h2_sockpair_1byte_nosec_test: $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_nosec_test
h2_uds_nosec_test: $(BINDIR)/$(CONFIG)/h2_uds_nosec_test
+api_fuzzer_one_entry: $(BINDIR)/$(CONFIG)/api_fuzzer_one_entry
client_fuzzer_one_entry: $(BINDIR)/$(CONFIG)/client_fuzzer_one_entry
hpack_parser_fuzzer_test_one_entry: $(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test_one_entry
http_fuzzer_test_one_entry: $(BINDIR)/$(CONFIG)/http_fuzzer_test_one_entry
@@ -1314,6 +1319,7 @@ buildtests_c: privatelibs_c \
$(BINDIR)/$(CONFIG)/head_of_line_blocking_bad_client_test \
$(BINDIR)/$(CONFIG)/headers_bad_client_test \
$(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test \
+ $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test \
$(BINDIR)/$(CONFIG)/server_registered_method_bad_client_test \
$(BINDIR)/$(CONFIG)/simple_request_bad_client_test \
$(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test \
@@ -1347,6 +1353,7 @@ buildtests_c: privatelibs_c \
$(BINDIR)/$(CONFIG)/h2_sockpair+trace_nosec_test \
$(BINDIR)/$(CONFIG)/h2_sockpair_1byte_nosec_test \
$(BINDIR)/$(CONFIG)/h2_uds_nosec_test \
+ $(BINDIR)/$(CONFIG)/api_fuzzer_one_entry \
$(BINDIR)/$(CONFIG)/client_fuzzer_one_entry \
$(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test_one_entry \
$(BINDIR)/$(CONFIG)/http_fuzzer_test_one_entry \
@@ -1377,6 +1384,7 @@ buildtests_cxx: buildtests_zookeeper privatelibs_cxx \
$(BINDIR)/$(CONFIG)/end2end_test \
$(BINDIR)/$(CONFIG)/generic_async_streaming_ping_pong_test \
$(BINDIR)/$(CONFIG)/generic_end2end_test \
+ $(BINDIR)/$(CONFIG)/golden_file_test \
$(BINDIR)/$(CONFIG)/grpc_cli \
$(BINDIR)/$(CONFIG)/grpclb_api_test \
$(BINDIR)/$(CONFIG)/hybrid_end2end_test \
@@ -1650,6 +1658,8 @@ test_c: buildtests_c
$(Q) $(BINDIR)/$(CONFIG)/headers_bad_client_test || ( echo test headers_bad_client_test failed ; exit 1 )
$(E) "[RUN] Testing initial_settings_frame_bad_client_test"
$(Q) $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test || ( echo test initial_settings_frame_bad_client_test failed ; exit 1 )
+ $(E) "[RUN] Testing large_metadata_bad_client_test"
+ $(Q) $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test || ( echo test large_metadata_bad_client_test failed ; exit 1 )
$(E) "[RUN] Testing server_registered_method_bad_client_test"
$(Q) $(BINDIR)/$(CONFIG)/server_registered_method_bad_client_test || ( echo test server_registered_method_bad_client_test failed ; exit 1 )
$(E) "[RUN] Testing simple_request_bad_client_test"
@@ -1708,6 +1718,8 @@ test_cxx: test_zookeeper buildtests_cxx
$(Q) $(BINDIR)/$(CONFIG)/generic_async_streaming_ping_pong_test || ( echo test generic_async_streaming_ping_pong_test failed ; exit 1 )
$(E) "[RUN] Testing generic_end2end_test"
$(Q) $(BINDIR)/$(CONFIG)/generic_end2end_test || ( echo test generic_end2end_test failed ; exit 1 )
+ $(E) "[RUN] Testing golden_file_test"
+ $(Q) $(BINDIR)/$(CONFIG)/golden_file_test || ( echo test golden_file_test failed ; exit 1 )
$(E) "[RUN] Testing grpclb_api_test"
$(Q) $(BINDIR)/$(CONFIG)/grpclb_api_test || ( echo test grpclb_api_test failed ; exit 1 )
$(E) "[RUN] Testing hybrid_end2end_test"
@@ -1877,6 +1889,21 @@ $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: src/proto/grpc/lb/v1/lo
endif
ifeq ($(NO_PROTOC),true)
+$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: protoc_dep_error
+$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: protoc_dep_error
+else
+$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
+ $(E) "[PROTOC] Generating protobuf CC file from $<"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(PROTOC) --cpp_out=$(GENDIR) $<
+
+$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
+ $(E) "[GRPC] Generating gRPC's protobuf service CC file from $<"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(PROTOC) --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(BINDIR)/$(CONFIG)/grpc_cpp_plugin $<
+endif
+
+ifeq ($(NO_PROTOC),true)
$(GENDIR)/src/proto/grpc/testing/control.pb.cc: protoc_dep_error
$(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: protoc_dep_error
else
@@ -2242,6 +2269,8 @@ else
$(Q) $(INSTALL) -d $(prefix)/bin
$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(prefix)/bin/grpc_csharp_plugin
$(Q) $(INSTALL) -d $(prefix)/bin
+ $(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_node_plugin $(prefix)/bin/grpc_node_plugin
+ $(Q) $(INSTALL) -d $(prefix)/bin
$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(prefix)/bin/grpc_objective_c_plugin
$(Q) $(INSTALL) -d $(prefix)/bin
$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_python_plugin $(prefix)/bin/grpc_python_plugin
@@ -2325,6 +2354,7 @@ LIBGPR_SRC = \
src/core/lib/support/stack_lockfree.c \
src/core/lib/support/string.c \
src/core/lib/support/string_posix.c \
+ src/core/lib/support/string_util_win32.c \
src/core/lib/support/string_win32.c \
src/core/lib/support/subprocess_posix.c \
src/core/lib/support/subprocess_windows.c \
@@ -2339,6 +2369,7 @@ LIBGPR_SRC = \
src/core/lib/support/time_precise.c \
src/core/lib/support/time_win32.c \
src/core/lib/support/tls_pthread.c \
+ src/core/lib/support/tmpfile_msys.c \
src/core/lib/support/tmpfile_posix.c \
src/core/lib/support/tmpfile_win32.c \
src/core/lib/support/wrap_memcpy.c \
@@ -2623,6 +2654,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \
include/grpc/status.h \
include/grpc/impl/codegen/byte_buffer.h \
+ include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
@@ -2711,6 +2743,7 @@ LIBGRPC_TEST_UTIL_SRC = \
test/core/util/memory_counters.c \
test/core/util/mock_endpoint.c \
test/core/util/parse_hexstring.c \
+ test/core/util/passthru_endpoint.c \
test/core/util/port_posix.c \
test/core/util/port_server_client.c \
test/core/util/port_windows.c \
@@ -2760,6 +2793,7 @@ LIBGRPC_TEST_UTIL_UNSECURE_SRC = \
test/core/util/memory_counters.c \
test/core/util/mock_endpoint.c \
test/core/util/parse_hexstring.c \
+ test/core/util/passthru_endpoint.c \
test/core/util/port_posix.c \
test/core/util/port_server_client.c \
test/core/util/port_windows.c \
@@ -2941,6 +2975,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \
include/grpc/status.h \
include/grpc/impl/codegen/byte_buffer.h \
+ include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
@@ -3227,6 +3262,7 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/impl/codegen/sync_stream.h \
include/grpc++/impl/codegen/time.h \
include/grpc/impl/codegen/byte_buffer.h \
+ include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
@@ -3530,6 +3566,7 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/impl/codegen/sync_stream.h \
include/grpc++/impl/codegen/time.h \
include/grpc/impl/codegen/byte_buffer.h \
+ include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
@@ -3606,6 +3643,7 @@ endif
LIBGRPC_PLUGIN_SUPPORT_SRC = \
src/compiler/cpp_generator.cc \
src/compiler/csharp_generator.cc \
+ src/compiler/node_generator.cc \
src/compiler/objective_c_generator.cc \
src/compiler/python_generator.cc \
src/compiler/ruby_generator.cc \
@@ -6052,6 +6090,38 @@ endif
endif
+API_FUZZER_SRC = \
+ test/core/end2end/fuzzers/api_fuzzer.c \
+
+API_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(API_FUZZER_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/api_fuzzer: openssl_dep_error
+
+else
+
+
+
+$(BINDIR)/$(CONFIG)/api_fuzzer: $(API_FUZZER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(API_FUZZER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/api_fuzzer
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/core/end2end/fuzzers/api_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_api_fuzzer: $(API_FUZZER_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(API_FUZZER_OBJS:.o=.dep)
+endif
+endif
+
+
BIN_ENCODER_TEST_SRC = \
test/core/transport/chttp2/bin_encoder_test.c \
@@ -10403,6 +10473,53 @@ endif
endif
+GOLDEN_FILE_TEST_SRC = \
+ $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc \
+ test/cpp/codegen/golden_file_test.cc \
+
+GOLDEN_FILE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GOLDEN_FILE_TEST_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/golden_file_test: openssl_dep_error
+
+else
+
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/golden_file_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/golden_file_test: $(PROTOBUF_DEP) $(GOLDEN_FILE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(GOLDEN_FILE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/golden_file_test
+
+endif
+
+endif
+
+$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/compiler_test.o: $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+$(OBJDIR)/$(CONFIG)/test/cpp/codegen/golden_file_test.o: $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_golden_file_test: $(GOLDEN_FILE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(GOLDEN_FILE_TEST_OBJS:.o=.dep)
+endif
+endif
+$(OBJDIR)/$(CONFIG)/test/cpp/codegen/golden_file_test.o: $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc
+
+
GRPC_CLI_SRC = \
test/cpp/util/grpc_cli.cc \
@@ -10508,6 +10625,37 @@ ifneq ($(NO_DEPS),true)
endif
+GRPC_NODE_PLUGIN_SRC = \
+ src/compiler/node_plugin.cc \
+
+GRPC_NODE_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_NODE_PLUGIN_SRC))))
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/grpc_node_plugin: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/grpc_node_plugin: $(PROTOBUF_DEP) $(GRPC_NODE_PLUGIN_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a
+ $(E) "[HOSTLD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(HOST_LDXX) $(HOST_LDFLAGS) $(GRPC_NODE_PLUGIN_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a $(HOST_LDLIBSXX) $(HOST_LDLIBS_PROTOC) $(HOST_LDLIBS) $(HOST_LDLIBS_PROTOC) -o $(BINDIR)/$(CONFIG)/grpc_node_plugin
+
+endif
+
+$(OBJDIR)/$(CONFIG)/src/compiler/node_plugin.o: $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a
+
+deps_grpc_node_plugin: $(GRPC_NODE_PLUGIN_OBJS:.o=.dep)
+
+ifneq ($(NO_DEPS),true)
+-include $(GRPC_NODE_PLUGIN_OBJS:.o=.dep)
+endif
+
+
GRPC_OBJECTIVE_C_PLUGIN_SRC = \
src/compiler/objective_c_plugin.cc \
@@ -12960,6 +13108,26 @@ ifneq ($(NO_DEPS),true)
endif
+LARGE_METADATA_BAD_CLIENT_TEST_SRC = \
+ test/core/bad_client/tests/large_metadata.c \
+
+LARGE_METADATA_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LARGE_METADATA_BAD_CLIENT_TEST_SRC))))
+
+
+$(BINDIR)/$(CONFIG)/large_metadata_bad_client_test: $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test
+
+$(OBJDIR)/$(CONFIG)/test/core/bad_client/tests/large_metadata.o: $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_large_metadata_bad_client_test: $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_DEPS),true)
+-include $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS:.o=.dep)
+endif
+
+
SERVER_REGISTERED_METHOD_BAD_CLIENT_TEST_SRC = \
test/core/bad_client/tests/server_registered_method.c \
@@ -13848,6 +14016,41 @@ ifneq ($(NO_DEPS),true)
endif
+API_FUZZER_ONE_ENTRY_SRC = \
+ test/core/end2end/fuzzers/api_fuzzer.c \
+ test/core/util/one_corpus_entry_fuzzer.c \
+
+API_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(API_FUZZER_ONE_ENTRY_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/api_fuzzer_one_entry: openssl_dep_error
+
+else
+
+
+
+$(BINDIR)/$(CONFIG)/api_fuzzer_one_entry: $(API_FUZZER_ONE_ENTRY_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(API_FUZZER_ONE_ENTRY_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/api_fuzzer_one_entry
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/core/end2end/fuzzers/api_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+$(OBJDIR)/$(CONFIG)/test/core/util/one_corpus_entry_fuzzer.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_api_fuzzer_one_entry: $(API_FUZZER_ONE_ENTRY_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(API_FUZZER_ONE_ENTRY_OBJS:.o=.dep)
+endif
+endif
+
+
CLIENT_FUZZER_ONE_ENTRY_SRC = \
test/core/end2end/fuzzers/client_fuzzer.c \
test/core/util/one_corpus_entry_fuzzer.c \
diff --git a/binding.gyp b/binding.gyp
index 0fecc66c46..8bc2aee3d1 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -522,6 +522,7 @@
'src/core/lib/support/stack_lockfree.c',
'src/core/lib/support/string.c',
'src/core/lib/support/string_posix.c',
+ 'src/core/lib/support/string_util_win32.c',
'src/core/lib/support/string_win32.c',
'src/core/lib/support/subprocess_posix.c',
'src/core/lib/support/subprocess_windows.c',
@@ -536,6 +537,7 @@
'src/core/lib/support/time_precise.c',
'src/core/lib/support/time_win32.c',
'src/core/lib/support/tls_pthread.c',
+ 'src/core/lib/support/tmpfile_msys.c',
'src/core/lib/support/tmpfile_posix.c',
'src/core/lib/support/tmpfile_win32.c',
'src/core/lib/support/wrap_memcpy.c',
diff --git a/build.yaml b/build.yaml
index d5cfb3c2d6..c9381e9bc5 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
'#3': Use "-preN" suffixes to identify pre-release versions
'#4': Per-language overrides are possible with (eg) ruby_version tag here
'#5': See the expand_version.py for all the quirks here
- version: 0.14.0-dev
+ version: 0.15.0-dev
filegroups:
- name: census
public_headers:
@@ -103,6 +103,7 @@ filegroups:
- src/core/lib/support/stack_lockfree.c
- src/core/lib/support/string.c
- src/core/lib/support/string_posix.c
+ - src/core/lib/support/string_util_win32.c
- src/core/lib/support/string_win32.c
- src/core/lib/support/subprocess_posix.c
- src/core/lib/support/subprocess_windows.c
@@ -117,6 +118,7 @@ filegroups:
- src/core/lib/support/time_precise.c
- src/core/lib/support/time_win32.c
- src/core/lib/support/tls_pthread.c
+ - src/core/lib/support/tmpfile_msys.c
- src/core/lib/support/tmpfile_posix.c
- src/core/lib/support/tmpfile_win32.c
- src/core/lib/support/wrap_memcpy.c
@@ -349,6 +351,7 @@ filegroups:
- name: grpc_codegen
public_headers:
- include/grpc/impl/codegen/byte_buffer.h
+ - include/grpc/impl/codegen/byte_buffer_reader.h
- include/grpc/impl/codegen/compression_types.h
- include/grpc/impl/codegen/connectivity_state.h
- include/grpc/impl/codegen/grpc_types.h
@@ -441,6 +444,7 @@ filegroups:
- test/core/util/memory_counters.h
- test/core/util/mock_endpoint.h
- test/core/util/parse_hexstring.h
+ - test/core/util/passthru_endpoint.h
- test/core/util/port.h
- test/core/util/port_server_client.h
- test/core/util/slice_splitter.h
@@ -452,6 +456,7 @@ filegroups:
- test/core/util/memory_counters.c
- test/core/util/mock_endpoint.c
- test/core/util/parse_hexstring.c
+ - test/core/util/passthru_endpoint.c
- test/core/util/port_posix.c
- test/core/util/port_server_client.c
- test/core/util/port_windows.c
@@ -936,6 +941,8 @@ libs:
- src/compiler/csharp_generator.h
- src/compiler/csharp_generator_helpers.h
- src/compiler/generator_helpers.h
+ - src/compiler/node_generator.h
+ - src/compiler/node_generator_helpers.h
- src/compiler/objective_c_generator.h
- src/compiler/objective_c_generator_helpers.h
- src/compiler/python_generator.h
@@ -946,6 +953,7 @@ libs:
src:
- src/compiler/cpp_generator.cc
- src/compiler/csharp_generator.cc
+ - src/compiler/node_generator.cc
- src/compiler/objective_c_generator.cc
- src/compiler/python_generator.cc
- src/compiler/ruby_generator.cc
@@ -1116,6 +1124,20 @@ targets:
- grpc
- gpr_test_util
- gpr
+- name: api_fuzzer
+ build: fuzzer
+ language: c
+ src:
+ - test/core/end2end/fuzzers/api_fuzzer.c
+ deps:
+ - grpc_test_util
+ - grpc
+ - gpr_test_util
+ - gpr
+ corpus_dirs:
+ - test/core/end2end/fuzzers/api_fuzzer_corpus
+ dict: test/core/end2end/fuzzers/api_fuzzer.dictionary
+ maxlen: 2048
- name: bin_encoder_test
build: test
language: c
@@ -2532,6 +2554,17 @@ targets:
- grpc
- gpr_test_util
- gpr
+- name: golden_file_test
+ gtest: true
+ build: test
+ language: c++
+ src:
+ - src/proto/grpc/testing/compiler_test.proto
+ - test/cpp/codegen/golden_file_test.cc
+ deps:
+ - grpc++
+ - grpc
+ - gpr
- name: grpc_cli
build: test
run: false
@@ -2566,6 +2599,15 @@ targets:
secure: false
vs_config_type: Application
vs_project_guid: '{3C813052-A49A-4662-B90A-1ADBEC7EE453}'
+- name: grpc_node_plugin
+ build: protoc
+ language: c++
+ src:
+ - src/compiler/node_plugin.cc
+ deps:
+ - grpc_plugin_support
+ secure: false
+ vs_config_type: Application
- name: grpc_objective_c_plugin
build: protoc
language: c++
diff --git a/composer.json b/composer.json
index 97b1a5cb49..b77a59e351 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
"name": "grpc/grpc",
"type": "library",
"description": "gRPC library for PHP",
- "version": "0.14.0",
+ "version": "0.15.0",
"keywords": ["rpc"],
"homepage": "http://grpc.io",
"license": "BSD-3-Clause",
diff --git a/config.m4 b/config.m4
index c60297213d..c8d2aae106 100644
--- a/config.m4
+++ b/config.m4
@@ -63,6 +63,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/support/stack_lockfree.c \
src/core/lib/support/string.c \
src/core/lib/support/string_posix.c \
+ src/core/lib/support/string_util_win32.c \
src/core/lib/support/string_win32.c \
src/core/lib/support/subprocess_posix.c \
src/core/lib/support/subprocess_windows.c \
@@ -77,6 +78,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/support/time_precise.c \
src/core/lib/support/time_win32.c \
src/core/lib/support/tls_pthread.c \
+ src/core/lib/support/tmpfile_msys.c \
src/core/lib/support/tmpfile_posix.c \
src/core/lib/support/tmpfile_win32.c \
src/core/lib/support/wrap_memcpy.c \
diff --git a/doc/fail_fast.md b/doc/fail_fast.md
new file mode 100644
index 0000000000..3ed4297194
--- /dev/null
+++ b/doc/fail_fast.md
@@ -0,0 +1,15 @@
+gRPC Fail Fast Semantics
+========================
+
+Fail fast requests allow terminating requests (with status UNAVAILABLE) prior
+to the deadline of the request being met.
+
+gRPC implementations of fail fast can terminate requests whenever a channel is
+in the TRANSIENT_FAILURE or SHUTDOWN states. If the channel is in any other
+state (CONNECTING, READY, or IDLE) the request should not be terminated.
+
+Fail fast SHOULD be the default for gRPC implementations, with an option to
+switch to non fail fast.
+
+The opposite of fail fast is 'ignore connectivity'.
+
diff --git a/examples/cpp/helloworld/Makefile b/examples/cpp/helloworld/Makefile
index 4b1867e292..58a82dbb83 100644
--- a/examples/cpp/helloworld/Makefile
+++ b/examples/cpp/helloworld/Makefile
@@ -32,7 +32,7 @@
CXX = g++
CPPFLAGS += -I/usr/local/include -pthread
CXXFLAGS += -std=c++11
-LDFLAGS += -L/usr/local/lib -lgrpc++_unsecure -lgrpc -lprotobuf -lpthread -ldl
+LDFLAGS += -L/usr/local/lib `pkg-config --libs grpc++` -lprotobuf -lpthread -ldl
PROTOC = protoc
GRPC_CPP_PLUGIN = grpc_cpp_plugin
GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)`
@@ -41,7 +41,7 @@ PROTOS_PATH = ../../protos
vpath %.proto $(PROTOS_PATH)
-all: system-check greeter_client greeter_server greeter_async_client greeter_async_server
+all: system-check greeter_client greeter_server greeter_async_client greeter_async_client2 greeter_async_server
greeter_client: helloworld.pb.o helloworld.grpc.pb.o greeter_client.o
$(CXX) $^ $(LDFLAGS) -o $@
@@ -52,6 +52,9 @@ greeter_server: helloworld.pb.o helloworld.grpc.pb.o greeter_server.o
greeter_async_client: helloworld.pb.o helloworld.grpc.pb.o greeter_async_client.o
$(CXX) $^ $(LDFLAGS) -o $@
+greeter_async_client2: helloworld.pb.o helloworld.grpc.pb.o greeter_async_client2.o
+ $(CXX) $^ $(LDFLAGS) -o $@
+
greeter_async_server: helloworld.pb.o helloworld.grpc.pb.o greeter_async_server.o
$(CXX) $^ $(LDFLAGS) -o $@
@@ -64,7 +67,7 @@ greeter_async_server: helloworld.pb.o helloworld.grpc.pb.o greeter_async_server.
$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. $<
clean:
- rm -f *.o *.pb.cc *.pb.h greeter_client greeter_server greeter_async_client greeter_async_server
+ rm -f *.o *.pb.cc *.pb.h greeter_client greeter_server greeter_async_client greeter_async_client2 greeter_async_server
# The following is to test your system and ensure a smoother experience.
diff --git a/examples/cpp/helloworld/greeter_async_client.cc b/examples/cpp/helloworld/greeter_async_client.cc
index 35014267fe..c1f5eb55f0 100644
--- a/examples/cpp/helloworld/greeter_async_client.cc
+++ b/examples/cpp/helloworld/greeter_async_client.cc
@@ -53,7 +53,7 @@ class GreeterClient {
explicit GreeterClient(std::shared_ptr<Channel> channel)
: stub_(Greeter::NewStub(channel)) {}
- // Assambles the client's payload, sends it and presents the response back
+ // Assembles the client's payload, sends it and presents the response back
// from the server.
std::string SayHello(const std::string& user) {
// Data we are sending to the server.
@@ -74,9 +74,9 @@ class GreeterClient {
// Storage for the status of the RPC upon completion.
Status status;
- // stub_->AsyncSayHello() perform the RPC call, returning an instance we
- // store in "rpc". Because we are using the asynchronous API, we need the
- // hold on to the "rpc" instance in order to get updates on the ongoig RPC.
+ // stub_->AsyncSayHello() performs the RPC call, returning an instance we
+ // store in "rpc". Because we are using the asynchronous API, we need to
+ // hold on to the "rpc" instance in order to get updates on the ongoing RPC.
std::unique_ptr<ClientAsyncResponseReader<HelloReply> > rpc(
stub_->AsyncSayHello(&context, request, &cq));
diff --git a/examples/cpp/helloworld/greeter_async_client2.cc b/examples/cpp/helloworld/greeter_async_client2.cc
new file mode 100644
index 0000000000..0902376074
--- /dev/null
+++ b/examples/cpp/helloworld/greeter_async_client2.cc
@@ -0,0 +1,153 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include <grpc++/grpc++.h>
+#include <thread>
+
+#include "helloworld.grpc.pb.h"
+
+using grpc::Channel;
+using grpc::ClientAsyncResponseReader;
+using grpc::ClientContext;
+using grpc::CompletionQueue;
+using grpc::Status;
+using helloworld::HelloRequest;
+using helloworld::HelloReply;
+using helloworld::Greeter;
+
+class GreeterClient {
+ public:
+ explicit GreeterClient(std::shared_ptr<Channel> channel)
+ : stub_(Greeter::NewStub(channel)) {}
+
+ // Assembles the client's payload and sends it to the server.
+ void SayHello(const std::string& user) {
+ // Data we are sending to the server.
+ HelloRequest request;
+ request.set_name(user);
+
+ // Call object to store rpc data
+ AsyncClientCall* call = new AsyncClientCall;
+
+ // stub_->AsyncSayHello() performs the RPC call, returning an instance to
+ // store in "call". Because we are using the asynchronous API, we need to
+ // hold on to the "call" instance in order to get updates on the ongoing RPC.
+ call->response_reader = stub_->AsyncSayHello(&call->context, request, &cq_);
+
+
+ // Request that, upon completion of the RPC, "reply" be updated with the
+ // server's response; "status" with the indication of whether the operation
+ // was successful. Tag the request with the memory address of the call object.
+ call->response_reader->Finish(&call->reply, &call->status, (void*)call);
+
+ }
+
+ // Loop while listening for completed responses.
+ // Prints out the response from the server.
+ void AsyncCompleteRpc() {
+ void* got_tag;
+ bool ok = false;
+
+ // Block until the next result is available in the completion queue "cq".
+ while (cq_.Next(&got_tag, &ok)) {
+ // The tag in this example is the memory location of the call object
+ AsyncClientCall* call = static_cast<AsyncClientCall*>(got_tag);
+
+ // Verify that the request was completed successfully. Note that "ok"
+ // corresponds solely to the request for updates introduced by Finish().
+ GPR_ASSERT(ok);
+
+ if (call->status.ok())
+ std::cout << "Greeter received: " << call->reply.message() << std::endl;
+ else
+ std::cout << "RPC failed" << std::endl;
+
+ // Once we're complete, deallocate the call object.
+ delete call;
+ }
+ }
+
+ private:
+
+ // struct for keeping state and data information
+ struct AsyncClientCall {
+ // Container for the data we expect from the server.
+ HelloReply reply;
+
+ // Context for the client. It could be used to convey extra information to
+ // the server and/or tweak certain RPC behaviors.
+ ClientContext context;
+
+ // Storage for the status of the RPC upon completion.
+ Status status;
+
+
+ std::unique_ptr<ClientAsyncResponseReader<HelloReply>> response_reader;
+ };
+
+ // Out of the passed in Channel comes the stub, stored here, our view of the
+ // server's exposed services.
+ std::unique_ptr<Greeter::Stub> stub_;
+
+ // The producer-consumer queue we use to communicate asynchronously with the
+ // gRPC runtime.
+ CompletionQueue cq_;
+};
+
+int main(int argc, char** argv) {
+
+
+ // Instantiate the client. It requires a channel, out of which the actual RPCs
+ // are created. This channel models a connection to an endpoint (in this case,
+ // localhost at port 50051). We indicate that the channel isn't authenticated
+ // (use of InsecureChannelCredentials()).
+ GreeterClient greeter(grpc::CreateChannel(
+ "localhost:50051", grpc::InsecureChannelCredentials()));
+
+ // Spawn reader thread that loops indefinitely
+ std::thread thread_ = std::thread(&GreeterClient::AsyncCompleteRpc, &greeter);
+
+ for (int i = 0; i < 100; i++) {
+ std::string user("world " + std::to_string(i));
+ greeter.SayHello(user); // The actual RPC call!
+ }
+
+ std::cout << "Press control-c to quit" << std::endl << std::endl;
+ thread_.join(); //blocks forever
+
+ return 0;
+}
diff --git a/examples/cpp/route_guide/Makefile b/examples/cpp/route_guide/Makefile
index 0fbb0a8929..11f2a00cc8 100644
--- a/examples/cpp/route_guide/Makefile
+++ b/examples/cpp/route_guide/Makefile
@@ -32,7 +32,7 @@
CXX = g++
CPPFLAGS += -I/usr/local/include -pthread
CXXFLAGS += -std=c++11
-LDFLAGS += -L/usr/local/lib -lgrpc++_unsecure -lgrpc -lprotobuf -lpthread -ldl
+LDFLAGS += -L/usr/local/lib `pkg-config --libs grpc++` -lprotobuf -lpthread -ldl
PROTOC = protoc
GRPC_CPP_PLUGIN = grpc_cpp_plugin
GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)`
diff --git a/examples/objective-c/route_guide/ViewControllers.m b/examples/objective-c/route_guide/ViewControllers.m
index 0b1a1cf482..e32978240b 100644
--- a/examples/objective-c/route_guide/ViewControllers.m
+++ b/examples/objective-c/route_guide/ViewControllers.m
@@ -80,19 +80,14 @@ static NSString * const kHostAddress = @"localhost:50051";
* Run the getFeature demo. Calls getFeature with a point known to have a feature and a point known
* not to have a feature.
*/
-@interface GetFeatureViewController : UIViewController
+@interface GetFeatureViewController : UIViewController {
+ RTGRouteGuide *service;
+}
@end
@implementation GetFeatureViewController
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- // This only needs to be done once per host, before creating service objects for that host.
- [GRPCCall useInsecureConnectionsForHost:kHostAddress];
-
- RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
+- (void)execRequest {
void (^handler)(RTGFeature *response, NSError *error) = ^(RTGFeature *response, NSError *error) {
if (response.name.length) {
NSLog(@"Found feature called %@ at %@.", response.name, response.location);
@@ -111,6 +106,19 @@ static NSString * const kHostAddress = @"localhost:50051";
[service getFeatureWithRequest:[RTGPoint message] handler:handler];
}
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ // This only needs to be done once per host, before creating service objects for that host.
+ [GRPCCall useInsecureConnectionsForHost:kHostAddress];
+
+ service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+ [self execRequest];
+}
+
@end
@@ -120,16 +128,15 @@ static NSString * const kHostAddress = @"localhost:50051";
* Run the listFeatures demo. Calls listFeatures with a rectangle containing all of the features in
* the pre-generated database. Prints each response as it comes in.
*/
-@interface ListFeaturesViewController : UIViewController
+@interface ListFeaturesViewController : UIViewController {
+ RTGRouteGuide *service;
+}
+
@end
@implementation ListFeaturesViewController
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
+- (void)execRequest {
RTGRectangle *rectangle = [RTGRectangle message];
rectangle.lo.latitude = 405E6;
rectangle.lo.longitude = -750E6;
@@ -147,6 +154,16 @@ static NSString * const kHostAddress = @"localhost:50051";
}];
}
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+ [self execRequest];
+}
+
@end
@@ -157,14 +174,15 @@ static NSString * const kHostAddress = @"localhost:50051";
* database with a variable delay in between. Prints the statistics when they are sent from the
* server.
*/
-@interface RecordRouteViewController : UIViewController
+@interface RecordRouteViewController : UIViewController {
+ RTGRouteGuide *service;
+}
+
@end
@implementation RecordRouteViewController
-- (void)viewDidLoad {
- [super viewDidLoad];
-
+- (void)execRequest {
NSString *dataBasePath = [NSBundle.mainBundle pathForResource:@"route_guide_db"
ofType:@"json"];
NSData *dataBaseContent = [NSData dataWithContentsOfFile:dataBasePath];
@@ -178,8 +196,6 @@ static NSString * const kHostAddress = @"localhost:50051";
return location;
}];
- RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
[service recordRouteWithRequestsWriter:locations
handler:^(RTGRouteSummary *response, NSError *error) {
if (response) {
@@ -193,6 +209,16 @@ static NSString * const kHostAddress = @"localhost:50051";
}];
}
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+ [self execRequest];
+}
+
@end
@@ -202,14 +228,15 @@ static NSString * const kHostAddress = @"localhost:50051";
* Run the routeChat demo. Send some chat messages, and print any chat messages that are sent from
* the server.
*/
-@interface RouteChatViewController : UIViewController
+@interface RouteChatViewController : UIViewController {
+ RTGRouteGuide *service;
+}
+
@end
@implementation RouteChatViewController
-- (void)viewDidLoad {
- [super viewDidLoad];
-
+- (void)execRequest {
NSArray *notes = @[[RTGRouteNote noteWithMessage:@"First message" latitude:0 longitude:0],
[RTGRouteNote noteWithMessage:@"Second message" latitude:0 longitude:1],
[RTGRouteNote noteWithMessage:@"Third message" latitude:1 longitude:0],
@@ -219,8 +246,6 @@ static NSString * const kHostAddress = @"localhost:50051";
return note;
}];
- RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
[service routeChatWithRequestsWriter:notesWriter
eventHandler:^(BOOL done, RTGRouteNote *note, NSError *error) {
if (note) {
@@ -234,4 +259,14 @@ static NSString * const kHostAddress = @"localhost:50051";
}];
}
+- (void)viewDidLoad {
+ [super viewDidLoad];
+
+ service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+ [self execRequest];
+}
+
@end
diff --git a/examples/python/README.md b/examples/python/README.md
index b57da8f642..9992baa842 100644
--- a/examples/python/README.md
+++ b/examples/python/README.md
@@ -8,12 +8,19 @@ For this sample, we've already generated the server and client stubs from
Install gRPC:
- ```sh
+```sh
$ pip install grpcio
```
Or, to install it system wide:
```sh
- $ sudo pip install grpcio
+ $ sudo pip install grpcio
+```
+
+If you're on Windows, make sure you installed the `pip.exe` component when you
+installed Python. Invoke as above but with `pip.exe` instead of `pip` (you may
+also need to invoke from a `cmd.exe` ran as administrator):
+```sh
+ $ pip.exe install grpcio
```
Download the example
diff --git a/examples/python/helloworld/helloworld_pb2.py b/examples/python/helloworld/helloworld_pb2.py
index 1b2674e4c8..1ee80e4034 100644
--- a/examples/python/helloworld/helloworld_pb2.py
+++ b/examples/python/helloworld/helloworld_pb2.py
@@ -1,6 +1,8 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: helloworld.proto
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -17,7 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
name='helloworld.proto',
package='helloworld',
syntax='proto3',
- serialized_pb=b'\n\x10helloworld.proto\x12\nhelloworld\"\x1c\n\x0cHelloRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1d\n\nHelloReply\x12\x0f\n\x07message\x18\x01 \x01(\t2I\n\x07Greeter\x12>\n\x08SayHello\x12\x18.helloworld.HelloRequest\x1a\x16.helloworld.HelloReply\"\x00\x42\x18\n\x10io.grpc.examples\xa2\x02\x03HLWb\x06proto3'
+ serialized_pb=_b('\n\x10helloworld.proto\x12\nhelloworld\"\x1c\n\x0cHelloRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1d\n\nHelloReply\x12\x0f\n\x07message\x18\x01 \x01(\t2I\n\x07Greeter\x12>\n\x08SayHello\x12\x18.helloworld.HelloRequest\x1a\x16.helloworld.HelloReply\"\x00\x42\x36\n\x1bio.grpc.examples.helloworldB\x0fHelloWorldProtoP\x01\xa2\x02\x03HLWb\x06proto3')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
@@ -34,7 +36,7 @@ _HELLOREQUEST = _descriptor.Descriptor(
_descriptor.FieldDescriptor(
name='name', full_name='helloworld.HelloRequest.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=b"".decode('utf-8'),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -65,7 +67,7 @@ _HELLOREPLY = _descriptor.Descriptor(
_descriptor.FieldDescriptor(
name='message', full_name='helloworld.HelloReply.message', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=b"".decode('utf-8'),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -104,69 +106,28 @@ _sym_db.RegisterMessage(HelloReply)
DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), b'\n\020io.grpc.examples\242\002\003HLW')
+DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\033io.grpc.examples.helloworldB\017HelloWorldProtoP\001\242\002\003HLW'))
import abc
+import six
from grpc.beta import implementations as beta_implementations
-from grpc.early_adopter import implementations as early_adopter_implementations
-from grpc.framework.alpha import utilities as alpha_utilities
+from grpc.beta import interfaces as beta_interfaces
from grpc.framework.common import cardinality
from grpc.framework.interfaces.face import utilities as face_utilities
-class EarlyAdopterGreeterServicer(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
- def SayHello(self, request, context):
- raise NotImplementedError()
-class EarlyAdopterGreeterServer(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
- def start(self):
- raise NotImplementedError()
- @abc.abstractmethod
- def stop(self):
- raise NotImplementedError()
-class EarlyAdopterGreeterStub(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
- def SayHello(self, request):
- raise NotImplementedError()
- SayHello.async = None
-def early_adopter_create_Greeter_server(servicer, port, private_key=None, certificate_chain=None):
- import helloworld_pb2
- import helloworld_pb2
- method_service_descriptions = {
- "SayHello": alpha_utilities.unary_unary_service_description(
- servicer.SayHello,
- helloworld_pb2.HelloRequest.FromString,
- helloworld_pb2.HelloReply.SerializeToString,
- ),
- }
- return early_adopter_implementations.server("helloworld.Greeter", method_service_descriptions, port, private_key=private_key, certificate_chain=certificate_chain)
-def early_adopter_create_Greeter_stub(host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, server_host_override=None):
- import helloworld_pb2
- import helloworld_pb2
- method_invocation_descriptions = {
- "SayHello": alpha_utilities.unary_unary_invocation_description(
- helloworld_pb2.HelloRequest.SerializeToString,
- helloworld_pb2.HelloReply.FromString,
- ),
- }
- return early_adopter_implementations.stub("helloworld.Greeter", method_invocation_descriptions, host, port, metadata_transformer=metadata_transformer, secure=secure, root_certificates=root_certificates, private_key=private_key, certificate_chain=certificate_chain, server_host_override=server_host_override)
class BetaGreeterServicer(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
+ """The greeting service definition.
+ """
def SayHello(self, request, context):
- raise NotImplementedError()
+ """Sends a greeting
+ """
+ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
class BetaGreeterStub(object):
- """The interface to which stubs will conform."""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
+ """The greeting service definition.
+ """
def SayHello(self, request, timeout):
+ """Sends a greeting
+ """
raise NotImplementedError()
SayHello.future = None
diff --git a/examples/python/route_guide/route_guide_pb2.py b/examples/python/route_guide/route_guide_pb2.py
index d4d9f8dcd5..81d5d07527 100644
--- a/examples/python/route_guide/route_guide_pb2.py
+++ b/examples/python/route_guide/route_guide_pb2.py
@@ -1,6 +1,8 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: route_guide.proto
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -17,7 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
name='route_guide.proto',
package='routeguide',
syntax='proto3',
- serialized_pb=b'\n\x11route_guide.proto\x12\nrouteguide\",\n\x05Point\x12\x10\n\x08latitude\x18\x01 \x01(\x05\x12\x11\n\tlongitude\x18\x02 \x01(\x05\"I\n\tRectangle\x12\x1d\n\x02lo\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x1d\n\x02hi\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"<\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x08location\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"A\n\tRouteNote\x12#\n\x08location\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x0f\n\x07message\x18\x02 \x01(\t\"b\n\x0cRouteSummary\x12\x13\n\x0bpoint_count\x18\x01 \x01(\x05\x12\x15\n\rfeature_count\x18\x02 \x01(\x05\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x14\n\x0c\x65lapsed_time\x18\x04 \x01(\x05\x32\x85\x02\n\nRouteGuide\x12\x36\n\nGetFeature\x12\x11.routeguide.Point\x1a\x13.routeguide.Feature\"\x00\x12>\n\x0cListFeatures\x12\x15.routeguide.Rectangle\x1a\x13.routeguide.Feature\"\x00\x30\x01\x12>\n\x0bRecordRoute\x12\x11.routeguide.Point\x1a\x18.routeguide.RouteSummary\"\x00(\x01\x12?\n\tRouteChat\x12\x15.routeguide.RouteNote\x1a\x15.routeguide.RouteNote\"\x00(\x01\x30\x01\x42\x0f\n\x07\x65x.grpc\xa2\x02\x03RTGb\x06proto3'
+ serialized_pb=_b('\n\x11route_guide.proto\x12\nrouteguide\",\n\x05Point\x12\x10\n\x08latitude\x18\x01 \x01(\x05\x12\x11\n\tlongitude\x18\x02 \x01(\x05\"I\n\tRectangle\x12\x1d\n\x02lo\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x1d\n\x02hi\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"<\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x08location\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"A\n\tRouteNote\x12#\n\x08location\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x0f\n\x07message\x18\x02 \x01(\t\"b\n\x0cRouteSummary\x12\x13\n\x0bpoint_count\x18\x01 \x01(\x05\x12\x15\n\rfeature_count\x18\x02 \x01(\x05\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x14\n\x0c\x65lapsed_time\x18\x04 \x01(\x05\x32\x85\x02\n\nRouteGuide\x12\x36\n\nGetFeature\x12\x11.routeguide.Point\x1a\x13.routeguide.Feature\"\x00\x12>\n\x0cListFeatures\x12\x15.routeguide.Rectangle\x1a\x13.routeguide.Feature\"\x00\x30\x01\x12>\n\x0bRecordRoute\x12\x11.routeguide.Point\x1a\x18.routeguide.RouteSummary\"\x00(\x01\x12?\n\tRouteChat\x12\x15.routeguide.RouteNote\x1a\x15.routeguide.RouteNote\"\x00(\x01\x30\x01\x42\x36\n\x1bio.grpc.examples.routeguideB\x0fRouteGuideProtoP\x01\xa2\x02\x03RTGb\x06proto3')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
@@ -110,7 +112,7 @@ _FEATURE = _descriptor.Descriptor(
_descriptor.FieldDescriptor(
name='name', full_name='routeguide.Feature.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=b"".decode('utf-8'),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -155,7 +157,7 @@ _ROUTENOTE = _descriptor.Descriptor(
_descriptor.FieldDescriptor(
name='message', full_name='routeguide.RouteNote.message', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=b"".decode('utf-8'),
+ has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
@@ -274,149 +276,86 @@ _sym_db.RegisterMessage(RouteSummary)
DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), b'\n\007ex.grpc\242\002\003RTG')
+DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\033io.grpc.examples.routeguideB\017RouteGuideProtoP\001\242\002\003RTG'))
import abc
+import six
from grpc.beta import implementations as beta_implementations
-from grpc.early_adopter import implementations as early_adopter_implementations
-from grpc.framework.alpha import utilities as alpha_utilities
+from grpc.beta import interfaces as beta_interfaces
from grpc.framework.common import cardinality
from grpc.framework.interfaces.face import utilities as face_utilities
-class EarlyAdopterRouteGuideServicer(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
- def GetFeature(self, request, context):
- raise NotImplementedError()
- @abc.abstractmethod
- def ListFeatures(self, request, context):
- raise NotImplementedError()
- @abc.abstractmethod
- def RecordRoute(self, request_iterator, context):
- raise NotImplementedError()
- @abc.abstractmethod
- def RouteChat(self, request_iterator, context):
- raise NotImplementedError()
-class EarlyAdopterRouteGuideServer(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
- def start(self):
- raise NotImplementedError()
- @abc.abstractmethod
- def stop(self):
- raise NotImplementedError()
-class EarlyAdopterRouteGuideStub(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
- def GetFeature(self, request):
- raise NotImplementedError()
- GetFeature.async = None
- @abc.abstractmethod
- def ListFeatures(self, request):
- raise NotImplementedError()
- ListFeatures.async = None
- @abc.abstractmethod
- def RecordRoute(self, request_iterator):
- raise NotImplementedError()
- RecordRoute.async = None
- @abc.abstractmethod
- def RouteChat(self, request_iterator):
- raise NotImplementedError()
- RouteChat.async = None
-def early_adopter_create_RouteGuide_server(servicer, port, private_key=None, certificate_chain=None):
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- method_service_descriptions = {
- "GetFeature": alpha_utilities.unary_unary_service_description(
- servicer.GetFeature,
- route_guide_pb2.Point.FromString,
- route_guide_pb2.Feature.SerializeToString,
- ),
- "ListFeatures": alpha_utilities.unary_stream_service_description(
- servicer.ListFeatures,
- route_guide_pb2.Rectangle.FromString,
- route_guide_pb2.Feature.SerializeToString,
- ),
- "RecordRoute": alpha_utilities.stream_unary_service_description(
- servicer.RecordRoute,
- route_guide_pb2.Point.FromString,
- route_guide_pb2.RouteSummary.SerializeToString,
- ),
- "RouteChat": alpha_utilities.stream_stream_service_description(
- servicer.RouteChat,
- route_guide_pb2.RouteNote.FromString,
- route_guide_pb2.RouteNote.SerializeToString,
- ),
- }
- return early_adopter_implementations.server("routeguide.RouteGuide", method_service_descriptions, port, private_key=private_key, certificate_chain=certificate_chain)
-def early_adopter_create_RouteGuide_stub(host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, server_host_override=None):
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- import route_guide_pb2
- method_invocation_descriptions = {
- "GetFeature": alpha_utilities.unary_unary_invocation_description(
- route_guide_pb2.Point.SerializeToString,
- route_guide_pb2.Feature.FromString,
- ),
- "ListFeatures": alpha_utilities.unary_stream_invocation_description(
- route_guide_pb2.Rectangle.SerializeToString,
- route_guide_pb2.Feature.FromString,
- ),
- "RecordRoute": alpha_utilities.stream_unary_invocation_description(
- route_guide_pb2.Point.SerializeToString,
- route_guide_pb2.RouteSummary.FromString,
- ),
- "RouteChat": alpha_utilities.stream_stream_invocation_description(
- route_guide_pb2.RouteNote.SerializeToString,
- route_guide_pb2.RouteNote.FromString,
- ),
- }
- return early_adopter_implementations.stub("routeguide.RouteGuide", method_invocation_descriptions, host, port, metadata_transformer=metadata_transformer, secure=secure, root_certificates=root_certificates, private_key=private_key, certificate_chain=certificate_chain, server_host_override=server_host_override)
class BetaRouteGuideServicer(object):
- """<fill me in later!>"""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
+ """Interface exported by the server.
+ """
def GetFeature(self, request, context):
- raise NotImplementedError()
- @abc.abstractmethod
+ """A simple RPC.
+
+ Obtains the feature at a given position.
+
+ A feature with an empty name is returned if there's no feature at the given
+ position.
+ """
+ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def ListFeatures(self, request, context):
- raise NotImplementedError()
- @abc.abstractmethod
+ """A server-to-client streaming RPC.
+
+ Obtains the Features available within the given Rectangle. Results are
+ streamed rather than returned at once (e.g. in a response message with a
+ repeated field), as the rectangle may cover a large area and contain a
+ huge number of features.
+ """
+ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def RecordRoute(self, request_iterator, context):
- raise NotImplementedError()
- @abc.abstractmethod
+ """A client-to-server streaming RPC.
+
+ Accepts a stream of Points on a route being traversed, returning a
+ RouteSummary when traversal is completed.
+ """
+ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def RouteChat(self, request_iterator, context):
- raise NotImplementedError()
+ """A Bidirectional streaming RPC.
+
+ Accepts a stream of RouteNotes sent while a route is being traversed,
+ while receiving other RouteNotes (e.g. from other users).
+ """
+ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
class BetaRouteGuideStub(object):
- """The interface to which stubs will conform."""
- __metaclass__ = abc.ABCMeta
- @abc.abstractmethod
+ """Interface exported by the server.
+ """
def GetFeature(self, request, timeout):
+ """A simple RPC.
+
+ Obtains the feature at a given position.
+
+ A feature with an empty name is returned if there's no feature at the given
+ position.
+ """
raise NotImplementedError()
GetFeature.future = None
- @abc.abstractmethod
def ListFeatures(self, request, timeout):
+ """A server-to-client streaming RPC.
+
+ Obtains the Features available within the given Rectangle. Results are
+ streamed rather than returned at once (e.g. in a response message with a
+ repeated field), as the rectangle may cover a large area and contain a
+ huge number of features.
+ """
raise NotImplementedError()
- @abc.abstractmethod
def RecordRoute(self, request_iterator, timeout):
+ """A client-to-server streaming RPC.
+
+ Accepts a stream of Points on a route being traversed, returning a
+ RouteSummary when traversal is completed.
+ """
raise NotImplementedError()
RecordRoute.future = None
- @abc.abstractmethod
def RouteChat(self, request_iterator, timeout):
+ """A Bidirectional streaming RPC.
+
+ Accepts a stream of RouteNotes sent while a route is being traversed,
+ while receiving other RouteNotes (e.g. from other users).
+ """
raise NotImplementedError()
def beta_create_RouteGuide_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
diff --git a/gRPC.podspec b/gRPC.podspec
index 6f631c1c55..393733209d 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -36,7 +36,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC'
- version = '0.12.0'
+ version = '0.14.0'
s.version = version
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'http://www.grpc.io'
@@ -44,7 +44,8 @@ Pod::Spec.new do |s|
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' }
s.source = { :git => 'https://github.com/grpc/grpc.git',
- :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" }
+ :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}",
+ :submodules => true }
s.ios.deployment_target = '7.1'
@@ -144,6 +145,7 @@ Pod::Spec.new do |s|
'src/core/lib/support/stack_lockfree.c',
'src/core/lib/support/string.c',
'src/core/lib/support/string_posix.c',
+ 'src/core/lib/support/string_util_win32.c',
'src/core/lib/support/string_win32.c',
'src/core/lib/support/subprocess_posix.c',
'src/core/lib/support/subprocess_windows.c',
@@ -158,6 +160,7 @@ Pod::Spec.new do |s|
'src/core/lib/support/time_precise.c',
'src/core/lib/support/time_win32.c',
'src/core/lib/support/tls_pthread.c',
+ 'src/core/lib/support/tmpfile_msys.c',
'src/core/lib/support/tmpfile_posix.c',
'src/core/lib/support/tmpfile_win32.c',
'src/core/lib/support/wrap_memcpy.c',
@@ -303,6 +306,7 @@ Pod::Spec.new do |s|
'include/grpc/grpc.h',
'include/grpc/status.h',
'include/grpc/impl/codegen/byte_buffer.h',
+ 'include/grpc/impl/codegen/byte_buffer_reader.h',
'include/grpc/impl/codegen/compression_types.h',
'include/grpc/impl/codegen/connectivity_state.h',
'include/grpc/impl/codegen/grpc_types.h',
@@ -652,7 +656,7 @@ Pod::Spec.new do |s|
ss.requires_arc = false
ss.libraries = 'z'
- ss.dependency 'BoringSSL', '~> 2.0'
+ ss.dependency 'BoringSSL', '~> 3.0'
# ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
end
diff --git a/grpc.def b/grpc.def
index 6542c06a4b..61948ed1b8 100644
--- a/grpc.def
+++ b/grpc.def
@@ -86,6 +86,7 @@ EXPORTS
grpc_header_key_is_legal
grpc_header_nonbin_value_is_legal
grpc_is_binary_header
+ grpc_call_error_to_string
grpc_auth_property_iterator_next
grpc_auth_context_property_iterator
grpc_auth_context_peer_identity
diff --git a/grpc.gemspec b/grpc.gemspec
index 1512da6b56..240ea1ca1f 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -24,10 +24,6 @@ Gem::Specification.new do |s|
s.files += Dir.glob('include/grpc/**/*')
s.test_files = Dir.glob('src/ruby/spec/**/*')
s.bindir = 'src/ruby/bin'
- %w(math noproto).each do |b|
- s.executables += ["#{b}_client.rb", "#{b}_server.rb"]
- end
- s.executables += %w(grpc_ruby_interop_client grpc_ruby_interop_server)
s.require_paths = %w( src/ruby/bin src/ruby/lib src/ruby/pb )
s.platform = Gem::Platform::RUBY
@@ -128,6 +124,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/support/stack_lockfree.c )
s.files += %w( src/core/lib/support/string.c )
s.files += %w( src/core/lib/support/string_posix.c )
+ s.files += %w( src/core/lib/support/string_util_win32.c )
s.files += %w( src/core/lib/support/string_win32.c )
s.files += %w( src/core/lib/support/subprocess_posix.c )
s.files += %w( src/core/lib/support/subprocess_windows.c )
@@ -142,6 +139,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/support/time_precise.c )
s.files += %w( src/core/lib/support/time_win32.c )
s.files += %w( src/core/lib/support/tls_pthread.c )
+ s.files += %w( src/core/lib/support/tmpfile_msys.c )
s.files += %w( src/core/lib/support/tmpfile_posix.c )
s.files += %w( src/core/lib/support/tmpfile_win32.c )
s.files += %w( src/core/lib/support/wrap_memcpy.c )
@@ -151,6 +149,7 @@ Gem::Specification.new do |s|
s.files += %w( include/grpc/grpc.h )
s.files += %w( include/grpc/status.h )
s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
+ s.files += %w( include/grpc/impl/codegen/byte_buffer_reader.h )
s.files += %w( include/grpc/impl/codegen/compression_types.h )
s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
s.files += %w( include/grpc/impl/codegen/grpc_types.h )
diff --git a/include/grpc++/impl/codegen/call.h b/include/grpc++/impl/codegen/call.h
index aea1a6acec..d081b7d9c5 100644
--- a/include/grpc++/impl/codegen/call.h
+++ b/include/grpc++/impl/codegen/call.h
@@ -281,10 +281,9 @@ class CallOpRecvMessage {
if (message_ == nullptr) return;
if (recv_buf_) {
if (*status) {
- got_message = true;
- *status = SerializationTraits<R>::Deserialize(recv_buf_, message_,
- max_message_size)
- .ok();
+ got_message = *status = SerializationTraits<R>::Deserialize(
+ recv_buf_, message_, max_message_size)
+ .ok();
} else {
got_message = false;
g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_);
diff --git a/include/grpc++/impl/codegen/core_codegen_interface.h b/include/grpc++/impl/codegen/core_codegen_interface.h
index 16424bab35..aa9013c4ce 100644
--- a/include/grpc++/impl/codegen/core_codegen_interface.h
+++ b/include/grpc++/impl/codegen/core_codegen_interface.h
@@ -49,18 +49,6 @@ namespace grpc {
/// \warning This interface should be considered internal and private.
class CoreCodegenInterface {
public:
- // Serialize the msg into a buffer created inside the function. The caller
- // should destroy the returned buffer when done with it. If serialization
- // fails,
- // false is returned and buffer is left unchanged.
- virtual Status SerializeProto(const grpc::protobuf::Message& msg,
- grpc_byte_buffer** buffer) = 0;
-
- // The caller keeps ownership of buffer and msg.
- virtual Status DeserializeProto(grpc_byte_buffer* buffer,
- grpc::protobuf::Message* msg,
- int max_message_size) = 0;
-
/// Upon a failed assertion, log the error.
virtual void assert_fail(const char* failed_assertion) = 0;
@@ -76,9 +64,29 @@ class CoreCodegenInterface {
virtual void gpr_free(void* p) = 0;
virtual void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) = 0;
+
+ virtual void grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
+ grpc_byte_buffer* buffer) = 0;
+ virtual void grpc_byte_buffer_reader_destroy(
+ grpc_byte_buffer_reader* reader) = 0;
+ virtual int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
+ gpr_slice* slice) = 0;
+
+ virtual grpc_byte_buffer* grpc_raw_byte_buffer_create(gpr_slice* slice,
+ size_t nslices) = 0;
+
+ virtual gpr_slice gpr_slice_malloc(size_t length) = 0;
+ virtual void gpr_slice_unref(gpr_slice slice) = 0;
+ virtual gpr_slice gpr_slice_split_tail(gpr_slice* s, size_t split) = 0;
+ virtual void gpr_slice_buffer_add(gpr_slice_buffer* sb, gpr_slice slice) = 0;
+ virtual void gpr_slice_buffer_pop(gpr_slice_buffer* sb) = 0;
+
virtual void grpc_metadata_array_init(grpc_metadata_array* array) = 0;
virtual void grpc_metadata_array_destroy(grpc_metadata_array* array) = 0;
+ virtual const Status& ok() = 0;
+ virtual const Status& cancelled() = 0;
+
virtual gpr_timespec gpr_inf_future(gpr_clock_type type) = 0;
};
diff --git a/include/grpc++/impl/codegen/proto_utils.h b/include/grpc++/impl/codegen/proto_utils.h
index 2aaa3c3b30..d044ddc642 100644
--- a/include/grpc++/impl/codegen/proto_utils.h
+++ b/include/grpc++/impl/codegen/proto_utils.h
@@ -41,26 +41,179 @@
#include <grpc++/impl/codegen/serialization_traits.h>
#include <grpc++/impl/codegen/status.h>
#include <grpc/impl/codegen/byte_buffer.h>
+#include <grpc/impl/codegen/byte_buffer_reader.h>
#include <grpc/impl/codegen/log.h>
+#include <grpc/impl/codegen/slice.h>
namespace grpc {
extern CoreCodegenInterface* g_core_codegen_interface;
+namespace {
+
+const int kGrpcBufferWriterMaxBufferLength = 8192;
+
+class GrpcBufferWriter GRPC_FINAL
+ : public ::grpc::protobuf::io::ZeroCopyOutputStream {
+ public:
+ explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
+ : block_size_(block_size), byte_count_(0), have_backup_(false) {
+ *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(NULL, 0);
+ slice_buffer_ = &(*bp)->data.raw.slice_buffer;
+ }
+
+ ~GrpcBufferWriter() GRPC_OVERRIDE {
+ if (have_backup_) {
+ g_core_codegen_interface->gpr_slice_unref(backup_slice_);
+ }
+ }
+
+ bool Next(void** data, int* size) GRPC_OVERRIDE {
+ if (have_backup_) {
+ slice_ = backup_slice_;
+ have_backup_ = false;
+ } else {
+ slice_ = g_core_codegen_interface->gpr_slice_malloc(block_size_);
+ }
+ *data = GPR_SLICE_START_PTR(slice_);
+ // On win x64, int is only 32bit
+ GPR_CODEGEN_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
+ byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
+ g_core_codegen_interface->gpr_slice_buffer_add(slice_buffer_, slice_);
+ return true;
+ }
+
+ void BackUp(int count) GRPC_OVERRIDE {
+ g_core_codegen_interface->gpr_slice_buffer_pop(slice_buffer_);
+ if (count == block_size_) {
+ backup_slice_ = slice_;
+ } else {
+ backup_slice_ = g_core_codegen_interface->gpr_slice_split_tail(
+ &slice_, GPR_SLICE_LENGTH(slice_) - count);
+ g_core_codegen_interface->gpr_slice_buffer_add(slice_buffer_, slice_);
+ }
+ have_backup_ = true;
+ byte_count_ -= count;
+ }
+
+ grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE { return byte_count_; }
+
+ private:
+ const int block_size_;
+ int64_t byte_count_;
+ gpr_slice_buffer* slice_buffer_;
+ bool have_backup_;
+ gpr_slice backup_slice_;
+ gpr_slice slice_;
+};
+
+class GrpcBufferReader GRPC_FINAL
+ : public ::grpc::protobuf::io::ZeroCopyInputStream {
+ public:
+ explicit GrpcBufferReader(grpc_byte_buffer* buffer)
+ : byte_count_(0), backup_count_(0) {
+ g_core_codegen_interface->grpc_byte_buffer_reader_init(&reader_, buffer);
+ }
+ ~GrpcBufferReader() GRPC_OVERRIDE {
+ g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_);
+ }
+
+ bool Next(const void** data, int* size) GRPC_OVERRIDE {
+ if (backup_count_ > 0) {
+ *data = GPR_SLICE_START_PTR(slice_) + GPR_SLICE_LENGTH(slice_) -
+ backup_count_;
+ GPR_CODEGEN_ASSERT(backup_count_ <= INT_MAX);
+ *size = (int)backup_count_;
+ backup_count_ = 0;
+ return true;
+ }
+ if (!g_core_codegen_interface->grpc_byte_buffer_reader_next(&reader_,
+ &slice_)) {
+ return false;
+ }
+ g_core_codegen_interface->gpr_slice_unref(slice_);
+ *data = GPR_SLICE_START_PTR(slice_);
+ // On win x64, int is only 32bit
+ GPR_CODEGEN_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
+ byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
+ return true;
+ }
+
+ void BackUp(int count) GRPC_OVERRIDE { backup_count_ = count; }
+
+ bool Skip(int count) GRPC_OVERRIDE {
+ const void* data;
+ int size;
+ while (Next(&data, &size)) {
+ if (size >= count) {
+ BackUp(size - count);
+ return true;
+ }
+ // size < count;
+ count -= size;
+ }
+ // error or we have too large count;
+ return false;
+ }
+
+ grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE {
+ return byte_count_ - backup_count_;
+ }
+
+ private:
+ int64_t byte_count_;
+ int64_t backup_count_;
+ grpc_byte_buffer_reader reader_;
+ gpr_slice slice_;
+};
+} // namespace
+
template <class T>
class SerializationTraits<T, typename std::enable_if<std::is_base_of<
grpc::protobuf::Message, T>::value>::type> {
public:
static Status Serialize(const grpc::protobuf::Message& msg,
- grpc_byte_buffer** buffer, bool* own_buffer) {
+ grpc_byte_buffer** bp, bool* own_buffer) {
*own_buffer = true;
- return g_core_codegen_interface->SerializeProto(msg, buffer);
+ int byte_size = msg.ByteSize();
+ if (byte_size <= kGrpcBufferWriterMaxBufferLength) {
+ gpr_slice slice = g_core_codegen_interface->gpr_slice_malloc(byte_size);
+ GPR_CODEGEN_ASSERT(
+ GPR_SLICE_END_PTR(slice) ==
+ msg.SerializeWithCachedSizesToArray(GPR_SLICE_START_PTR(slice)));
+ *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1);
+ g_core_codegen_interface->gpr_slice_unref(slice);
+ return g_core_codegen_interface->ok();
+ } else {
+ GrpcBufferWriter writer(bp, kGrpcBufferWriterMaxBufferLength);
+ return msg.SerializeToZeroCopyStream(&writer)
+ ? g_core_codegen_interface->ok()
+ : Status(StatusCode::INTERNAL, "Failed to serialize message");
+ }
}
+
static Status Deserialize(grpc_byte_buffer* buffer,
grpc::protobuf::Message* msg,
int max_message_size) {
- return g_core_codegen_interface->DeserializeProto(buffer, msg,
- max_message_size);
+ if (buffer == nullptr) {
+ return Status(StatusCode::INTERNAL, "No payload");
+ }
+ Status result = g_core_codegen_interface->ok();
+ {
+ GrpcBufferReader reader(buffer);
+ ::grpc::protobuf::io::CodedInputStream decoder(&reader);
+ if (max_message_size > 0) {
+ decoder.SetTotalBytesLimit(max_message_size, max_message_size);
+ }
+ if (!msg->ParseFromCodedStream(&decoder)) {
+ result = Status(StatusCode::INTERNAL, msg->InitializationErrorString());
+ }
+ if (!decoder.ConsumedEntireMessage()) {
+ result = Status(StatusCode::INTERNAL, "Did not read entire message");
+ }
+ }
+ g_core_codegen_interface->grpc_byte_buffer_destroy(buffer);
+ return result;
}
};
diff --git a/include/grpc/byte_buffer_reader.h b/include/grpc/byte_buffer_reader.h
index 9a1c6178ab..e95bf2f80d 100644
--- a/include/grpc/byte_buffer_reader.h
+++ b/include/grpc/byte_buffer_reader.h
@@ -34,25 +34,6 @@
#ifndef GRPC_BYTE_BUFFER_READER_H
#define GRPC_BYTE_BUFFER_READER_H
-#include <grpc/byte_buffer.h>
-#include <grpc/grpc.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct grpc_byte_buffer_reader {
- grpc_byte_buffer *buffer_in;
- grpc_byte_buffer *buffer_out;
- /* Different current objects correspond to different types of byte buffers */
- union {
- /* Index into a slice buffer's array of slices */
- unsigned index;
- } current;
-};
-
-#ifdef __cplusplus
-}
-#endif
+#include <grpc/impl/codegen/byte_buffer_reader.h>
#endif /* GRPC_BYTE_BUFFER_READER_H */
diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h
index 5c868aece3..0ca28c0fef 100644
--- a/include/grpc/grpc.h
+++ b/include/grpc/grpc.h
@@ -384,6 +384,9 @@ GRPCAPI int grpc_header_nonbin_value_is_legal(const char *value, size_t length);
/** Check whether a metadata key corresponds to a binary value */
GRPCAPI int grpc_is_binary_header(const char *key, size_t length);
+/** Convert grpc_call_error values to a string */
+GRPCAPI const char *grpc_call_error_to_string(grpc_call_error error);
+
#ifdef __cplusplus
}
#endif
diff --git a/include/grpc/impl/codegen/byte_buffer_reader.h b/include/grpc/impl/codegen/byte_buffer_reader.h
new file mode 100644
index 0000000000..10c382924e
--- /dev/null
+++ b/include/grpc/impl/codegen/byte_buffer_reader.h
@@ -0,0 +1,57 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H
+#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H
+
+#include <grpc/impl/codegen/byte_buffer.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct grpc_byte_buffer_reader {
+ grpc_byte_buffer *buffer_in;
+ grpc_byte_buffer *buffer_out;
+ /* Different current objects correspond to different types of byte buffers */
+ union {
+ /* Index into a slice buffer's array of slices */
+ unsigned index;
+ } current;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H */
diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h
index 4c7373006b..af3d0c2191 100644
--- a/include/grpc/impl/codegen/grpc_types.h
+++ b/include/grpc/impl/codegen/grpc_types.h
@@ -152,6 +152,8 @@ typedef struct {
channel). If this parameter is specified and the underlying is not an SSL
channel, it will just be ignored. */
#define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG "grpc.ssl_target_name_override"
+/* Maximum metadata size */
+#define GRPC_ARG_MAX_METADATA_SIZE "grpc.max_metadata_size"
/** Result of a grpc call. If the caller satisfies the prerequisites of a
particular operation, the grpc_call_error returned will be GRPC_CALL_OK.
@@ -307,7 +309,9 @@ typedef enum {
GRPC_OP_RECV_STATUS_ON_CLIENT,
/** Receive close on the server: one and only one must be made on the
server.
- This op completes after the close has been received by the server. */
+ This op completes after the close has been received by the server.
+ This operation always succeeds, meaning ops paired with this operation
+ will also appear to succeed, even though they may not have. */
GRPC_OP_RECV_CLOSE_ON_SERVER
} grpc_op_type;
diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index 3242f07599..d2d9ac7808 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -82,28 +82,31 @@
things. */
#if !defined(GPR_NO_AUTODETECT_PLATFORM)
+#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
#if defined(_WIN64) || defined(WIN64)
-#define GPR_PLATFORM_STRING "windows"
-#define GPR_WIN32 1
#define GPR_ARCH_64 1
-#define GPR_GETPID_IN_PROCESS_H 1
-#define GPR_WINSOCK_SOCKET 1
-#define GPR_WINDOWS_SUBPROCESS 1
-#ifdef __GNUC__
-#define GPR_GCC_ATOMIC 1
-#define GPR_GCC_TLS 1
#else
-#define GPR_WIN32_ATOMIC 1
-#define GPR_MSVC_TLS 1
+#define GPR_ARCH_32 1
#endif
-#define GPR_WINDOWS_CRASH_HANDLER 1
-#elif defined(_WIN32) || defined(WIN32)
#define GPR_PLATFORM_STRING "windows"
-#define GPR_ARCH_32 1
#define GPR_WIN32 1
-#define GPR_GETPID_IN_PROCESS_H 1
#define GPR_WINSOCK_SOCKET 1
#define GPR_WINDOWS_SUBPROCESS 1
+#define GPR_WIN32_ENV
+#ifdef __MSYS__
+#define GPR_GETPID_IN_UNISTD_H 1
+#define GPR_MSYS_TMPFILE
+#define GPR_POSIX_LOG
+#define GPR_POSIX_STRING
+#define GPR_POSIX_TIME
+#else
+#define GPR_GETPID_IN_PROCESS_H 1
+#define GPR_WIN32_TMPFILE
+#define GPR_WIN32_LOG
+#define GPR_WINDOWS_CRASH_HANDLER 1
+#define GPR_WIN32_STRING
+#define GPR_WIN32_TIME
+#endif
#ifdef __GNUC__
#define GPR_GCC_ATOMIC 1
#define GPR_GCC_TLS 1
@@ -111,7 +114,38 @@
#define GPR_WIN32_ATOMIC 1
#define GPR_MSVC_TLS 1
#endif
-#define GPR_WINDOWS_CRASH_HANDLER 1
+#elif defined(GPR_MANYLINUX1)
+// TODO(atash): manylinux1 is just another __linux__ but with ancient
+// libraries; it should be integrated with the `__linux__` definitions below.
+#define GPR_PLATFORM_STRING "manylinux"
+#define GPR_POSIX_CRASH_HANDLER 1
+#define GPR_CPU_LINUX 1
+#define GPR_GCC_ATOMIC 1
+#define GPR_GCC_TLS 1
+#define GPR_LINUX 1
+#define GPR_LINUX_LOG 1
+#define GPR_POSIX_SOCKET 1
+#define GPR_POSIX_WAKEUP_FD 1
+#define GPR_POSIX_SOCKETADDR 1
+#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
+#define GPR_POSIX_SOCKETUTILS 1
+#define GPR_HAVE_UNIX_SOCKET 1
+#define GPR_HAVE_IP_PKTINFO 1
+#define GPR_HAVE_IPV6_RECVPKTINFO 1
+#define GPR_LINUX_ENV 1
+#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STRING 1
+#define GPR_POSIX_SUBPROCESS 1
+#define GPR_POSIX_SYNC 1
+#define GPR_POSIX_TIME 1
+#define GPR_GETPID_IN_UNISTD_H 1
+#define GPR_HAVE_MSG_NOSIGNAL 1
+#ifdef _LP64
+#define GPR_ARCH_64 1
+#else /* _LP64 */
+#define GPR_ARCH_32 1
+#endif /* _LP64 */
#elif defined(ANDROID) || defined(__ANDROID__)
#define GPR_PLATFORM_STRING "android"
#define GPR_ANDROID 1
@@ -127,6 +161,8 @@
#define GPR_POSIX_SOCKETUTILS 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_LOG
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
@@ -153,6 +189,7 @@
#define GPR_GCC_ATOMIC 1
#define GPR_GCC_TLS 1
#define GPR_LINUX 1
+#define GPR_LINUX_LOG
#define GPR_LINUX_MULTIPOLL_WITH_EPOLL 1
#define GPR_POSIX_WAKEUP_FD 1
#define GPR_POSIX_SOCKET 1
@@ -176,6 +213,7 @@
#define GPR_POSIX_SOCKETUTILS
#endif
#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
@@ -214,6 +252,7 @@
#define GPR_POSIX_SOCKETUTILS 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
@@ -244,6 +283,7 @@
#define GPR_POSIX_SOCKETUTILS 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
@@ -281,6 +321,7 @@
#define GPR_POSIX_SOCKETUTILS 1
#define GPR_POSIX_ENV 1
#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1
#define GPR_POSIX_SYNC 1
diff --git a/include/grpc/impl/codegen/slice_buffer.h b/include/grpc/impl/codegen/slice_buffer.h
index 8ca51baa47..7858021600 100644
--- a/include/grpc/impl/codegen/slice_buffer.h
+++ b/include/grpc/impl/codegen/slice_buffer.h
@@ -42,9 +42,8 @@ extern "C" {
#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8
-/* Represents an expandable array of slices, to be interpreted as a single item
- TODO(ctiller): inline some small number of elements into the struct, to
- avoid per-call allocations */
+/* Represents an expandable array of slices, to be interpreted as a
+ single item. */
typedef struct {
/* slices in the array */
gpr_slice *slices;
diff --git a/package.json b/package.json
index 72731c0245..54a44ca551 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "grpc",
- "version": "0.14.0-dev",
+ "version": "0.15.0-dev",
"author": "Google Inc.",
"description": "gRPC Library for Node",
"homepage": "http://www.grpc.io/",
@@ -19,7 +19,7 @@
"lib": "src/node/src"
},
"scripts": {
- "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js",
+ "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js --exclude-path=src/node/.jshintignore",
"test": "./node_modules/.bin/mocha src/node/test && npm run-script lint",
"gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json",
"coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
@@ -35,6 +35,7 @@
"devDependencies": {
"async": "^1.5.0",
"google-auth-library": "^0.9.2",
+ "google-protobuf": "^3.0.0-alpha.5",
"istanbul": "^0.3.21",
"jsdoc": "^3.3.2",
"jshint": "^2.5.0",
@@ -72,5 +73,25 @@
"binding.gyp"
],
"main": "src/node/index.js",
- "license": "BSD-3-Clause"
+ "license": "BSD-3-Clause",
+ "jshintConfig" : {
+ "bitwise": true,
+ "curly": true,
+ "eqeqeq": true,
+ "esnext": true,
+ "freeze": true,
+ "immed": true,
+ "indent": 2,
+ "latedef": "nofunc",
+ "maxlen": 80,
+ "mocha": true,
+ "newcap": true,
+ "node": true,
+ "noarg": true,
+ "quotmark": "single",
+ "strict": true,
+ "trailing": true,
+ "undef": true,
+ "unused": "vars"
+ }
}
diff --git a/package.xml b/package.xml
index 295901aaff..4c159e6024 100644
--- a/package.xml
+++ b/package.xml
@@ -10,11 +10,11 @@
<email>grpc-packages@google.com</email>
<active>yes</active>
</lead>
- <date>2016-03-01</date>
+ <date>2016-04-19</date>
<time>16:06:07</time>
<version>
- <release>0.14.0</release>
- <api>0.14.0</api>
+ <release>0.15.0</release>
+ <api>0.15.0</api>
</version>
<stability>
<release>beta</release>
@@ -22,7 +22,7 @@
</stability>
<license>BSD</license>
<notes>
-- Increase unit test code coverage #5225
+- destroy grpc_byte_buffer after startBatch #6096
</notes>
<contents>
<dir baseinstalldir="/" name="/">
@@ -131,6 +131,7 @@
<file baseinstalldir="/" name="src/core/lib/support/stack_lockfree.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/string.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/string_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/support/string_util_win32.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/string_win32.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/subprocess_posix.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/subprocess_windows.c" role="src" />
@@ -145,6 +146,7 @@
<file baseinstalldir="/" name="src/core/lib/support/time_precise.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/time_win32.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/tls_pthread.c" role="src" />
+ <file baseinstalldir="/" name="src/core/lib/support/tmpfile_msys.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/tmpfile_posix.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/tmpfile_win32.c" role="src" />
<file baseinstalldir="/" name="src/core/lib/support/wrap_memcpy.c" role="src" />
@@ -154,6 +156,7 @@
<file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
<file baseinstalldir="/" name="include/grpc/status.h" role="src" />
<file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer_reader.h" role="src" />
<file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
<file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
<file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
@@ -996,8 +999,8 @@ Update to wrap gRPC C Core version 0.10.0
</release>
<release>
<version>
- <release>0.14.0</release>
- <api>0.14.0</api>
+ <release>0.8.1</release>
+ <api>0.8.1</api>
</version>
<stability>
<release>beta</release>
@@ -1009,5 +1012,20 @@ Update to wrap gRPC C Core version 0.10.0
- Increase unit test code coverage #5225
</notes>
</release>
+ <release>
+ <version>
+ <release>0.15.0</release>
+ <api>0.15.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2016-04-19</date>
+ <license>BSD</license>
+ <notes>
+- destroy grpc_byte_buffer after startBatch #6096
+ </notes>
+ </release>
</changelog>
</package>
diff --git a/requirements.txt b/requirements.txt
index e3208e6355..0ec0e75b76 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,8 @@
# GRPC Python setup requirements
+coverage>=4.0
+cython>=0.23
enum34>=1.0.4
futures>=2.2.0
-cython>=0.23
-coverage>=4.0
+protobuf>=3.0.0a3
six>=1.10
-wheel>=0.29
+wheel>=0.29 \ No newline at end of file
diff --git a/setup.py b/setup.py
index cd0d3a1a51..f96824fa88 100644
--- a/setup.py
+++ b/setup.py
@@ -54,7 +54,6 @@ sys.path.insert(0, os.path.abspath(PYTHON_STEM))
# Break import-style to ensure we can actually find our in-repo dependencies.
import commands
-import precompiled
import grpc_core_dependencies
import grpc_version
@@ -173,7 +172,6 @@ COMMAND_CLASS = {
'build_project_metadata': commands.BuildProjectMetadata,
'build_py': commands.BuildPy,
'build_ext': commands.BuildExt,
- 'build_tagged_ext': precompiled.BuildTaggedExt,
'gather': commands.Gather,
'run_interop': commands.RunInterop,
'test_lite': commands.TestLite
@@ -229,23 +227,21 @@ else:
PACKAGES = setuptools.find_packages(
PYTHON_STEM, exclude=['tests', 'tests.*'])
-setup_arguments = {
- 'name': 'grpcio',
- 'version': grpc_version.VERSION,
- 'license': LICENSE,
- 'ext_modules': CYTHON_EXTENSION_MODULES,
- 'packages': list(PACKAGES),
- 'package_dir': PACKAGE_DIRECTORIES,
- 'package_data': PACKAGE_DATA,
- 'install_requires': INSTALL_REQUIRES,
- 'setup_requires': SETUP_REQUIRES,
- 'cmdclass': COMMAND_CLASS,
- 'tests_require': TESTS_REQUIRE,
- 'test_suite': TEST_SUITE,
- 'test_loader': TEST_LOADER,
- 'test_runner': TEST_RUNNER,
-}
-
-precompiled.update_setup_arguments(setup_arguments)
-
-setuptools.setup(**setup_arguments)
+setuptools.setup(
+ name='grpcio',
+ version=grpc_version.VERSION,
+ license=LICENSE,
+ ext_modules=CYTHON_EXTENSION_MODULES,
+ packages=list(PACKAGES),
+ package_dir=PACKAGE_DIRECTORIES,
+ # TODO(atash): Figure out why auditwheel doesn't like namespace packages.
+ #namespace_packages=['grpc'],
+ package_data=PACKAGE_DATA,
+ install_requires=INSTALL_REQUIRES,
+ setup_requires=SETUP_REQUIRES,
+ cmdclass=COMMAND_CLASS,
+ tests_require=TESTS_REQUIRE,
+ test_suite=TEST_SUITE,
+ test_loader=TEST_LOADER,
+ test_runner=TEST_RUNNER,
+)
diff --git a/src/compiler/config.h b/src/compiler/config.h
index fea976c318..d8b95818db 100644
--- a/src/compiler/config.h
+++ b/src/compiler/config.h
@@ -42,8 +42,10 @@
#include <google/protobuf/descriptor.pb.h>
#define GRPC_CUSTOM_DESCRIPTOR ::google::protobuf::Descriptor
#define GRPC_CUSTOM_FILEDESCRIPTOR ::google::protobuf::FileDescriptor
+#define GRPC_CUSTOM_FILEDESCRIPTORPROTO ::google::protobuf::FileDescriptorProto
#define GRPC_CUSTOM_METHODDESCRIPTOR ::google::protobuf::MethodDescriptor
#define GRPC_CUSTOM_SERVICEDESCRIPTOR ::google::protobuf::ServiceDescriptor
+#define GRPC_CUSTOM_SOURCELOCATION ::google::protobuf::SourceLocation
#endif
#ifndef GRPC_CUSTOM_CODEGENERATOR
@@ -68,12 +70,19 @@
#define GRPC_CUSTOM_PLUGINMAIN ::google::protobuf::compiler::PluginMain
#endif
+#ifndef GRPC_CUSTOM_PARSEGENERATORPARAMETER
+#include <google/protobuf/compiler/code_generator.h>
+#define GRPC_CUSTOM_PARSEGENERATORPARAMETER ::google::protobuf::compiler::ParseGeneratorParameter
+#endif
+
namespace grpc {
namespace protobuf {
typedef GRPC_CUSTOM_DESCRIPTOR Descriptor;
typedef GRPC_CUSTOM_FILEDESCRIPTOR FileDescriptor;
+typedef GRPC_CUSTOM_FILEDESCRIPTORPROTO FileDescriptorProto;
typedef GRPC_CUSTOM_METHODDESCRIPTOR MethodDescriptor;
typedef GRPC_CUSTOM_SERVICEDESCRIPTOR ServiceDescriptor;
+typedef GRPC_CUSTOM_SOURCELOCATION SourceLocation;
namespace compiler {
typedef GRPC_CUSTOM_CODEGENERATOR CodeGenerator;
typedef GRPC_CUSTOM_GENERATORCONTEXT GeneratorContext;
@@ -81,6 +90,11 @@ static inline int PluginMain(int argc, char* argv[],
const CodeGenerator* generator) {
return GRPC_CUSTOM_PLUGINMAIN(argc, argv, generator);
}
+static inline void ParseGeneratorParameter(const string& parameter,
+ std::vector<std::pair<string, string> >* options) {
+ GRPC_CUSTOM_PARSEGENERATORPARAMETER(parameter, options);
+}
+
} // namespace compiler
namespace io {
typedef GRPC_CUSTOM_PRINTER Printer;
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index b133699306..e2f127094a 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -86,7 +86,7 @@ void PrintIncludes(Printer *printer, const std::vector<grpc::string>& headers, c
}
}
-grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
+grpc::string GetHeaderPrologue(File *file, const Parameters & /*params*/) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -96,15 +96,21 @@ grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
vars["filename"] = file->filename();
vars["filename_identifier"] = FilenameIdentifier(file->filename());
vars["filename_base"] = file->filename_without_ext();
+ vars["message_header_ext"] = file->message_header_ext();
printer->Print(vars, "// Generated by the gRPC protobuf plugin.\n");
printer->Print(vars,
"// If you make any local change, they will be lost.\n");
printer->Print(vars, "// source: $filename$\n");
+ grpc::string leading_comments = file->GetLeadingComments();
+ if (!leading_comments.empty()) {
+ printer->Print(vars, "// Original file comments:\n");
+ printer->Print(leading_comments.c_str());
+ }
printer->Print(vars, "#ifndef GRPC_$filename_identifier$__INCLUDED\n");
printer->Print(vars, "#define GRPC_$filename_identifier$__INCLUDED\n");
printer->Print(vars, "\n");
- printer->Print(vars, "#include \"$filename_base$.pb.h\"\n");
+ printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
printer->Print(vars, "\n");
}
return output;
@@ -455,6 +461,7 @@ void PrintHeaderServerMethodSync(Printer *printer, const Method *method,
(*vars)["Method"] = method->name();
(*vars)["Request"] = method->input_type_name();
(*vars)["Response"] = method->output_type_name();
+ printer->Print(method->GetLeadingComments().c_str());
if (method->NoStreaming()) {
printer->Print(*vars,
"virtual ::grpc::Status $Method$("
@@ -479,6 +486,7 @@ void PrintHeaderServerMethodSync(Printer *printer, const Method *method,
"::grpc::ServerReaderWriter< $Response$, $Request$>* stream);"
"\n");
}
+ printer->Print(method->GetTrailingComments().c_str());
}
void PrintHeaderServerMethodAsync(
@@ -673,6 +681,7 @@ void PrintHeaderService(Printer *printer,
std::map<grpc::string, grpc::string> *vars) {
(*vars)["Service"] = service->name();
+ printer->Print(service->GetLeadingComments().c_str());
printer->Print(*vars,
"class $Service$ GRPC_FINAL {\n"
" public:\n");
@@ -685,7 +694,9 @@ void PrintHeaderService(Printer *printer,
printer->Indent();
printer->Print("virtual ~StubInterface() {}\n");
for (int i = 0; i < service->method_count(); ++i) {
+ printer->Print(service->method(i)->GetLeadingComments().c_str());
PrintHeaderClientMethodInterfaces(printer, service->method(i).get(), vars, true);
+ printer->Print(service->method(i)->GetTrailingComments().c_str());
}
printer->Outdent();
printer->Print("private:\n");
@@ -761,6 +772,7 @@ void PrintHeaderService(Printer *printer,
printer->Outdent();
printer->Print("};\n");
+ printer->Print(service->GetTrailingComments().c_str());
}
grpc::string GetHeaderServices(File *file,
@@ -794,8 +806,7 @@ grpc::string GetHeaderServices(File *file,
return output;
}
-grpc::string GetHeaderEpilogue(File *file,
- const Parameters &params) {
+grpc::string GetHeaderEpilogue(File *file, const Parameters & /*params*/) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -817,12 +828,13 @@ grpc::string GetHeaderEpilogue(File *file,
printer->Print(vars, "\n");
printer->Print(vars, "#endif // GRPC_$filename_identifier$__INCLUDED\n");
+
+ printer->Print(file->GetTrailingComments().c_str());
}
return output;
}
-grpc::string GetSourcePrologue(File *file,
- const Parameters &params) {
+grpc::string GetSourcePrologue(File *file, const Parameters & /*params*/) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -831,13 +843,17 @@ grpc::string GetSourcePrologue(File *file,
vars["filename"] = file->filename();
vars["filename_base"] = file->filename_without_ext();
+ vars["message_header_ext"] = file->message_header_ext();
+ vars["service_header_ext"] = file->service_header_ext();
printer->Print(vars, "// Generated by the gRPC protobuf plugin.\n");
printer->Print(vars,
"// If you make any local change, they will be lost.\n");
printer->Print(vars, "// source: $filename$\n\n");
- printer->Print(vars, "#include \"$filename_base$.pb.h\"\n");
- printer->Print(vars, "#include \"$filename_base$.grpc.pb.h\"\n");
+
+ printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
+ printer->Print(vars, "#include \"$filename_base$$service_header_ext$\"\n");
+ printer->Print(vars, file->additional_headers().c_str());
printer->Print(vars, "\n");
}
return output;
@@ -1180,8 +1196,7 @@ grpc::string GetSourceServices(File *file,
return output;
}
-grpc::string GetSourceEpilogue(File *file,
- const Parameters &params) {
+grpc::string GetSourceEpilogue(File *file, const Parameters & /*params*/) {
grpc::string temp;
if (!file->package().empty()) {
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 99a60a2eae..2a003b1069 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -64,8 +64,16 @@ struct Parameters {
grpc::string grpc_search_path;
};
+// A common interface for objects having comments in the source.
+// Return formatted comments to be inserted in generated code.
+struct CommentHolder {
+ virtual ~CommentHolder() {}
+ virtual grpc::string GetLeadingComments() const = 0;
+ virtual grpc::string GetTrailingComments() const = 0;
+};
+
// An abstract interface representing a method.
-struct Method {
+struct Method : public CommentHolder {
virtual ~Method() {}
virtual grpc::string name() const = 0;
@@ -80,7 +88,7 @@ struct Method {
};
// An abstract interface representing a service.
-struct Service {
+struct Service : public CommentHolder {
virtual ~Service() {}
virtual grpc::string name() const = 0;
@@ -101,13 +109,16 @@ struct Printer {
// An interface that allows the source generated to be output using various
// libraries/idls/serializers.
-struct File {
+struct File : public CommentHolder {
virtual ~File() {}
virtual grpc::string filename() const = 0;
virtual grpc::string filename_without_ext() const = 0;
+ virtual grpc::string message_header_ext() const = 0;
+ virtual grpc::string service_header_ext() const = 0;
virtual grpc::string package() const = 0;
virtual std::vector<grpc::string> package_parts() const = 0;
+ virtual grpc::string additional_headers() const = 0;
virtual int service_count() const = 0;
virtual std::unique_ptr<const Service> service(int i) const = 0;
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index f703c6453d..0ec183e474 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -35,11 +35,15 @@
//
#include <memory>
+#include <sstream>
#include "src/compiler/config.h"
#include "src/compiler/cpp_generator.h"
#include "src/compiler/cpp_generator_helpers.h"
+#include "src/compiler/generator_helpers.h"
+
+using grpc_generator::GetCppComments;
class ProtoBufMethod : public grpc_cpp_generator::Method {
public:
@@ -71,6 +75,14 @@ class ProtoBufMethod : public grpc_cpp_generator::Method {
return method_->client_streaming() && method_->server_streaming();
}
+ grpc::string GetLeadingComments() const {
+ return GetCppComments(method_, true);
+ }
+
+ grpc::string GetTrailingComments() const {
+ return GetCppComments(method_, false);
+ }
+
private:
const grpc::protobuf::MethodDescriptor *method_;
};
@@ -88,6 +100,14 @@ class ProtoBufService : public grpc_cpp_generator::Service {
new ProtoBufMethod(service_->method(i)));
};
+ grpc::string GetLeadingComments() const {
+ return GetCppComments(service_, true);
+ }
+
+ grpc::string GetTrailingComments() const {
+ return GetCppComments(service_, false);
+ }
+
private:
const grpc::protobuf::ServiceDescriptor *service_;
};
@@ -120,11 +140,16 @@ class ProtoBufFile : public grpc_cpp_generator::File {
return grpc_generator::StripProto(filename());
}
+ grpc::string message_header_ext() const { return ".pb.h"; }
+ grpc::string service_header_ext() const { return ".grpc.pb.h"; }
+
grpc::string package() const { return file_->package(); }
std::vector<grpc::string> package_parts() const {
return grpc_generator::tokenize(package(), ".");
}
+ grpc::string additional_headers() const { return ""; }
+
int service_count() const { return file_->service_count(); };
std::unique_ptr<const grpc_cpp_generator::Service> service(int i) const {
return std::unique_ptr<const grpc_cpp_generator::Service> (
@@ -136,6 +161,14 @@ class ProtoBufFile : public grpc_cpp_generator::File {
new ProtoBufPrinter(str));
}
+ grpc::string GetLeadingComments() const {
+ return GetCppComments(file_, true);
+ }
+
+ grpc::string GetTrailingComments() const {
+ return GetCppComments(file_, false);
+ }
+
private:
const grpc::protobuf::FileDescriptor *file_;
};
diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 69e2738d53..29c359c539 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -52,6 +52,7 @@ using grpc::protobuf::MethodDescriptor;
using grpc::protobuf::io::Printer;
using grpc::protobuf::io::StringOutputStream;
using grpc_generator::MethodType;
+using grpc_generator::GetCppComments;
using grpc_generator::GetMethodType;
using grpc_generator::METHODTYPE_NO_STREAMING;
using grpc_generator::METHODTYPE_CLIENT_STREAMING;
@@ -65,6 +66,56 @@ using std::vector;
namespace grpc_csharp_generator {
namespace {
+// This function is a massaged version of
+// https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc
+// Currently, we cannot easily reuse the functionality as
+// google/protobuf/compiler/csharp/csharp_doc_comment.h is not a public header.
+// TODO(jtattermusch): reuse the functionality from google/protobuf.
+void GenerateDocCommentBodyImpl(grpc::protobuf::io::Printer* printer, grpc::protobuf::SourceLocation location) {
+ grpc::string comments = location.leading_comments.empty() ?
+ location.trailing_comments : location.leading_comments;
+ if (comments.empty()) {
+ return;
+ }
+ // XML escaping... no need for apostrophes etc as the whole text is going to be a child
+ // node of a summary element, not part of an attribute.
+ comments = grpc_generator::StringReplace(comments, "&", "&amp;", true);
+ comments = grpc_generator::StringReplace(comments, "<", "&lt;", true);
+
+ std::vector<grpc::string> lines;
+ grpc_generator::Split(comments, '\n', &lines);
+ // TODO: We really should work out which part to put in the summary and which to put in the remarks...
+ // but that needs to be part of a bigger effort to understand the markdown better anyway.
+ printer->Print("/// <summary>\n");
+ bool last_was_empty = false;
+ // We squash multiple blank lines down to one, and remove any trailing blank lines. We need
+ // to preserve the blank lines themselves, as this is relevant in the markdown.
+ // Note that we can't remove leading or trailing whitespace as *that's* relevant in markdown too.
+ // (We don't skip "just whitespace" lines, either.)
+ for (std::vector<grpc::string>::iterator it = lines.begin(); it != lines.end(); ++it) {
+ grpc::string line = *it;
+ if (line.empty()) {
+ last_was_empty = true;
+ } else {
+ if (last_was_empty) {
+ printer->Print("///\n");
+ }
+ last_was_empty = false;
+ printer->Print("/// $line$\n", "line", *it);
+ }
+ }
+ printer->Print("/// </summary>\n");
+}
+
+template <typename DescriptorType>
+void GenerateDocCommentBody(
+ grpc::protobuf::io::Printer* printer, const DescriptorType* descriptor) {
+ grpc::protobuf::SourceLocation location;
+ if (descriptor->GetSourceLocation(&location)) {
+ GenerateDocCommentBodyImpl(printer, location);
+ }
+}
+
std::string GetServiceClassName(const ServiceDescriptor* service) {
return service->name();
}
@@ -123,6 +174,10 @@ std::string GetMethodRequestParamMaybe(const MethodDescriptor *method,
return GetClassName(method->input_type()) + " request, ";
}
+std::string GetAccessLevel(bool internal_access) {
+ return internal_access ? "internal" : "public";
+}
+
std::string GetMethodReturnTypeClient(const MethodDescriptor *method) {
switch (GetMethodType(method)) {
case METHODTYPE_NO_STREAMING:
@@ -159,10 +214,10 @@ std::string GetMethodReturnTypeServer(const MethodDescriptor *method) {
switch (GetMethodType(method)) {
case METHODTYPE_NO_STREAMING:
case METHODTYPE_CLIENT_STREAMING:
- return "Task<" + GetClassName(method->output_type()) + ">";
+ return "global::System.Threading.Tasks.Task<" + GetClassName(method->output_type()) + ">";
case METHODTYPE_SERVER_STREAMING:
case METHODTYPE_BIDI_STREAMING:
- return "Task";
+ return "global::System.Threading.Tasks.Task";
}
GOOGLE_LOG(FATAL)<< "Can't get here.";
return "";
@@ -238,7 +293,7 @@ void GenerateStaticMethodField(Printer* out, const MethodDescriptor *method) {
void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *service) {
std::ostringstream index;
index << service->index();
- out->Print("// service descriptor\n");
+ out->Print("/// <summary>Service descriptor</summary>\n");
out->Print("public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor\n");
out->Print("{\n");
out->Print(" get { return $umbrella$.Descriptor.Services[$index$]; }\n",
@@ -249,7 +304,8 @@ void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *se
}
void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
- out->Print("// client interface\n");
+ out->Print("/// <summary>Client for $servicename$</summary>\n",
+ "servicename", GetServiceClassName(service));
out->Print("[System.Obsolete(\"Client side interfaced will be removed "
"in the next release. Use client class directly.\")]\n");
out->Print("public interface $name$\n", "name",
@@ -262,6 +318,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
if (method_type == METHODTYPE_NO_STREAMING) {
// unary calls have an extra synchronous stub method
+ GenerateDocCommentBody(out, method);
out->Print(
"$response$ $methodname$($request$ request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));\n",
"methodname", method->name(), "request",
@@ -269,6 +326,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
GetClassName(method->output_type()));
// overload taking CallOptions as a param
+ GenerateDocCommentBody(out, method);
out->Print(
"$response$ $methodname$($request$ request, CallOptions options);\n",
"methodname", method->name(), "request",
@@ -280,6 +338,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
if (method_type == METHODTYPE_NO_STREAMING) {
method_name += "Async"; // prevent name clash with synchronous method.
}
+ GenerateDocCommentBody(out, method);
out->Print(
"$returntype$ $methodname$($request_maybe$Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));\n",
"methodname", method_name, "request_maybe",
@@ -287,6 +346,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
GetMethodReturnTypeClient(method));
// overload taking CallOptions as a param
+ GenerateDocCommentBody(out, method);
out->Print(
"$returntype$ $methodname$($request_maybe$CallOptions options);\n",
"methodname", method_name, "request_maybe",
@@ -299,7 +359,8 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
}
void GenerateServerInterface(Printer* out, const ServiceDescriptor *service) {
- out->Print("// server-side interface\n");
+ out->Print("/// <summary>Interface of server-side implementations of $servicename$</summary>\n",
+ "servicename", GetServiceClassName(service));
out->Print("[System.Obsolete(\"Service implementations should inherit"
" from the generated abstract base class instead.\")]\n");
out->Print("public interface $name$\n", "name",
@@ -308,6 +369,7 @@ void GenerateServerInterface(Printer* out, const ServiceDescriptor *service) {
out->Indent();
for (int i = 0; i < service->method_count(); i++) {
const MethodDescriptor *method = service->method(i);
+ GenerateDocCommentBody(out, method);
out->Print(
"$returntype$ $methodname$($request$$response_stream_maybe$, "
"ServerCallContext context);\n",
@@ -322,13 +384,15 @@ void GenerateServerInterface(Printer* out, const ServiceDescriptor *service) {
}
void GenerateServerClass(Printer* out, const ServiceDescriptor *service) {
- out->Print("// server-side abstract class\n");
+ out->Print("/// <summary>Base class for server-side implementations of $servicename$</summary>\n",
+ "servicename", GetServiceClassName(service));
out->Print("public abstract class $name$\n", "name",
GetServerClassName(service));
out->Print("{\n");
out->Indent();
for (int i = 0; i < service->method_count(); i++) {
const MethodDescriptor *method = service->method(i);
+ GenerateDocCommentBody(out, method);
out->Print(
"public virtual $returntype$ $methodname$($request$$response_stream_maybe$, "
"ServerCallContext context)\n",
@@ -349,11 +413,14 @@ void GenerateServerClass(Printer* out, const ServiceDescriptor *service) {
}
void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
- out->Print("// client stub\n");
+ out->Print("/// <summary>Client for $servicename$</summary>\n",
+ "servicename", GetServiceClassName(service));
+ out->Print("#pragma warning disable 0618\n");
out->Print(
"public class $name$ : ClientBase<$name$>, $interface$\n",
"name", GetClientClassName(service),
"interface", GetClientInterfaceName(service));
+ out->Print("#pragma warning restore 0618\n");
out->Print("{\n");
out->Indent();
@@ -386,6 +453,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
if (method_type == METHODTYPE_NO_STREAMING) {
// unary calls have an extra synchronous stub method
+ GenerateDocCommentBody(out, method);
out->Print("public virtual $response$ $methodname$($request$ request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))\n",
"methodname", method->name(), "request",
GetClassName(method->input_type()), "response",
@@ -398,6 +466,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
out->Print("}\n");
// overload taking CallOptions as a param
+ GenerateDocCommentBody(out, method);
out->Print("public virtual $response$ $methodname$($request$ request, CallOptions options)\n",
"methodname", method->name(), "request",
GetClassName(method->input_type()), "response",
@@ -414,6 +483,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
if (method_type == METHODTYPE_NO_STREAMING) {
method_name += "Async"; // prevent name clash with synchronous method.
}
+ GenerateDocCommentBody(out, method);
out->Print(
"public virtual $returntype$ $methodname$($request_maybe$Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))\n",
"methodname", method_name, "request_maybe",
@@ -429,6 +499,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
out->Print("}\n");
// overload taking CallOptions as a param
+ GenerateDocCommentBody(out, method);
out->Print(
"public virtual $returntype$ $methodname$($request_maybe$CallOptions options)\n",
"methodname", method_name, "request_maybe",
@@ -479,11 +550,13 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor *service,
bool use_server_class) {
out->Print(
- "// creates service definition that can be registered with a server\n");
+ "/// <summary>Creates service definition that can be registered with a server</summary>\n");
+ out->Print("#pragma warning disable 0618\n");
out->Print(
"public static ServerServiceDefinition BindService($interface$ serviceImpl)\n",
"interface", use_server_class ? GetServerClassName(service) :
GetServerInterfaceName(service));
+ out->Print("#pragma warning restore 0618\n");
out->Print("{\n");
out->Indent();
@@ -511,7 +584,8 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor *service,
}
void GenerateNewStubMethods(Printer* out, const ServiceDescriptor *service) {
- out->Print("// creates a new client\n");
+ out->Print("/// <summary>Creates a new client for $servicename$</summary>\n",
+ "servicename", GetServiceClassName(service));
out->Print("public static $classname$ NewClient(Channel channel)\n",
"classname", GetClientClassName(service));
out->Print("{\n");
@@ -523,8 +597,12 @@ void GenerateNewStubMethods(Printer* out, const ServiceDescriptor *service) {
out->Print("\n");
}
-void GenerateService(Printer* out, const ServiceDescriptor *service) {
- out->Print("public static class $classname$\n", "classname",
+void GenerateService(Printer* out, const ServiceDescriptor *service,
+ bool generate_client, bool generate_server,
+ bool internal_access) {
+ GenerateDocCommentBody(out, service);
+ out->Print("$access_level$ static class $classname$\n", "access_level",
+ GetAccessLevel(internal_access), "classname",
GetServiceClassName(service));
out->Print("{\n");
out->Indent();
@@ -538,13 +616,22 @@ void GenerateService(Printer* out, const ServiceDescriptor *service) {
GenerateStaticMethodField(out, service->method(i));
}
GenerateServiceDescriptorProperty(out, service);
- GenerateClientInterface(out, service);
- GenerateServerInterface(out, service);
- GenerateServerClass(out, service);
- GenerateClientStub(out, service);
- GenerateBindServiceMethod(out, service, false);
- GenerateBindServiceMethod(out, service, true);
- GenerateNewStubMethods(out, service);
+
+ if (generate_client) {
+ GenerateClientInterface(out, service);
+ }
+ if (generate_server) {
+ GenerateServerInterface(out, service);
+ GenerateServerClass(out, service);
+ }
+ if (generate_client) {
+ GenerateClientStub(out, service);
+ GenerateNewStubMethods(out, service);
+ }
+ if (generate_server) {
+ GenerateBindServiceMethod(out, service, false);
+ GenerateBindServiceMethod(out, service, true);
+ }
out->Outdent();
out->Print("}\n");
@@ -552,7 +639,8 @@ void GenerateService(Printer* out, const ServiceDescriptor *service) {
} // anonymous namespace
-grpc::string GetServices(const FileDescriptor *file) {
+grpc::string GetServices(const FileDescriptor *file, bool generate_client,
+ bool generate_server, bool internal_access) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -569,6 +657,14 @@ grpc::string GetServices(const FileDescriptor *file) {
// Write out a file header.
out.Print("// Generated by the protocol buffer compiler. DO NOT EDIT!\n");
out.Print("// source: $filename$\n", "filename", file->name());
+
+ // use C++ style as there are no file-level XML comments in .NET
+ grpc::string leading_comments = GetCppComments(file, true);
+ if (!leading_comments.empty()) {
+ out.Print("// Original file comments:\n");
+ out.Print(leading_comments.c_str());
+ }
+
out.Print("#region Designer generated code\n");
out.Print("\n");
out.Print("using System;\n");
@@ -580,7 +676,8 @@ grpc::string GetServices(const FileDescriptor *file) {
out.Print("namespace $namespace$ {\n", "namespace", GetFileNamespace(file));
out.Indent();
for (int i = 0; i < file->service_count(); i++) {
- GenerateService(&out, file->service(i));
+ GenerateService(&out, file->service(i), generate_client, generate_server,
+ internal_access);
}
out.Outdent();
out.Print("}\n");
diff --git a/src/compiler/csharp_generator.h b/src/compiler/csharp_generator.h
index 90eb7e2984..f0585af4fd 100644
--- a/src/compiler/csharp_generator.h
+++ b/src/compiler/csharp_generator.h
@@ -40,7 +40,9 @@
namespace grpc_csharp_generator {
-grpc::string GetServices(const grpc::protobuf::FileDescriptor *file);
+grpc::string GetServices(const grpc::protobuf::FileDescriptor *file,
+ bool generate_client, bool generate_server,
+ bool internal_access);
} // namespace grpc_csharp_generator
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc
index 8b9395f9e2..5350e73f10 100644
--- a/src/compiler/csharp_plugin.cc
+++ b/src/compiler/csharp_plugin.cc
@@ -48,7 +48,29 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
const grpc::string &parameter,
grpc::protobuf::compiler::GeneratorContext *context,
grpc::string *error) const {
- grpc::string code = grpc_csharp_generator::GetServices(file);
+ std::vector<std::pair<grpc::string, grpc::string> > options;
+ grpc::protobuf::compiler::ParseGeneratorParameter(parameter, &options);
+
+ bool generate_client = true;
+ bool generate_server = true;
+ bool internal_access = false;
+ for (size_t i = 0; i < options.size(); i++) {
+ if (options[i].first == "no_client") {
+ generate_client = false;
+ } else if (options[i].first == "no_server") {
+ generate_server = false;
+ } else if (options[i].first == "internal_access") {
+ internal_access = true;
+ } else {
+ *error = "Unknown generator option: " + options[i].first;
+ return false;
+ }
+ }
+
+ grpc::string code = grpc_csharp_generator::GetServices(file,
+ generate_client,
+ generate_server,
+ internal_access);
if (code.size() == 0) {
return true; // don't generate a file if there are no services
}
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index e1bb66a875..bd077cf798 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -34,7 +34,11 @@
#ifndef GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
#define GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
+#include <iostream>
#include <map>
+#include <sstream>
+#include <string>
+#include <vector>
#include "src/compiler/config.h"
@@ -52,6 +56,16 @@ inline bool StripSuffix(grpc::string *filename, const grpc::string &suffix) {
return false;
}
+inline bool StripPrefix(grpc::string *name, const grpc::string &prefix) {
+ if (name->length() >= prefix.length()) {
+ if (name->substr(0, prefix.size()) == prefix) {
+ *name = name->substr(prefix.size());
+ return true;
+ }
+ }
+ return false;
+}
+
inline grpc::string StripProto(grpc::string filename) {
if (!StripSuffix(&filename, ".protodevel")) {
StripSuffix(&filename, ".proto");
@@ -165,6 +179,111 @@ inline MethodType GetMethodType(const grpc::protobuf::MethodDescriptor *method)
}
}
+inline void Split(const grpc::string &s, char delim,
+ std::vector<grpc::string> *append_to) {
+ std::istringstream iss(s);
+ grpc::string piece;
+ while (std::getline(iss, piece)) {
+ append_to->push_back(piece);
+ }
+}
+
+enum CommentType {
+ COMMENTTYPE_LEADING,
+ COMMENTTYPE_TRAILING,
+ COMMENTTYPE_LEADING_DETACHED
+};
+
+// Get all the raw comments and append each line without newline to out.
+template <typename DescriptorType>
+inline void GetComment(const DescriptorType *desc, CommentType type,
+ std::vector<grpc::string> *out) {
+ grpc::protobuf::SourceLocation location;
+ if (!desc->GetSourceLocation(&location)) {
+ return;
+ }
+ if (type == COMMENTTYPE_LEADING || type == COMMENTTYPE_TRAILING) {
+ const grpc::string &comments = type == COMMENTTYPE_LEADING
+ ? location.leading_comments
+ : location.trailing_comments;
+ Split(comments, '\n', out);
+ } else if (type == COMMENTTYPE_LEADING_DETACHED) {
+ for (unsigned int i = 0; i < location.leading_detached_comments.size();
+ i++) {
+ Split(location.leading_detached_comments[i], '\n', out);
+ out->push_back("");
+ }
+ } else {
+ std::cerr << "Unknown comment type " << type << std::endl;
+ abort();
+ }
+}
+
+// Each raw comment line without newline is appended to out.
+// For file level leading and detached leading comments, we return comments
+// above syntax line. Return nothing for trailing comments.
+template <>
+inline void GetComment(const grpc::protobuf::FileDescriptor *desc,
+ CommentType type, std::vector<grpc::string> *out) {
+ if (type == COMMENTTYPE_TRAILING) {
+ return;
+ }
+ grpc::protobuf::SourceLocation location;
+ std::vector<int> path;
+ path.push_back(grpc::protobuf::FileDescriptorProto::kSyntaxFieldNumber);
+ if (!desc->GetSourceLocation(path, &location)) {
+ return;
+ }
+ if (type == COMMENTTYPE_LEADING) {
+ Split(location.leading_comments, '\n', out);
+ } else if (type == COMMENTTYPE_LEADING_DETACHED) {
+ for (unsigned int i = 0; i < location.leading_detached_comments.size();
+ i++) {
+ Split(location.leading_detached_comments[i], '\n', out);
+ out->push_back("");
+ }
+ } else {
+ std::cerr << "Unknown comment type " << type << std::endl;
+ abort();
+ }
+}
+
+// Add prefix and newline to each comment line and concatenate them together.
+// Make sure there is a space after the prefix unless the line is empty.
+inline grpc::string GenerateCommentsWithPrefix(
+ const std::vector<grpc::string> &in, const grpc::string &prefix) {
+ std::ostringstream oss;
+ for (const grpc::string &elem : in) {
+ if (elem.empty()) {
+ oss << prefix << "\n";
+ } else if (elem[0] == ' ') {
+ oss << prefix << elem << "\n";
+ } else {
+ oss << prefix << " " << elem << "\n";
+ }
+ }
+ return oss.str();
+}
+
+// Get leading or trailing comments in a string. Comment lines start with "// ".
+// Leading detached comments are put in in front of leading comments.
+template <typename DescriptorType>
+inline grpc::string GetCppComments(const DescriptorType *desc, bool leading) {
+ std::vector<grpc::string> out;
+ if (leading) {
+ grpc_generator::GetComment(
+ desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, &out);
+ std::vector<grpc::string> leading;
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
+ &leading);
+ out.insert(out.end(), leading.begin(), leading.end());
+ } else {
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
+ &out);
+ }
+ return GenerateCommentsWithPrefix(out, "//");
+}
+
} // namespace grpc_generator
#endif // GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
diff --git a/src/compiler/node_generator.cc b/src/compiler/node_generator.cc
new file mode 100644
index 0000000000..822622cccf
--- /dev/null
+++ b/src/compiler/node_generator.cc
@@ -0,0 +1,277 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <map>
+
+#include "src/compiler/config.h"
+#include "src/compiler/generator_helpers.h"
+#include "src/compiler/node_generator_helpers.h"
+
+using grpc::protobuf::FileDescriptor;
+using grpc::protobuf::ServiceDescriptor;
+using grpc::protobuf::MethodDescriptor;
+using grpc::protobuf::Descriptor;
+using grpc::protobuf::io::Printer;
+using grpc::protobuf::io::StringOutputStream;
+using std::map;
+
+namespace grpc_node_generator {
+namespace {
+
+// Returns the alias we assign to the module of the given .proto filename
+// when importing. Copied entirely from
+// github:google/protobuf/src/google/protobuf/compiler/js/js_generator.cc#L154
+grpc::string ModuleAlias(const grpc::string filename) {
+ // This scheme could technically cause problems if a file includes any 2 of:
+ // foo/bar_baz.proto
+ // foo_bar_baz.proto
+ // foo_bar/baz.proto
+ //
+ // We'll worry about this problem if/when we actually see it. This name isn't
+ // exposed to users so we can change it later if we need to.
+ grpc::string basename = grpc_generator::StripProto(filename);
+ basename = grpc_generator::StringReplace(basename, "-", "$");
+ basename = grpc_generator::StringReplace(basename, "/", "_");
+ return basename + "_pb";
+}
+
+// Given a filename like foo/bar/baz.proto, returns the corresponding JavaScript
+// message file foo/bar/baz.js
+grpc::string GetJSMessageFilename(const grpc::string& filename) {
+ grpc::string name = filename;
+ return grpc_generator::StripProto(name) + "_pb.js";
+}
+
+// Given a filename like foo/bar/baz.proto, returns the root directory
+// path ../../
+grpc::string GetRootPath(const grpc::string& filename) {
+ size_t slashes = std::count(filename.begin(), filename.end(), '/');
+ if (slashes == 0) {
+ return "./";
+ }
+ grpc::string result = "";
+ for (size_t i = 0; i < slashes; i++) {
+ result += "../";
+ }
+ return result;
+}
+
+// Return the relative path to load to_file from the directory containing
+// from_file, assuming that both paths are relative to the same directory
+grpc::string GetRelativePath(const grpc::string& from_file,
+ const grpc::string& to_file) {
+ return GetRootPath(from_file) + to_file;
+}
+
+/* Finds all message types used in all services in the file, and returns them
+ * as a map of fully qualified message type name to message descriptor */
+map<grpc::string, const Descriptor*> GetAllMessages(const FileDescriptor *file) {
+ map<grpc::string, const Descriptor*> message_types;
+ for (int service_num = 0; service_num < file->service_count(); service_num++) {
+ const ServiceDescriptor* service = file->service(service_num);
+ for (int method_num = 0; method_num < service->method_count(); method_num++) {
+ const MethodDescriptor* method = service->method(method_num);
+ const Descriptor* input_type = method->input_type();
+ const Descriptor* output_type = method->output_type();
+ message_types[input_type->name()] = input_type;
+ message_types[output_type->name()] = output_type;
+ }
+ }
+ return message_types;
+}
+
+grpc::string MessageIdentifierName(const grpc::string& name) {
+ return grpc_generator::StringReplace(name, ".", "_");
+}
+
+grpc::string NodeObjectPath(const Descriptor *descriptor) {
+ grpc::string module_alias = ModuleAlias(descriptor->file()->name());
+ grpc::string name = descriptor->name();
+ grpc_generator::StripPrefix(&name, descriptor->file()->package() + ".");
+ return module_alias + "." + name;
+}
+
+// Prints out the message serializer and deserializer functions
+void PrintMessageTransformer(const Descriptor *descriptor, Printer *out) {
+ map<grpc::string, grpc::string> template_vars;
+ template_vars["identifier_name"] = MessageIdentifierName(descriptor->name());
+ template_vars["name"] = descriptor->name();
+ template_vars["node_name"] = NodeObjectPath(descriptor);
+ // Print the serializer
+ out->Print(template_vars, "function serialize_$identifier_name$(arg) {\n");
+ out->Indent();
+ out->Print(template_vars, "if (!(arg instanceof $node_name$)) {\n");
+ out->Indent();
+ out->Print(template_vars,
+ "throw new Error('Expected argument of type $name$');\n");
+ out->Outdent();
+ out->Print("}\n");
+ out->Print("return new Buffer(arg.serializeBinary());\n");
+ out->Outdent();
+ out->Print("}\n\n");
+
+ // Print the deserializer
+ out->Print(template_vars,
+ "function deserialize_$identifier_name$(buffer_arg) {\n");
+ out->Indent();
+ out->Print(
+ template_vars,
+ "return $node_name$.deserializeBinary(new Uint8Array(buffer_arg));\n");
+ out->Outdent();
+ out->Print("}\n\n");
+}
+
+void PrintMethod(const MethodDescriptor *method, Printer *out) {
+ const Descriptor *input_type = method->input_type();
+ const Descriptor *output_type = method->output_type();
+ map<grpc::string, grpc::string> vars;
+ vars["service_name"] = method->service()->full_name();
+ vars["name"] = method->name();
+ vars["input_type"] = NodeObjectPath(input_type);
+ vars["input_type_id"] = MessageIdentifierName(input_type->name());
+ vars["output_type"] = NodeObjectPath(output_type);
+ vars["output_type_id"] = MessageIdentifierName(output_type->name());
+ vars["client_stream"] = method->client_streaming() ? "true" : "false";
+ vars["server_stream"] = method->server_streaming() ? "true" : "false";
+ out->Print("{\n");
+ out->Indent();
+ out->Print(vars, "path: '/$service_name$/$name$',\n");
+ out->Print(vars, "requestStream: $client_stream$,\n");
+ out->Print(vars, "responseStream: $server_stream$,\n");
+ out->Print(vars, "requestType: $input_type$,\n");
+ out->Print(vars, "responseType: $output_type$,\n");
+ out->Print(vars, "requestSerialize: serialize_$input_type_id$,\n");
+ out->Print(vars, "requestDeserialize: deserialize_$input_type_id$,\n");
+ out->Print(vars, "responseSerialize: serialize_$output_type_id$,\n");
+ out->Print(vars, "responseDeserialize: deserialize_$output_type_id$,\n");
+ out->Outdent();
+ out->Print("}");
+}
+
+// Prints out the service descriptor object
+void PrintService(const ServiceDescriptor *service, Printer *out) {
+ map<grpc::string, grpc::string> template_vars;
+ template_vars["name"] = service->name();
+ out->Print(template_vars, "var $name$Service = exports.$name$Service = {\n");
+ out->Indent();
+ for (int i = 0; i < service->method_count(); i++) {
+ grpc::string method_name = grpc_generator::LowercaseFirstLetter(
+ service->method(i)->name());
+ out->Print("$method_name$: ",
+ "method_name", method_name);
+ PrintMethod(service->method(i), out);
+ out->Print(",\n");
+ }
+ out->Outdent();
+ out->Print("};\n\n");
+ out->Print(template_vars, "exports.$name$Client = "
+ "grpc.makeGenericClientConstructor($name$Service);\n");
+}
+
+}
+
+grpc::string GetImports(const FileDescriptor *file) {
+ grpc::string output;
+ {
+ StringOutputStream output_stream(&output);
+ Printer out(&output_stream, '$');
+
+ if (file->service_count() == 0) {
+ return output;
+ }
+
+ out.Print("// GENERATED CODE -- DO NOT EDIT!\n\n");
+
+ out.Print("'use strict';\n");
+
+ out.Print("var grpc = require('grpc');\n");
+ if (file->message_type_count() > 0) {
+ grpc::string file_path = GetRelativePath(file->name(),
+ GetJSMessageFilename(
+ file->name()));
+ out.Print("var $module_alias$ = require('$file_path$');\n",
+ "module_alias", ModuleAlias(file->name()),
+ "file_path", file_path);
+ }
+
+ for (int i = 0; i < file->dependency_count(); i++) {
+ grpc::string file_path = GetRelativePath(
+ file->name(), GetJSMessageFilename(file->dependency(i)->name()));
+ out.Print("var $module_alias$ = require('$file_path$');\n",
+ "module_alias", ModuleAlias(file->dependency(i)->name()),
+ "file_path", file_path);
+ }
+ out.Print("\n");
+ }
+ return output;
+}
+
+grpc::string GetTransformers(const FileDescriptor *file) {
+ grpc::string output;
+ {
+ StringOutputStream output_stream(&output);
+ Printer out(&output_stream, '$');
+
+ if (file->service_count() == 0) {
+ return output;
+ }
+
+ map<grpc::string, const Descriptor*> messages = GetAllMessages(file);
+ for (std::map<grpc::string, const Descriptor*>::iterator it =
+ messages.begin();
+ it != messages.end(); it++) {
+ PrintMessageTransformer(it->second, &out);
+ }
+ out.Print("\n");
+ }
+ return output;
+}
+
+grpc::string GetServices(const FileDescriptor *file) {
+ grpc::string output;
+ {
+ StringOutputStream output_stream(&output);
+ Printer out(&output_stream, '$');
+
+ if (file->service_count() == 0) {
+ return output;
+ }
+
+ for (int i = 0; i < file->service_count(); i++) {
+ PrintService(file->service(i), &out);
+ }
+ }
+ return output;
+}
+
+} // namespace grpc_node_generator
diff --git a/src/compiler/node_generator.h b/src/compiler/node_generator.h
new file mode 100644
index 0000000000..249a0d011f
--- /dev/null
+++ b/src/compiler/node_generator.h
@@ -0,0 +1,49 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H
+#define GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H
+
+#include "src/compiler/config.h"
+
+namespace grpc_node_generator {
+
+grpc::string GetImports(const grpc::protobuf::FileDescriptor *file);
+
+grpc::string GetTransformers(const grpc::protobuf::FileDescriptor *file);
+
+grpc::string GetServices(const grpc::protobuf::FileDescriptor *file);
+
+} // namespace grpc_node_generator
+
+#endif // GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H
diff --git a/src/compiler/node_generator_helpers.h b/src/compiler/node_generator_helpers.h
new file mode 100644
index 0000000000..f41a2bcf59
--- /dev/null
+++ b/src/compiler/node_generator_helpers.h
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H
+#define GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H
+
+#include <algorithm>
+
+#include "src/compiler/config.h"
+#include "src/compiler/generator_helpers.h"
+
+namespace grpc_node_generator {
+
+inline grpc::string GetJSServiceFilename(const grpc::string& filename) {
+ return grpc_generator::StripProto(filename) + "_grpc_pb.js";
+}
+
+} // namespace grpc_node_generator
+
+#endif // GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H
diff --git a/src/compiler/node_plugin.cc b/src/compiler/node_plugin.cc
new file mode 100644
index 0000000000..ac5ced3558
--- /dev/null
+++ b/src/compiler/node_plugin.cc
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+// Generates Node gRPC service interface out of Protobuf IDL.
+
+#include <memory>
+
+#include "src/compiler/config.h"
+#include "src/compiler/node_generator.h"
+#include "src/compiler/node_generator_helpers.h"
+
+using grpc_node_generator::GetImports;
+using grpc_node_generator::GetJSServiceFilename;
+using grpc_node_generator::GetServices;
+using grpc_node_generator::GetTransformers;
+
+class NodeGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
+ public:
+ NodeGrpcGenerator() {}
+ ~NodeGrpcGenerator() {}
+
+ bool Generate(const grpc::protobuf::FileDescriptor *file,
+ const grpc::string &parameter,
+ grpc::protobuf::compiler::GeneratorContext *context,
+ grpc::string *error) const {
+ grpc::string code = GetImports(file) +
+ GetTransformers(file) +
+ GetServices(file);
+ if (code.size() == 0) {
+ return true;
+ }
+
+ // Get output file name
+ grpc::string file_name = GetJSServiceFilename(file->name());
+
+ std::unique_ptr<grpc::protobuf::io::ZeroCopyOutputStream> output(
+ context->Open(file_name));
+ grpc::protobuf::io::CodedOutputStream coded_out(output.get());
+ coded_out.WriteRaw(code.data(), code.size());
+ return true;
+ }
+};
+
+int main(int argc, char *argv[]) {
+ NodeGrpcGenerator generator;
+ return grpc::protobuf::compiler::PluginMain(argc, argv, &generator);
+}
diff --git a/src/compiler/objective_c_generator.cc b/src/compiler/objective_c_generator.cc
index ff092053ad..465491e385 100644
--- a/src/compiler/objective_c_generator.cc
+++ b/src/compiler/objective_c_generator.cc
@@ -75,11 +75,11 @@ void PrintMethodSignature(Printer *printer, const MethodDescriptor *method,
if (method->server_streaming()) {
printer->Print(vars,
" eventHandler:(void(^)(BOOL done, "
- "$response_class$ *response, NSError *error))eventHandler");
+ "$response_class$ *_Nullable response, NSError *_Nullable error))eventHandler");
} else {
printer->Print(vars,
- " handler:(void(^)($response_class$ *response, "
- "NSError *error))handler");
+ " handler:(void(^)($response_class$ *_Nullable response, "
+ "NSError *_Nullable error))handler");
}
}
diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index 17440358bb..3ccfd5b037 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -81,8 +81,12 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
declarations += grpc_objective_c_generator::GetHeader(service);
}
+ static const ::grpc::string kNonNullBegin = "\nNS_ASSUME_NONNULL_BEGIN\n\n";
+ static const ::grpc::string kNonNullEnd = "\nNS_ASSUME_NONNULL_END\n";
+
Write(context, file_name + ".pbrpc.h",
- imports + '\n' + proto_imports + '\n' + declarations);
+ imports + '\n' + proto_imports + '\n' + kNonNullBegin +
+ declarations + kNonNullEnd);
}
{
diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index 02c032800b..8e76e6dce6 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -182,28 +182,50 @@ bool GetModuleAndMessagePath(const Descriptor* type,
return true;
}
+// Get all comments (leading, leading_detached, trailing) and print them as a
+// docstring. Any leading space of a line will be removed, but the line wrapping
+// will not be changed.
+template <typename DescriptorType>
+static void PrintAllComments(const DescriptorType* desc, Printer* printer) {
+ std::vector<grpc::string> comments;
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED,
+ &comments);
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
+ &comments);
+ grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
+ &comments);
+ if (comments.empty()) {
+ return;
+ }
+ printer->Print("\"\"\"");
+ for (auto it = comments.begin(); it != comments.end(); ++it) {
+ size_t start_pos = it->find_first_not_of(' ');
+ if (start_pos != grpc::string::npos) {
+ printer->Print(it->c_str() + start_pos);
+ }
+ printer->Print("\n");
+ }
+ printer->Print("\"\"\"\n");
+}
+
bool PrintBetaServicer(const ServiceDescriptor* service,
Printer* out) {
- grpc::string doc = "<fill me in later!>";
- map<grpc::string, grpc::string> dict = ListToDict({
- "Service", service->name(),
- "Documentation", doc,
- });
out->Print("\n");
- out->Print(dict, "class Beta$Service$Servicer(six.with_metaclass(abc.ABCMeta, object)):\n");
+ out->Print("class Beta$Service$Servicer(object):\n", "Service",
+ service->name());
{
IndentScope raii_class_indent(out);
- out->Print(dict, "\"\"\"$Documentation$\"\"\"\n");
+ PrintAllComments(service, out);
for (int i = 0; i < service->method_count(); ++i) {
auto meth = service->method(i);
grpc::string arg_name = meth->client_streaming() ?
"request_iterator" : "request";
- out->Print("@abc.abstractmethod\n");
out->Print("def $Method$(self, $ArgName$, context):\n",
"Method", meth->name(), "ArgName", arg_name);
{
IndentScope raii_method_indent(out);
- out->Print("raise NotImplementedError()\n");
+ PrintAllComments(meth, out);
+ out->Print("context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)\n");
}
}
}
@@ -212,25 +234,20 @@ bool PrintBetaServicer(const ServiceDescriptor* service,
bool PrintBetaStub(const ServiceDescriptor* service,
Printer* out) {
- grpc::string doc = "The interface to which stubs will conform.";
- map<grpc::string, grpc::string> dict = ListToDict({
- "Service", service->name(),
- "Documentation", doc,
- });
out->Print("\n");
- out->Print(dict, "class Beta$Service$Stub(six.with_metaclass(abc.ABCMeta, object)):\n");
+ out->Print("class Beta$Service$Stub(object):\n", "Service", service->name());
{
IndentScope raii_class_indent(out);
- out->Print(dict, "\"\"\"$Documentation$\"\"\"\n");
+ PrintAllComments(service, out);
for (int i = 0; i < service->method_count(); ++i) {
const MethodDescriptor* meth = service->method(i);
grpc::string arg_name = meth->client_streaming() ?
"request_iterator" : "request";
auto methdict = ListToDict({"Method", meth->name(), "ArgName", arg_name});
- out->Print("@abc.abstractmethod\n");
out->Print(methdict, "def $Method$(self, $ArgName$, timeout):\n");
{
IndentScope raii_method_indent(out);
+ PrintAllComments(meth, out);
out->Print("raise NotImplementedError()\n");
}
if (!meth->server_streaming()) {
@@ -450,6 +467,8 @@ bool PrintPreamble(const FileDescriptor* file,
out->Print("import six\n");
out->Print("from $Package$ import implementations as beta_implementations\n",
"Package", config.beta_package_root);
+ out->Print("from $Package$ import interfaces as beta_interfaces\n",
+ "Package", config.beta_package_root);
out->Print("from grpc.framework.common import cardinality\n");
out->Print("from grpc.framework.interfaces.face import utilities as face_utilities\n");
return true;
diff --git a/src/compiler/ruby_generator.cc b/src/compiler/ruby_generator.cc
index 5ac56ad289..936a186beb 100644
--- a/src/compiler/ruby_generator.cc
+++ b/src/compiler/ruby_generator.cc
@@ -98,8 +98,8 @@ void PrintService(const ServiceDescriptor *service, const grpc::string &package,
out->Print("self.marshal_class_method = :encode\n");
out->Print("self.unmarshal_class_method = :decode\n");
std::map<grpc::string, grpc::string> pkg_vars =
- ListToDict({"service.name", service->name(), "pkg.name", package, });
- out->Print(pkg_vars, "self.service_name = '$pkg.name$.$service.name$'\n");
+ ListToDict({"service_full_name", service->full_name()});
+ out->Print(pkg_vars, "self.service_name = '$service_full_name$'\n");
out->Print("\n");
for (int i = 0; i < service->method_count(); ++i) {
PrintMethod(service->method(i), package, out);
diff --git a/src/core/ext/census/grpc_filter.c b/src/core/ext/census/grpc_filter.c
index abfb3bb5f0..5e278ef127 100644
--- a/src/core/ext/census/grpc_filter.c
+++ b/src/core/ext/census/grpc_filter.c
@@ -134,7 +134,7 @@ static void client_init_call_elem(grpc_exec_ctx *exec_ctx,
}
static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+ grpc_call_element *elem, void *ignored) {
call_data *d = elem->call_data;
GPR_ASSERT(d != NULL);
/* TODO(hongyu): record rpc client stats and census_rpc_end_op here */
@@ -152,7 +152,7 @@ static void server_init_call_elem(grpc_exec_ctx *exec_ctx,
}
static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+ grpc_call_element *elem, void *ignored) {
call_data *d = elem->call_data;
GPR_ASSERT(d != NULL);
/* TODO(hongyu): record rpc server stats and census_tracing_end_op here */
diff --git a/src/core/ext/client_config/client_channel.c b/src/core/ext/client_config/client_channel.c
index 93d54fdcfe..9b5a078aec 100644
--- a/src/core/ext/client_config/client_channel.c
+++ b/src/core/ext/client_config/client_channel.c
@@ -205,7 +205,11 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
gpr_mu_lock(&chand->mu_config);
old_lb_policy = chand->lb_policy;
chand->lb_policy = lb_policy;
- if (lb_policy != NULL || chand->resolver == NULL /* disconnected */) {
+ if (lb_policy != NULL) {
+ grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures,
+ NULL);
+ } else if (chand->resolver == NULL /* disconnected */) {
+ grpc_closure_list_fail_all(&chand->waiting_for_config_closures);
grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures,
NULL);
}
@@ -293,6 +297,11 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
grpc_resolver_shutdown(exec_ctx, chand->resolver);
GRPC_RESOLVER_UNREF(exec_ctx, chand->resolver, "channel");
chand->resolver = NULL;
+ if (!chand->started_resolving) {
+ grpc_closure_list_fail_all(&chand->waiting_for_config_closures);
+ grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures,
+ NULL);
+ }
if (chand->lb_policy != NULL) {
grpc_pollset_set_del_pollset_set(exec_ctx,
chand->lb_policy->interested_parties,
@@ -321,10 +330,10 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *arg,
static void continue_picking(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
continue_picking_args *cpa = arg;
- if (!success) {
- grpc_exec_ctx_enqueue(exec_ctx, cpa->on_ready, false, NULL);
- } else if (cpa->connected_subchannel == NULL) {
+ if (cpa->connected_subchannel == NULL) {
/* cancelled, do nothing */
+ } else if (!success) {
+ grpc_exec_ctx_enqueue(exec_ctx, cpa->on_ready, false, NULL);
} else if (cc_pick_subchannel(exec_ctx, cpa->elem, cpa->initial_metadata,
cpa->initial_metadata_flags,
cpa->connected_subchannel, cpa->on_ready)) {
@@ -381,14 +390,19 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
&chand->incoming_configuration,
&chand->on_config_changed);
}
- cpa = gpr_malloc(sizeof(*cpa));
- cpa->initial_metadata = initial_metadata;
- cpa->initial_metadata_flags = initial_metadata_flags;
- cpa->connected_subchannel = connected_subchannel;
- cpa->on_ready = on_ready;
- cpa->elem = elem;
- grpc_closure_init(&cpa->closure, continue_picking, cpa);
- grpc_closure_list_add(&chand->waiting_for_config_closures, &cpa->closure, 1);
+ if (chand->resolver != NULL) {
+ cpa = gpr_malloc(sizeof(*cpa));
+ cpa->initial_metadata = initial_metadata;
+ cpa->initial_metadata_flags = initial_metadata_flags;
+ cpa->connected_subchannel = connected_subchannel;
+ cpa->on_ready = on_ready;
+ cpa->elem = elem;
+ grpc_closure_init(&cpa->closure, continue_picking, cpa);
+ grpc_closure_list_add(&chand->waiting_for_config_closures, &cpa->closure,
+ 1);
+ } else {
+ grpc_exec_ctx_enqueue(exec_ctx, on_ready, false, NULL);
+ }
gpr_mu_unlock(&chand->mu_config);
return 0;
}
@@ -401,9 +415,10 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *and_free_memory) {
grpc_subchannel_call_holder_destroy(exec_ctx, elem->call_data);
+ gpr_free(and_free_memory);
}
/* Constructor for channel_data */
diff --git a/src/core/ext/client_config/resolver_registry.c b/src/core/ext/client_config/resolver_registry.c
index 07f29bcb27..e7a4abd568 100644
--- a/src/core/ext/client_config/resolver_registry.c
+++ b/src/core/ext/client_config/resolver_registry.c
@@ -47,7 +47,6 @@ static int g_number_of_resolvers = 0;
static char *g_default_resolver_prefix;
void grpc_resolver_registry_init(const char *default_resolver_prefix) {
- g_number_of_resolvers = 0;
g_default_resolver_prefix = gpr_strdup(default_resolver_prefix);
}
@@ -57,6 +56,13 @@ void grpc_resolver_registry_shutdown(void) {
grpc_resolver_factory_unref(g_all_of_the_resolvers[i]);
}
gpr_free(g_default_resolver_prefix);
+ // FIXME(ctiller): this should live in grpc_resolver_registry_init,
+ // however that would have the client_config plugin call this AFTER we start
+ // registering resolvers from third party plugins, and so they'd never show
+ // up.
+ // We likely need some kind of dependency system for plugins.... what form
+ // that takes is TBD.
+ g_number_of_resolvers = 0;
}
void grpc_register_resolver_type(grpc_resolver_factory *factory) {
diff --git a/src/core/ext/client_config/subchannel.c b/src/core/ext/client_config/subchannel.c
index 125a291f21..bd45d3825c 100644
--- a/src/core/ext/client_config/subchannel.c
+++ b/src/core/ext/client_config/subchannel.c
@@ -135,8 +135,6 @@ struct grpc_subchannel {
int have_alarm;
/** our alarm */
grpc_timer alarm;
- /** current random value */
- uint32_t random;
};
struct grpc_subchannel_call {
@@ -270,7 +268,7 @@ static void disconnect(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) {
con = GET_CONNECTED_SUBCHANNEL(c, no_barrier);
if (con != NULL) {
GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, con, "connection");
- gpr_atm_no_barrier_store(&c->connected_subchannel, 0xdeadbeef);
+ gpr_atm_no_barrier_store(&c->connected_subchannel, (gpr_atm)0xdeadbeef);
}
gpr_mu_unlock(&c->mu);
}
@@ -297,10 +295,6 @@ void grpc_subchannel_weak_unref(grpc_exec_ctx *exec_ctx,
}
}
-static uint32_t random_seed() {
- return (uint32_t)(gpr_time_to_millis(gpr_now(GPR_CLOCK_MONOTONIC)));
-}
-
grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx,
grpc_connector *connector,
grpc_subchannel_args *args) {
@@ -332,7 +326,6 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx,
grpc_set_initial_connect_string(&c->addr, &c->addr_len,
&c->initial_connect_string);
c->args = grpc_channel_args_copy(args->args);
- c->random = random_seed();
c->root_external_state_watcher.next = c->root_external_state_watcher.prev =
&c->root_external_state_watcher;
grpc_closure_init(&c->connected, subchannel_connected, c);
@@ -651,9 +644,9 @@ static void subchannel_call_destroy(grpc_exec_ctx *exec_ctx, void *call,
bool success) {
grpc_subchannel_call *c = call;
GPR_TIMER_BEGIN("grpc_subchannel_call_unref.destroy", 0);
- grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c));
- GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, c->connection, "subchannel_call");
- gpr_free(c);
+ grpc_connected_subchannel *connection = c->connection;
+ grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c), c);
+ GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, connection, "subchannel_call");
GPR_TIMER_END("grpc_subchannel_call_unref.destroy", 0);
}
diff --git a/src/core/ext/client_config/subchannel_call_holder.c b/src/core/ext/client_config/subchannel_call_holder.c
index 3db462b246..9918fbdcb4 100644
--- a/src/core/ext/client_config/subchannel_call_holder.c
+++ b/src/core/ext/client_config/subchannel_call_holder.c
@@ -252,9 +252,9 @@ char *grpc_subchannel_call_holder_get_peer(
grpc_exec_ctx *exec_ctx, grpc_subchannel_call_holder *holder) {
grpc_subchannel_call *subchannel_call = GET_CALL(holder);
- if (subchannel_call) {
- return grpc_subchannel_call_get_peer(exec_ctx, subchannel_call);
- } else {
+ if (subchannel_call == NULL || subchannel_call == CANCELLED_CALL) {
return NULL;
+ } else {
+ return grpc_subchannel_call_get_peer(exec_ctx, subchannel_call);
}
}
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index 3f6051b892..dcdc0c6285 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -306,8 +306,10 @@ static void start_picking(grpc_exec_ctx *exec_ctx, round_robin_lb_policy *p) {
size_t i;
p->started_picking = 1;
- gpr_log(GPR_DEBUG, "LB_POLICY: p=%p num_subchannels=%d", p,
- p->num_subchannels);
+ if (grpc_lb_round_robin_trace) {
+ gpr_log(GPR_DEBUG, "LB_POLICY: p=%p num_subchannels=%d", p,
+ p->num_subchannels);
+ }
for (i = 0; i < p->num_subchannels; i++) {
subchannel_data *sd = p->subchannels[i];
diff --git a/src/core/ext/resolver/dns/native/dns_resolver.c b/src/core/ext/resolver/dns/native/dns_resolver.c
index 2749b0ca01..620ba4e2aa 100644
--- a/src/core/ext/resolver/dns/native/dns_resolver.c
+++ b/src/core/ext/resolver/dns/native/dns_resolver.c
@@ -86,7 +86,8 @@ typedef struct {
static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
-static void dns_start_resolving_locked(dns_resolver *r);
+static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx,
+ dns_resolver *r);
static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
dns_resolver *r);
@@ -119,7 +120,7 @@ static void dns_channel_saw_error(grpc_exec_ctx *exec_ctx,
gpr_mu_lock(&r->mu);
if (!r->resolving) {
gpr_backoff_reset(&r->backoff_state);
- dns_start_resolving_locked(r);
+ dns_start_resolving_locked(exec_ctx, r);
}
gpr_mu_unlock(&r->mu);
}
@@ -134,7 +135,7 @@ static void dns_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
r->target_config = target_config;
if (r->resolved_version == 0 && !r->resolving) {
gpr_backoff_reset(&r->backoff_state);
- dns_start_resolving_locked(r);
+ dns_start_resolving_locked(exec_ctx, r);
} else {
dns_maybe_finish_next_locked(exec_ctx, r);
}
@@ -149,7 +150,7 @@ static void dns_on_retry_timer(grpc_exec_ctx *exec_ctx, void *arg,
r->have_retry_timer = false;
if (success) {
if (!r->resolving) {
- dns_start_resolving_locked(r);
+ dns_start_resolving_locked(exec_ctx, r);
}
}
gpr_mu_unlock(&r->mu);
@@ -201,11 +202,12 @@ static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "dns-resolving");
}
-static void dns_start_resolving_locked(dns_resolver *r) {
+static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx,
+ dns_resolver *r) {
GRPC_RESOLVER_REF(&r->base, "dns-resolving");
GPR_ASSERT(!r->resolving);
r->resolving = 1;
- grpc_resolve_address(r->name, r->default_port, dns_on_resolved, r);
+ grpc_resolve_address(exec_ctx, r->name, r->default_port, dns_on_resolved, r);
}
static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
index 898632c3cd..deb4b9b1ef 100644
--- a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
+++ b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
@@ -299,7 +299,7 @@ static void zookeeper_get_children_node_completion(int rc, const char *value,
address = zookeeper_parse_address(value, (size_t)value_len);
if (address != NULL) {
/** Further resolves address by DNS */
- grpc_resolve_address(address, NULL, zookeeper_dns_resolved, r);
+ grpc_resolve_address(&exec_ctx, address, NULL, zookeeper_dns_resolved, r);
gpr_free(address);
} else {
gpr_log(GPR_ERROR, "Error in resolving a child node of %s", r->name);
@@ -375,8 +375,10 @@ static void zookeeper_get_node_completion(int rc, const char *value,
r->resolved_addrs->naddrs = 0;
r->resolved_total = 1;
/** Further resolves address by DNS */
- grpc_resolve_address(address, NULL, zookeeper_dns_resolved, r);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, address, NULL, zookeeper_dns_resolved, r);
gpr_free(address);
+ grpc_exec_ctx_finish(&exec_ctx);
return;
}
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.c b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
index 0ed115793b..c5d3d8d9cc 100644
--- a/src/core/ext/transport/chttp2/client/insecure/channel_create.c
+++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
@@ -235,5 +235,7 @@ grpc_channel *grpc_insecure_channel_create(const char *target,
grpc_exec_ctx_finish(&exec_ctx);
- return channel; /* may be NULL */
+ return channel != NULL ? channel : grpc_lame_client_channel_create(
+ target, GRPC_STATUS_INTERNAL,
+ "Failed to create client channel");
}
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 01507f5ca6..b6886a2201 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -56,6 +56,8 @@
#define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
#define MAX_WINDOW 0x7fffffffu
+#define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
+
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
int grpc_http_trace = 0;
@@ -65,8 +67,8 @@ int grpc_flowctl_trace = 0;
((grpc_chttp2_transport *)((char *)(tw)-offsetof(grpc_chttp2_transport, \
writing)))
-#define TRANSPORT_FROM_PARSING(tw) \
- ((grpc_chttp2_transport *)((char *)(tw)-offsetof(grpc_chttp2_transport, \
+#define TRANSPORT_FROM_PARSING(tp) \
+ ((grpc_chttp2_transport *)((char *)(tp)-offsetof(grpc_chttp2_transport, \
parsing)))
#define TRANSPORT_FROM_GLOBAL(tg) \
@@ -81,27 +83,25 @@ int grpc_flowctl_trace = 0;
static const grpc_transport_vtable vtable;
-static void lock(grpc_chttp2_transport *t);
-static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t);
-
/* forward declarations of various callbacks that we'll build closures around */
static void writing_action(grpc_exec_ctx *exec_ctx, void *t,
bool iomgr_success_ignored);
+static void reading_action(grpc_exec_ctx *exec_ctx, void *t,
+ bool iomgr_success_ignored);
+static void parsing_action(grpc_exec_ctx *exec_ctx, void *t,
+ bool iomgr_success_ignored);
/** Set a transport level setting, and push it to our peer */
static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
uint32_t value);
-/** Endpoint callback to process incoming data */
-static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success);
-
/** Start disconnection chain */
static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t);
/** Perform a transport_op */
-static void perform_stream_op_locked(
- grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
- grpc_chttp2_stream_global *stream_global, grpc_transport_stream_op *op);
+static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s, void *transport_op);
/** Cancel a stream: coming from the transport API */
static void cancel_from_api(grpc_exec_ctx *exec_ctx,
@@ -118,15 +118,19 @@ static void close_from_api(grpc_exec_ctx *exec_ctx,
/** Add endpoint from this transport to pollset */
static void add_to_pollset_locked(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t,
- grpc_pollset *pollset);
+ grpc_chttp2_stream *s_ignored, void *pollset);
static void add_to_pollset_set_locked(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t,
- grpc_pollset_set *pollset_set);
+ grpc_chttp2_stream *s_ignored,
+ void *pollset_set);
/** Start new streams that have been created if we can */
static void maybe_start_some_streams(
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global);
+static void finish_global_actions(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t);
+
static void connectivity_state_set(
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
grpc_connectivity_state state, const char *reason);
@@ -138,7 +142,10 @@ static void incoming_byte_stream_update_flow_control(
grpc_chttp2_transport_global *transport_global,
grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
size_t have_already);
-
+static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s,
+ void *byte_stream);
static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
grpc_chttp2_stream_global *stream_global);
@@ -150,7 +157,7 @@ static void destruct_transport(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t) {
size_t i;
- gpr_mu_lock(&t->mu);
+ gpr_mu_lock(&t->executor.mu);
GPR_ASSERT(t->ep == NULL);
@@ -176,8 +183,8 @@ static void destruct_transport(grpc_exec_ctx *exec_ctx,
grpc_chttp2_stream_map_destroy(&t->new_stream_map);
grpc_connectivity_state_destroy(exec_ctx, &t->channel_callback.state_tracker);
- gpr_mu_unlock(&t->mu);
- gpr_mu_destroy(&t->mu);
+ gpr_mu_unlock(&t->executor.mu);
+ gpr_mu_destroy(&t->executor.mu);
/* callback remaining pings: they're not allowed to call into the transpot,
and maybe they hold resources that need to be freed */
@@ -238,7 +245,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
gpr_ref_init(&t->refs, 2);
/* ref is dropped at transport close() */
gpr_ref_init(&t->shutdown_ep_refs, 1);
- gpr_mu_init(&t->mu);
+ gpr_mu_init(&t->executor.mu);
t->peer_string = grpc_endpoint_get_peer(ep);
t->endpoint_reading = 1;
t->global.next_stream_id = is_client ? 1 : 2;
@@ -262,6 +269,8 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
gpr_slice_buffer_init(&t->writing.outbuf);
grpc_chttp2_hpack_compressor_init(&t->writing.hpack_compressor);
grpc_closure_init(&t->writing_action, writing_action, t);
+ grpc_closure_init(&t->reading_action, reading_action, t);
+ grpc_closure_init(&t->parsing_action, parsing_action, t);
gpr_slice_buffer_init(&t->parsing.qbuf);
grpc_chttp2_goaway_parser_init(&t->parsing.goaway_parser);
@@ -269,7 +278,6 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
grpc_closure_init(&t->writing.done_cb, grpc_chttp2_terminate_writing,
&t->writing);
- grpc_closure_init(&t->recv_data, recv_data, t);
gpr_slice_buffer_init(&t->read_buffer);
if (is_client) {
@@ -305,6 +313,8 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
}
push_setting(t, GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, DEFAULT_WINDOW);
+ push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
+ DEFAULT_MAX_HEADER_LIST_SIZE);
if (channel_args) {
for (i = 0; i < channel_args->num_args; i++) {
@@ -372,19 +382,35 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
&t->writing.hpack_compressor,
(uint32_t)channel_args->args[i].value.integer);
}
+ } else if (0 == strcmp(channel_args->args[i].key,
+ GRPC_ARG_MAX_METADATA_SIZE)) {
+ if (channel_args->args[i].type != GRPC_ARG_INTEGER) {
+ gpr_log(GPR_ERROR, "%s: must be an integer",
+ GRPC_ARG_MAX_METADATA_SIZE);
+ } else if (channel_args->args[i].value.integer < 0) {
+ gpr_log(GPR_ERROR, "%s: must be non-negative",
+ GRPC_ARG_MAX_METADATA_SIZE);
+ } else {
+ push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
+ (uint32_t)channel_args->args[i].value.integer);
+ }
}
}
}
}
-static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
- grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-
- lock(t);
+static void destroy_transport_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_ignored,
+ void *arg_ignored) {
t->destroying = 1;
drop_connection(exec_ctx, t);
- unlock(exec_ctx, t);
+}
+static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
+ grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
+ grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL, destroy_transport_locked,
+ NULL, 0);
UNREF_TRANSPORT(exec_ctx, t, "destroy");
}
@@ -404,17 +430,6 @@ static void allow_endpoint_shutdown_locked(grpc_exec_ctx *exec_ctx,
}
}
-static void allow_endpoint_shutdown_unlocked(grpc_exec_ctx *exec_ctx,
- grpc_chttp2_transport *t) {
- if (gpr_unref(&t->shutdown_ep_refs)) {
- gpr_mu_lock(&t->mu);
- if (t->ep) {
- grpc_endpoint_shutdown(exec_ctx, t->ep);
- }
- gpr_mu_unlock(&t->mu);
- }
-}
-
static void destroy_endpoint(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t) {
grpc_endpoint_destroy(exec_ctx, t->ep);
@@ -424,7 +439,9 @@ static void destroy_endpoint(grpc_exec_ctx *exec_ctx,
}
static void close_transport_locked(grpc_exec_ctx *exec_ctx,
- grpc_chttp2_transport *t) {
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_ignored,
+ void *arg_ignored) {
if (!t->closed) {
t->closed = 1;
connectivity_state_set(exec_ctx, &t->global, GRPC_CHANNEL_FATAL_FAILURE,
@@ -464,6 +481,13 @@ void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx,
}
#endif
+static void finish_init_stream_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s,
+ void *arg_ignored) {
+ grpc_chttp2_register_stream(t, s);
+}
+
static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_stream *gs, grpc_stream_refcount *refcount,
const void *server_data) {
@@ -473,6 +497,10 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
memset(s, 0, sizeof(*s));
s->refcount = refcount;
+ /* We reserve one 'active stream' that's dropped when the stream is
+ read-closed. The others are for incoming_byte_streams that are actively
+ reading */
+ gpr_ref_init(&s->global.active_streams, 1);
GRPC_CHTTP2_STREAM_REF(&s->global, "chttp2");
grpc_chttp2_incoming_metadata_buffer_init(&s->parsing.metadata_buffer[0]);
@@ -486,10 +514,8 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
REF_TRANSPORT(t, "stream");
- lock(t);
- grpc_chttp2_register_stream(t, s);
if (server_data) {
- GPR_ASSERT(t->parsing_active);
+ GPR_ASSERT(t->executor.parsing_active);
s->global.id = (uint32_t)(uintptr_t)server_data;
s->parsing.id = s->global.id;
s->global.outgoing_window =
@@ -500,42 +526,44 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
*t->accepting_stream = s;
grpc_chttp2_stream_map_add(&t->parsing_stream_map, s->global.id, s);
- s->global.in_stream_map = 1;
+ s->global.in_stream_map = true;
}
- unlock(exec_ctx, t);
+
+ grpc_chttp2_run_with_global_lock(exec_ctx, t, s, finish_init_stream_locked,
+ NULL, 0);
return 0;
}
-static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
- grpc_stream *gs) {
- grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
- grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
- int i;
+static void destroy_stream_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s, void *arg) {
grpc_byte_stream *bs;
GPR_TIMER_BEGIN("destroy_stream", 0);
- gpr_mu_lock(&t->mu);
-
GPR_ASSERT((s->global.write_closed && s->global.read_closed) ||
s->global.id == 0);
GPR_ASSERT(!s->global.in_stream_map);
if (grpc_chttp2_unregister_stream(t, s) && t->global.sent_goaway) {
- close_transport_locked(exec_ctx, t);
+ close_transport_locked(exec_ctx, t, NULL, NULL);
}
- if (!t->parsing_active && s->global.id) {
+ if (!t->executor.parsing_active && s->global.id) {
GPR_ASSERT(grpc_chttp2_stream_map_find(&t->parsing_stream_map,
s->global.id) == NULL);
}
+ while (
+ (bs = grpc_chttp2_incoming_frame_queue_pop(&s->global.incoming_frames))) {
+ incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
+ }
+
grpc_chttp2_list_remove_unannounced_incoming_window_available(&t->global,
&s->global);
grpc_chttp2_list_remove_stalled_by_transport(&t->global, &s->global);
+ grpc_chttp2_list_remove_check_read_ops(&t->global, &s->global);
- gpr_mu_unlock(&t->mu);
-
- for (i = 0; i < STREAM_LIST_COUNT; i++) {
+ for (int i = 0; i < STREAM_LIST_COUNT; i++) {
if (s->included[i]) {
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
t->global.is_client ? "client" : "server", s->global.id, i);
@@ -543,11 +571,6 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
}
}
- while (
- (bs = grpc_chttp2_incoming_frame_queue_pop(&s->global.incoming_frames))) {
- grpc_byte_stream_destroy(exec_ctx, bs);
- }
-
GPR_ASSERT(s->global.send_initial_metadata_finished == NULL);
GPR_ASSERT(s->global.send_message_finished == NULL);
GPR_ASSERT(s->global.send_trailing_metadata_finished == NULL);
@@ -566,6 +589,17 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
UNREF_TRANSPORT(exec_ctx, t, "stream");
GPR_TIMER_END("destroy_stream", 0);
+
+ gpr_free(arg);
+}
+
+static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+ grpc_stream *gs, void *and_free_memory) {
+ grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
+ grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
+
+ grpc_chttp2_run_with_global_lock(exec_ctx, t, s, destroy_stream_locked,
+ and_free_memory, 0);
}
grpc_chttp2_stream_parsing *grpc_chttp2_parsing_lookup_stream(
@@ -594,28 +628,96 @@ grpc_chttp2_stream_parsing *grpc_chttp2_parsing_accept_stream(
* LOCK MANAGEMENT
*/
-/* We take a grpc_chttp2_transport-global lock in response to calls coming in
- from above,
- and in response to data being received from below. New data to be written
- is always queued, as are callbacks to process data. During unlock() we
- check our todo lists and initiate callbacks and flush writes. */
-
-static void lock(grpc_chttp2_transport *t) { gpr_mu_lock(&t->mu); }
-
-static void unlock(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
- GPR_TIMER_BEGIN("unlock", 0);
- if (!t->writing_active && !t->closed &&
- grpc_chttp2_unlocking_check_writes(exec_ctx, &t->global, &t->writing,
- t->parsing_active)) {
- t->writing_active = 1;
- REF_TRANSPORT(t, "writing");
- grpc_exec_ctx_enqueue(exec_ctx, &t->writing_action, true, NULL);
- prevent_endpoint_shutdown(t);
+static void finish_global_actions(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t) {
+ grpc_chttp2_executor_action_header *hdr;
+ grpc_chttp2_executor_action_header *next;
+
+ for (;;) {
+ if (!t->executor.writing_active && !t->closed &&
+ grpc_chttp2_unlocking_check_writes(exec_ctx, &t->global, &t->writing,
+ t->executor.parsing_active)) {
+ t->executor.writing_active = 1;
+ REF_TRANSPORT(t, "writing");
+ prevent_endpoint_shutdown(t);
+ grpc_exec_ctx_enqueue(exec_ctx, &t->writing_action, true, NULL);
+ }
+ check_read_ops(exec_ctx, &t->global);
+
+ gpr_mu_lock(&t->executor.mu);
+ if (t->executor.pending_actions_head != NULL) {
+ hdr = t->executor.pending_actions_head;
+ t->executor.pending_actions_head = t->executor.pending_actions_tail =
+ NULL;
+ gpr_mu_unlock(&t->executor.mu);
+ while (hdr != NULL) {
+ hdr->action(exec_ctx, t, hdr->stream, hdr->arg);
+ next = hdr->next;
+ gpr_free(hdr);
+ UNREF_TRANSPORT(exec_ctx, t, "pending_action");
+ hdr = next;
+ }
+ continue;
+ } else {
+ t->executor.global_active = false;
+ }
+ gpr_mu_unlock(&t->executor.mu);
+ break;
}
- check_read_ops(exec_ctx, &t->global);
+}
+
+void grpc_chttp2_run_with_global_lock(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *optional_stream,
+ grpc_chttp2_locked_action action,
+ void *arg, size_t sizeof_arg) {
+ grpc_chttp2_executor_action_header *hdr;
+
+ REF_TRANSPORT(t, "run_global");
+ gpr_mu_lock(&t->executor.mu);
+
+ for (;;) {
+ if (!t->executor.global_active) {
+ t->executor.global_active = 1;
+ gpr_mu_unlock(&t->executor.mu);
+
+ action(exec_ctx, t, optional_stream, arg);
+
+ finish_global_actions(exec_ctx, t);
+ } else {
+ gpr_mu_unlock(&t->executor.mu);
- gpr_mu_unlock(&t->mu);
- GPR_TIMER_END("unlock", 0);
+ hdr = gpr_malloc(sizeof(*hdr) + sizeof_arg);
+ hdr->stream = optional_stream;
+ hdr->action = action;
+ if (sizeof_arg == 0) {
+ hdr->arg = arg;
+ } else {
+ hdr->arg = hdr + 1;
+ memcpy(hdr->arg, arg, sizeof_arg);
+ }
+
+ gpr_mu_lock(&t->executor.mu);
+ if (!t->executor.global_active) {
+ /* global lock was released while allocating memory: release & retry */
+ gpr_free(hdr);
+ continue;
+ }
+ hdr->next = NULL;
+ if (t->executor.pending_actions_head != NULL) {
+ t->executor.pending_actions_tail =
+ t->executor.pending_actions_tail->next = hdr;
+ } else {
+ t->executor.pending_actions_tail = t->executor.pending_actions_head =
+ hdr;
+ }
+ REF_TRANSPORT(t, "pending_action");
+ gpr_mu_unlock(&t->executor.mu);
+ }
+ break;
+ }
+
+ UNREF_TRANSPORT(exec_ctx, t, "run_global");
}
/*******************************************************************************
@@ -645,15 +747,11 @@ static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
}
}
-void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
- void *transport_writing_ptr, bool success) {
- grpc_chttp2_transport_writing *transport_writing = transport_writing_ptr;
- grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
- grpc_chttp2_stream_global *stream_global;
-
- GPR_TIMER_BEGIN("grpc_chttp2_terminate_writing", 0);
-
- lock(t);
+static void terminate_writing_with_lock(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_ignored,
+ void *a) {
+ bool success = (bool)(uintptr_t)a;
allow_endpoint_shutdown_locked(exec_ctx, t);
@@ -663,24 +761,30 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
grpc_chttp2_cleanup_writing(exec_ctx, &t->global, &t->writing);
+ grpc_chttp2_stream_global *stream_global;
while (grpc_chttp2_list_pop_closed_waiting_for_writing(&t->global,
&stream_global)) {
fail_pending_writes(exec_ctx, stream_global);
GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream_global, "finish_writes");
}
- /* leave the writing flag up on shutdown to prevent further writes in unlock()
+ /* leave the writing flag up on shutdown to prevent further writes in
+ unlock()
from starting */
- t->writing_active = 0;
+ t->executor.writing_active = 0;
if (t->ep && !t->endpoint_reading) {
destroy_endpoint(exec_ctx, t);
}
- unlock(exec_ctx, t);
-
UNREF_TRANSPORT(exec_ctx, t, "writing");
+}
- GPR_TIMER_END("grpc_chttp2_terminate_writing", 0);
+void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
+ void *transport_writing, bool success) {
+ grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
+ grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL,
+ terminate_writing_with_lock,
+ (void *)(uintptr_t)success, 0);
}
static void writing_action(grpc_exec_ctx *exec_ctx, void *gt,
@@ -695,7 +799,8 @@ void grpc_chttp2_add_incoming_goaway(
grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
uint32_t goaway_error, gpr_slice goaway_text) {
char *msg = gpr_dump_slice(goaway_text, GPR_DUMP_HEX | GPR_DUMP_ASCII);
- gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg);
+ GRPC_CHTTP2_IF_TRACING(
+ gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg));
gpr_free(msg);
gpr_slice_unref(goaway_text);
transport_global->seen_goaway = 1;
@@ -745,7 +850,7 @@ static void maybe_start_some_streams(
grpc_chttp2_stream_map_add(
&TRANSPORT_FROM_GLOBAL(transport_global)->new_stream_map,
stream_global->id, STREAM_FROM_GLOBAL(stream_global));
- stream_global->in_stream_map = 1;
+ stream_global->in_stream_map = true;
transport_global->concurrent_stream_count++;
grpc_chttp2_become_writable(transport_global, stream_global);
}
@@ -806,14 +911,16 @@ static int contains_non_ok_status(
static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, bool success) {}
-static void perform_stream_op_locked(
- grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
- grpc_chttp2_stream_global *stream_global, grpc_transport_stream_op *op) {
- grpc_closure *on_complete;
-
+static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s, void *stream_op) {
GPR_TIMER_BEGIN("perform_stream_op_locked", 0);
- on_complete = op->on_complete;
+ grpc_transport_stream_op *op = stream_op;
+ grpc_chttp2_transport_global *transport_global = &t->global;
+ grpc_chttp2_stream_global *stream_global = &s->global;
+
+ grpc_closure *on_complete = op->on_complete;
if (on_complete == NULL) {
on_complete = grpc_closure_create(do_nothing, NULL);
}
@@ -842,24 +949,38 @@ static void perform_stream_op_locked(
stream_global->send_initial_metadata_finished =
add_closure_barrier(on_complete);
stream_global->send_initial_metadata = op->send_initial_metadata;
- if (contains_non_ok_status(transport_global, op->send_initial_metadata)) {
- stream_global->seen_error = 1;
- grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
- }
- if (!stream_global->write_closed) {
- if (transport_global->is_client) {
- GPR_ASSERT(stream_global->id == 0);
- grpc_chttp2_list_add_waiting_for_concurrency(transport_global,
- stream_global);
- maybe_start_some_streams(exec_ctx, transport_global);
+ const size_t metadata_size =
+ grpc_metadata_batch_size(op->send_initial_metadata);
+ const size_t metadata_peer_limit =
+ transport_global->settings[GRPC_PEER_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+ if (metadata_size > metadata_peer_limit) {
+ gpr_log(GPR_DEBUG,
+ "to-be-sent initial metadata size exceeds peer limit "
+ "(%lu vs. %lu)",
+ metadata_size, metadata_peer_limit);
+ cancel_from_api(exec_ctx, transport_global, stream_global,
+ GRPC_STATUS_RESOURCE_EXHAUSTED);
+ } else {
+ if (contains_non_ok_status(transport_global, op->send_initial_metadata)) {
+ stream_global->seen_error = true;
+ grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
+ }
+ if (!stream_global->write_closed) {
+ if (transport_global->is_client) {
+ GPR_ASSERT(stream_global->id == 0);
+ grpc_chttp2_list_add_waiting_for_concurrency(transport_global,
+ stream_global);
+ maybe_start_some_streams(exec_ctx, transport_global);
+ } else {
+ GPR_ASSERT(stream_global->id != 0);
+ grpc_chttp2_become_writable(transport_global, stream_global);
+ }
} else {
- GPR_ASSERT(stream_global->id != 0);
- grpc_chttp2_become_writable(transport_global, stream_global);
+ grpc_chttp2_complete_closure_step(
+ exec_ctx, stream_global,
+ &stream_global->send_initial_metadata_finished, 0);
}
- } else {
- grpc_chttp2_complete_closure_step(
- exec_ctx, stream_global,
- &stream_global->send_initial_metadata_finished, 0);
}
}
@@ -883,19 +1004,34 @@ static void perform_stream_op_locked(
stream_global->send_trailing_metadata_finished =
add_closure_barrier(on_complete);
stream_global->send_trailing_metadata = op->send_trailing_metadata;
- if (contains_non_ok_status(transport_global, op->send_trailing_metadata)) {
- stream_global->seen_error = 1;
- grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
- }
- if (stream_global->write_closed) {
- grpc_chttp2_complete_closure_step(
- exec_ctx, stream_global,
- &stream_global->send_trailing_metadata_finished,
- grpc_metadata_batch_is_empty(op->send_trailing_metadata));
- } else if (stream_global->id != 0) {
- /* TODO(ctiller): check if there's flow control for any outstanding
- bytes before going writable */
- grpc_chttp2_become_writable(transport_global, stream_global);
+ const size_t metadata_size =
+ grpc_metadata_batch_size(op->send_trailing_metadata);
+ const size_t metadata_peer_limit =
+ transport_global->settings[GRPC_PEER_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+ if (metadata_size > metadata_peer_limit) {
+ gpr_log(GPR_DEBUG,
+ "to-be-sent trailing metadata size exceeds peer limit "
+ "(%lu vs. %lu)",
+ metadata_size, metadata_peer_limit);
+ cancel_from_api(exec_ctx, transport_global, stream_global,
+ GRPC_STATUS_RESOURCE_EXHAUSTED);
+ } else {
+ if (contains_non_ok_status(transport_global,
+ op->send_trailing_metadata)) {
+ stream_global->seen_error = true;
+ grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
+ }
+ if (stream_global->write_closed) {
+ grpc_chttp2_complete_closure_step(
+ exec_ctx, stream_global,
+ &stream_global->send_trailing_metadata_finished,
+ grpc_metadata_batch_is_empty(op->send_trailing_metadata));
+ } else if (stream_global->id != 0) {
+ /* TODO(ctiller): check if there's flow control for any outstanding
+ bytes before going writable */
+ grpc_chttp2_become_writable(transport_global, stream_global);
+ }
}
}
@@ -938,10 +1074,8 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_stream *gs, grpc_transport_stream_op *op) {
grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
-
- lock(t);
- perform_stream_op_locked(exec_ctx, &t->global, &s->global, op);
- unlock(exec_ctx, t);
+ grpc_chttp2_run_with_global_lock(exec_ctx, t, s, perform_stream_op_locked, op,
+ sizeof(*op));
}
static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_recv) {
@@ -961,13 +1095,10 @@ static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_recv) {
gpr_slice_buffer_add(&t->global.qbuf, grpc_chttp2_ping_create(0, p->id));
}
-void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
- grpc_chttp2_transport_parsing *transport_parsing,
- const uint8_t *opaque_8bytes) {
+static void ack_ping_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s, void *opaque_8bytes) {
grpc_chttp2_outstanding_ping *ping;
- grpc_chttp2_transport *t = TRANSPORT_FROM_PARSING(transport_parsing);
grpc_chttp2_transport_global *transport_global = &t->global;
- lock(t);
for (ping = transport_global->pings.next; ping != &transport_global->pings;
ping = ping->next) {
if (0 == memcmp(opaque_8bytes, ping->id, 8)) {
@@ -978,13 +1109,31 @@ void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
break;
}
}
- unlock(exec_ctx, t);
+}
+
+void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport_parsing *transport_parsing,
+ const uint8_t *opaque_8bytes) {
+ grpc_chttp2_run_with_global_lock(
+ exec_ctx, TRANSPORT_FROM_PARSING(transport_parsing), NULL,
+ ack_ping_locked, (void *)opaque_8bytes, 8);
}
static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t,
- grpc_transport_op *op) {
- bool close_transport = false;
+ grpc_chttp2_stream *s_unused,
+ void *stream_op) {
+ grpc_transport_op *op = stream_op;
+ bool close_transport = op->disconnect;
+
+ /* If there's a set_accept_stream ensure that we're not parsing
+ to avoid changing things out from underneath */
+ if (t->executor.parsing_active && op->set_accept_stream) {
+ GPR_ASSERT(t->post_parsing_op == NULL);
+ t->post_parsing_op = gpr_malloc(sizeof(*op));
+ memcpy(t->post_parsing_op, op, sizeof(*op));
+ return;
+ }
grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, true, NULL);
@@ -1010,47 +1159,31 @@ static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx,
}
if (op->bind_pollset) {
- add_to_pollset_locked(exec_ctx, t, op->bind_pollset);
+ add_to_pollset_locked(exec_ctx, t, NULL, op->bind_pollset);
}
if (op->bind_pollset_set) {
- add_to_pollset_set_locked(exec_ctx, t, op->bind_pollset_set);
+ add_to_pollset_set_locked(exec_ctx, t, NULL, op->bind_pollset_set);
}
if (op->send_ping) {
send_ping_locked(t, op->send_ping);
}
- if (op->disconnect) {
- close_transport_locked(exec_ctx, t);
- }
-
if (close_transport) {
- close_transport_locked(exec_ctx, t);
+ close_transport_locked(exec_ctx, t, NULL, NULL);
}
}
static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_transport_op *op) {
grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-
- lock(t);
-
- /* If there's a set_accept_stream ensure that we're not parsing
- to avoid changing things out from underneath */
- if (t->parsing_active && op->set_accept_stream) {
- GPR_ASSERT(t->post_parsing_op == NULL);
- t->post_parsing_op = gpr_malloc(sizeof(*op));
- memcpy(t->post_parsing_op, op, sizeof(*op));
- } else {
- perform_transport_op_locked(exec_ctx, t, op);
- }
-
- unlock(exec_ctx, t);
+ grpc_chttp2_run_with_global_lock(
+ exec_ctx, t, NULL, perform_transport_op_locked, op, sizeof(*op));
}
/*******************************************************************************
- * INPUT PROCESSING
+ * INPUT PROCESSING - GENERAL
*/
static void check_read_ops(grpc_exec_ctx *exec_ctx,
@@ -1061,6 +1194,16 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
grpc_chttp2_list_pop_check_read_ops(transport_global, &stream_global)) {
if (stream_global->recv_initial_metadata_ready != NULL &&
stream_global->published_initial_metadata) {
+ if (stream_global->seen_error) {
+ while ((bs = grpc_chttp2_incoming_frame_queue_pop(
+ &stream_global->incoming_frames)) != NULL) {
+ incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
+ }
+ if (stream_global->exceeded_metadata_size) {
+ cancel_from_api(exec_ctx, transport_global, stream_global,
+ GRPC_STATUS_RESOURCE_EXHAUSTED);
+ }
+ }
grpc_chttp2_incoming_metadata_buffer_publish(
&stream_global->received_initial_metadata,
stream_global->recv_initial_metadata);
@@ -1072,7 +1215,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
while (stream_global->seen_error &&
(bs = grpc_chttp2_incoming_frame_queue_pop(
&stream_global->incoming_frames)) != NULL) {
- grpc_byte_stream_destroy(exec_ctx, bs);
+ incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
}
if (stream_global->incoming_frames.head != NULL) {
*stream_global->recv_message = grpc_chttp2_incoming_frame_queue_pop(
@@ -1090,12 +1233,17 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
}
if (stream_global->recv_trailing_metadata_finished != NULL &&
stream_global->read_closed && stream_global->write_closed) {
- while (stream_global->seen_error &&
- (bs = grpc_chttp2_incoming_frame_queue_pop(
- &stream_global->incoming_frames)) != NULL) {
- grpc_byte_stream_destroy(exec_ctx, bs);
+ if (stream_global->seen_error) {
+ while ((bs = grpc_chttp2_incoming_frame_queue_pop(
+ &stream_global->incoming_frames)) != NULL) {
+ incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
+ }
+ if (stream_global->exceeded_metadata_size) {
+ cancel_from_api(exec_ctx, transport_global, stream_global,
+ GRPC_STATUS_RESOURCE_EXHAUSTED);
+ }
}
- if (stream_global->incoming_frames.head == NULL) {
+ if (stream_global->all_incoming_byte_streams_finished) {
grpc_chttp2_incoming_metadata_buffer_publish(
&stream_global->received_trailing_metadata,
stream_global->recv_trailing_metadata);
@@ -1107,6 +1255,15 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
}
}
+static void decrement_active_streams_locked(
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
+ grpc_chttp2_stream_global *stream_global) {
+ if ((stream_global->all_incoming_byte_streams_finished =
+ gpr_unref(&stream_global->active_streams))) {
+ grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
+ }
+}
+
static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
uint32_t id) {
size_t new_stream_count;
@@ -1116,7 +1273,7 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
s = grpc_chttp2_stream_map_delete(&t->new_stream_map, id);
}
GPR_ASSERT(s);
- s->global.in_stream_map = 0;
+ s->global.in_stream_map = false;
if (t->parsing.incoming_stream == &s->parsing) {
t->parsing.incoming_stream = NULL;
grpc_chttp2_parsing_become_skip_parser(exec_ctx, &t->parsing);
@@ -1128,7 +1285,7 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
}
if (grpc_chttp2_unregister_stream(t, s) && t->global.sent_goaway) {
- close_transport_locked(exec_ctx, t);
+ close_transport_locked(exec_ctx, t, NULL, NULL);
}
if (grpc_chttp2_list_remove_writable_stream(&t->global, &s->global)) {
GRPC_CHTTP2_STREAM_UNREF(exec_ctx, &s->global, "chttp2_writing");
@@ -1160,7 +1317,7 @@ static void cancel_from_api(grpc_exec_ctx *exec_ctx,
NULL);
}
if (status != GRPC_STATUS_OK && !stream_global->seen_error) {
- stream_global->seen_error = 1;
+ stream_global->seen_error = true;
grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
}
grpc_chttp2_mark_stream_closed(exec_ctx, transport_global, stream_global, 1,
@@ -1172,7 +1329,7 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
grpc_chttp2_stream_global *stream_global,
grpc_status_code status, gpr_slice *slice) {
if (status != GRPC_STATUS_OK) {
- stream_global->seen_error = 1;
+ stream_global->seen_error = true;
grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
}
/* stream_global->recv_trailing_metadata_finished gives us a
@@ -1196,7 +1353,7 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
GRPC_MDSTR_GRPC_MESSAGE,
grpc_mdstr_from_slice(gpr_slice_ref(*slice))));
}
- stream_global->published_trailing_metadata = 1;
+ stream_global->published_trailing_metadata = true;
grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
}
if (slice) {
@@ -1226,13 +1383,14 @@ void grpc_chttp2_mark_stream_closed(
}
grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
if (close_reads && !stream_global->read_closed) {
- stream_global->read_closed = 1;
- stream_global->published_initial_metadata = 1;
- stream_global->published_trailing_metadata = 1;
+ stream_global->read_closed = true;
+ stream_global->published_initial_metadata = true;
+ stream_global->published_trailing_metadata = true;
+ decrement_active_streams_locked(exec_ctx, transport_global, stream_global);
}
if (close_writes && !stream_global->write_closed) {
- stream_global->write_closed = 1;
- if (TRANSPORT_FROM_GLOBAL(transport_global)->writing_active) {
+ stream_global->write_closed = true;
+ if (TRANSPORT_FROM_GLOBAL(transport_global)->executor.writing_active) {
GRPC_CHTTP2_STREAM_REF(stream_global, "finish_writes");
grpc_chttp2_list_add_closed_waiting_for_writing(transport_global,
stream_global);
@@ -1242,7 +1400,7 @@ void grpc_chttp2_mark_stream_closed(
}
if (stream_global->read_closed && stream_global->write_closed) {
if (stream_global->id != 0 &&
- TRANSPORT_FROM_GLOBAL(transport_global)->parsing_active) {
+ TRANSPORT_FROM_GLOBAL(transport_global)->executor.parsing_active) {
grpc_chttp2_list_add_closed_waiting_for_parsing(transport_global,
stream_global);
} else {
@@ -1374,7 +1532,7 @@ static void end_all_the_calls(grpc_exec_ctx *exec_ctx,
}
static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
- close_transport_locked(exec_ctx, t);
+ close_transport_locked(exec_ctx, t, NULL, NULL);
end_all_the_calls(exec_ctx, t);
}
@@ -1398,102 +1556,136 @@ static void update_global_window(void *args, uint32_t id, void *stream) {
}
}
-static void read_error_locked(grpc_exec_ctx *exec_ctx,
- grpc_chttp2_transport *t) {
- t->endpoint_reading = 0;
- if (!t->writing_active && t->ep) {
- destroy_endpoint(exec_ctx, t);
- }
-}
+/*******************************************************************************
+ * INPUT PROCESSING - PARSING
+ */
-/* tcp read callback */
-static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success) {
- size_t i;
- int keep_reading = 0;
- grpc_chttp2_transport *t = tp;
+static void reading_action_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_unused, void *arg);
+static void parsing_action(grpc_exec_ctx *exec_ctx, void *arg, bool success);
+static void post_reading_action_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_unused, void *arg);
+static void post_parse_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_unused, void *arg);
+
+static void reading_action(grpc_exec_ctx *exec_ctx, void *tp, bool success) {
+ /* Control flow:
+ reading_action_locked ->
+ (parse_unlocked -> post_parse_locked)? ->
+ post_reading_action_locked */
+ grpc_chttp2_run_with_global_lock(exec_ctx, tp, NULL, reading_action_locked,
+ (void *)(uintptr_t)success, 0);
+}
+
+static void reading_action_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_unused, void *arg) {
grpc_chttp2_transport_global *transport_global = &t->global;
grpc_chttp2_transport_parsing *transport_parsing = &t->parsing;
- grpc_chttp2_stream_global *stream_global;
-
- GPR_TIMER_BEGIN("recv_data", 0);
+ bool success = (bool)(uintptr_t)arg;
- lock(t);
- i = 0;
- GPR_ASSERT(!t->parsing_active);
+ GPR_ASSERT(!t->executor.parsing_active);
if (!t->closed) {
- t->parsing_active = 1;
+ t->executor.parsing_active = 1;
/* merge stream lists */
grpc_chttp2_stream_map_move_into(&t->new_stream_map,
&t->parsing_stream_map);
grpc_chttp2_prepare_to_read(transport_global, transport_parsing);
- gpr_mu_unlock(&t->mu);
- GPR_TIMER_BEGIN("recv_data.parse", 0);
- for (; i < t->read_buffer.count &&
- grpc_chttp2_perform_read(exec_ctx, transport_parsing,
- t->read_buffer.slices[i]);
- i++)
- ;
- GPR_TIMER_END("recv_data.parse", 0);
- gpr_mu_lock(&t->mu);
- /* copy parsing qbuf to global qbuf */
- gpr_slice_buffer_move_into(&t->parsing.qbuf, &t->global.qbuf);
- if (i != t->read_buffer.count) {
- unlock(exec_ctx, t);
- lock(t);
- drop_connection(exec_ctx, t);
- }
- /* merge stream lists */
- grpc_chttp2_stream_map_move_into(&t->new_stream_map,
- &t->parsing_stream_map);
- transport_global->concurrent_stream_count =
- (uint32_t)grpc_chttp2_stream_map_size(&t->parsing_stream_map);
- if (transport_parsing->initial_window_update != 0) {
- grpc_chttp2_stream_map_for_each(&t->parsing_stream_map,
- update_global_window, t);
- transport_parsing->initial_window_update = 0;
- }
- /* handle higher level things */
- grpc_chttp2_publish_reads(exec_ctx, transport_global, transport_parsing);
- t->parsing_active = 0;
- /* handle delayed transport ops (if there is one) */
- if (t->post_parsing_op) {
- grpc_transport_op *op = t->post_parsing_op;
- t->post_parsing_op = NULL;
- perform_transport_op_locked(exec_ctx, t, op);
- gpr_free(op);
- }
- /* if a stream is in the stream map, and gets cancelled, we need to ensure
- * we are not parsing before continuing the cancellation to keep things in
- * a sane state */
- while (grpc_chttp2_list_pop_closed_waiting_for_parsing(transport_global,
- &stream_global)) {
- GPR_ASSERT(stream_global->in_stream_map);
- GPR_ASSERT(stream_global->write_closed);
- GPR_ASSERT(stream_global->read_closed);
- remove_stream(exec_ctx, t, stream_global->id);
- GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream_global, "chttp2");
- }
+ grpc_exec_ctx_enqueue(exec_ctx, &t->parsing_action, success, NULL);
+ } else {
+ post_reading_action_locked(exec_ctx, t, s_unused, arg);
+ }
+}
+
+static void parsing_action(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+ grpc_chttp2_transport *t = arg;
+ GPR_TIMER_BEGIN("reading_action.parse", 0);
+ size_t i = 0;
+ for (; i < t->read_buffer.count &&
+ grpc_chttp2_perform_read(exec_ctx, &t->parsing,
+ t->read_buffer.slices[i]);
+ i++)
+ ;
+ if (i != t->read_buffer.count) {
+ success = false;
}
- if (!success || i != t->read_buffer.count || t->closed) {
+ GPR_TIMER_END("reading_action.parse", 0);
+ grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL, post_parse_locked,
+ (void *)(uintptr_t)success, 0);
+}
+
+static void post_parse_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_unused, void *arg) {
+ grpc_chttp2_transport_global *transport_global = &t->global;
+ grpc_chttp2_transport_parsing *transport_parsing = &t->parsing;
+ /* copy parsing qbuf to global qbuf */
+ gpr_slice_buffer_move_into(&t->parsing.qbuf, &t->global.qbuf);
+ /* merge stream lists */
+ grpc_chttp2_stream_map_move_into(&t->new_stream_map, &t->parsing_stream_map);
+ transport_global->concurrent_stream_count =
+ (uint32_t)grpc_chttp2_stream_map_size(&t->parsing_stream_map);
+ if (transport_parsing->initial_window_update != 0) {
+ grpc_chttp2_stream_map_for_each(&t->parsing_stream_map,
+ update_global_window, t);
+ transport_parsing->initial_window_update = 0;
+ }
+ /* handle higher level things */
+ grpc_chttp2_publish_reads(exec_ctx, transport_global, transport_parsing);
+ t->executor.parsing_active = 0;
+ /* handle delayed transport ops (if there is one) */
+ if (t->post_parsing_op) {
+ grpc_transport_op *op = t->post_parsing_op;
+ t->post_parsing_op = NULL;
+ perform_transport_op_locked(exec_ctx, t, NULL, op);
+ gpr_free(op);
+ }
+ /* if a stream is in the stream map, and gets cancelled, we need to
+ * ensure we are not parsing before continuing the cancellation to keep
+ * things in a sane state */
+ grpc_chttp2_stream_global *stream_global;
+ while (grpc_chttp2_list_pop_closed_waiting_for_parsing(transport_global,
+ &stream_global)) {
+ GPR_ASSERT(stream_global->in_stream_map);
+ GPR_ASSERT(stream_global->write_closed);
+ GPR_ASSERT(stream_global->read_closed);
+ remove_stream(exec_ctx, t, stream_global->id);
+ GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream_global, "chttp2");
+ }
+
+ post_reading_action_locked(exec_ctx, t, s_unused, arg);
+}
+
+static void post_reading_action_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s_unused,
+ void *arg) {
+ bool success = (bool)(uintptr_t)arg;
+ bool keep_reading = false;
+ if (!success || t->closed) {
drop_connection(exec_ctx, t);
- read_error_locked(exec_ctx, t);
+ t->endpoint_reading = 0;
+ if (!t->executor.writing_active && t->ep) {
+ grpc_endpoint_destroy(exec_ctx, t->ep);
+ t->ep = NULL;
+ /* safe as we still have a ref for read */
+ UNREF_TRANSPORT(exec_ctx, t, "disconnect");
+ }
} else if (!t->closed) {
- keep_reading = 1;
+ keep_reading = true;
REF_TRANSPORT(t, "keep_reading");
prevent_endpoint_shutdown(t);
}
gpr_slice_buffer_reset_and_unref(&t->read_buffer);
- unlock(exec_ctx, t);
if (keep_reading) {
- grpc_endpoint_read(exec_ctx, t->ep, &t->read_buffer, &t->recv_data);
- allow_endpoint_shutdown_unlocked(exec_ctx, t);
+ grpc_endpoint_read(exec_ctx, t->ep, &t->read_buffer, &t->reading_action);
+ allow_endpoint_shutdown_locked(exec_ctx, t);
UNREF_TRANSPORT(exec_ctx, t, "keep_reading");
} else {
- UNREF_TRANSPORT(exec_ctx, t, "recv_data");
+ UNREF_TRANSPORT(exec_ctx, t, "reading_action");
}
-
- GPR_TIMER_END("recv_data", 0);
}
/*******************************************************************************
@@ -1517,7 +1709,7 @@ static void connectivity_state_set(
static void add_to_pollset_locked(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t,
- grpc_pollset *pollset) {
+ grpc_chttp2_stream *s_unused, void *pollset) {
if (t->ep) {
grpc_endpoint_add_to_pollset(exec_ctx, t->ep, pollset);
}
@@ -1525,7 +1717,8 @@ static void add_to_pollset_locked(grpc_exec_ctx *exec_ctx,
static void add_to_pollset_set_locked(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport *t,
- grpc_pollset_set *pollset_set) {
+ grpc_chttp2_stream *s_unused,
+ void *pollset_set) {
if (t->ep) {
grpc_endpoint_add_to_pollset_set(exec_ctx, t->ep, pollset_set);
}
@@ -1533,16 +1726,24 @@ static void add_to_pollset_set_locked(grpc_exec_ctx *exec_ctx,
static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_stream *gs, grpc_pollset *pollset) {
- grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
- lock(t);
- add_to_pollset_locked(exec_ctx, t, pollset);
- unlock(exec_ctx, t);
+ /* TODO(ctiller): keep pollset alive */
+ grpc_chttp2_run_with_global_lock(exec_ctx, (grpc_chttp2_transport *)gt,
+ (grpc_chttp2_stream *)gs,
+ add_to_pollset_locked, pollset, 0);
}
/*******************************************************************************
* BYTE STREAM
*/
+static void incoming_byte_stream_unref(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_incoming_byte_stream *bs) {
+ if (gpr_unref(&bs->refs)) {
+ gpr_slice_buffer_destroy(&bs->slices);
+ gpr_free(bs);
+ }
+}
+
static void incoming_byte_stream_update_flow_control(
grpc_chttp2_transport_global *transport_global,
grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
@@ -1583,87 +1784,146 @@ static void incoming_byte_stream_update_flow_control(
}
}
-static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
- grpc_byte_stream *byte_stream,
- gpr_slice *slice, size_t max_size_hint,
- grpc_closure *on_complete) {
+typedef struct {
+ grpc_chttp2_incoming_byte_stream *byte_stream;
+ gpr_slice *slice;
+ size_t max_size_hint;
+ grpc_closure *on_complete;
+} incoming_byte_stream_next_arg;
+
+static void incoming_byte_stream_next_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s,
+ void *argp) {
+ incoming_byte_stream_next_arg *arg = argp;
grpc_chttp2_incoming_byte_stream *bs =
- (grpc_chttp2_incoming_byte_stream *)byte_stream;
+ (grpc_chttp2_incoming_byte_stream *)arg->byte_stream;
grpc_chttp2_transport_global *transport_global = &bs->transport->global;
grpc_chttp2_stream_global *stream_global = &bs->stream->global;
- lock(bs->transport);
if (bs->is_tail) {
- incoming_byte_stream_update_flow_control(transport_global, stream_global,
- max_size_hint, bs->slices.length);
+ incoming_byte_stream_update_flow_control(
+ transport_global, stream_global, arg->max_size_hint, bs->slices.length);
}
if (bs->slices.count > 0) {
- *slice = gpr_slice_buffer_take_first(&bs->slices);
- unlock(exec_ctx, bs->transport);
- return 1;
+ *arg->slice = gpr_slice_buffer_take_first(&bs->slices);
+ grpc_exec_ctx_enqueue(exec_ctx, arg->on_complete, true, NULL);
} else if (bs->failed) {
- grpc_exec_ctx_enqueue(exec_ctx, on_complete, false, NULL);
- unlock(exec_ctx, bs->transport);
- return 0;
+ grpc_exec_ctx_enqueue(exec_ctx, arg->on_complete, false, NULL);
} else {
- bs->on_next = on_complete;
- bs->next = slice;
- unlock(exec_ctx, bs->transport);
- return 0;
+ bs->on_next = arg->on_complete;
+ bs->next = arg->slice;
}
+ incoming_byte_stream_unref(exec_ctx, bs);
}
-static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) {
- if (gpr_unref(&bs->refs)) {
- gpr_slice_buffer_destroy(&bs->slices);
- gpr_free(bs);
- }
+static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
+ grpc_byte_stream *byte_stream,
+ gpr_slice *slice, size_t max_size_hint,
+ grpc_closure *on_complete) {
+ grpc_chttp2_incoming_byte_stream *bs =
+ (grpc_chttp2_incoming_byte_stream *)byte_stream;
+ incoming_byte_stream_next_arg arg = {bs, slice, max_size_hint, on_complete};
+ gpr_ref(&bs->refs);
+ grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+ incoming_byte_stream_next_locked, &arg,
+ sizeof(arg));
+ return 0;
+}
+
+static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
+ grpc_byte_stream *byte_stream);
+
+static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s,
+ void *byte_stream) {
+ grpc_chttp2_incoming_byte_stream *bs = byte_stream;
+ GPR_ASSERT(bs->base.destroy == incoming_byte_stream_destroy);
+ decrement_active_streams_locked(exec_ctx, &bs->transport->global,
+ &bs->stream->global);
+ incoming_byte_stream_unref(exec_ctx, bs);
}
static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
grpc_byte_stream *byte_stream) {
- incoming_byte_stream_unref((grpc_chttp2_incoming_byte_stream *)byte_stream);
+ grpc_chttp2_incoming_byte_stream *bs =
+ (grpc_chttp2_incoming_byte_stream *)byte_stream;
+ grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+ incoming_byte_stream_destroy_locked, bs, 0);
}
-void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
- grpc_chttp2_incoming_byte_stream *bs,
- gpr_slice slice) {
- gpr_mu_lock(&bs->transport->mu);
+typedef struct {
+ grpc_chttp2_incoming_byte_stream *byte_stream;
+ gpr_slice slice;
+} incoming_byte_stream_push_arg;
+
+static void incoming_byte_stream_push_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s,
+ void *argp) {
+ incoming_byte_stream_push_arg *arg = argp;
+ grpc_chttp2_incoming_byte_stream *bs = arg->byte_stream;
if (bs->on_next != NULL) {
- *bs->next = slice;
+ *bs->next = arg->slice;
grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, true, NULL);
bs->on_next = NULL;
} else {
- gpr_slice_buffer_add(&bs->slices, slice);
+ gpr_slice_buffer_add(&bs->slices, arg->slice);
}
- gpr_mu_unlock(&bs->transport->mu);
+ incoming_byte_stream_unref(exec_ctx, bs);
+}
+
+void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_incoming_byte_stream *bs,
+ gpr_slice slice) {
+ incoming_byte_stream_push_arg arg = {bs, slice};
+ gpr_ref(&bs->refs);
+ grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+ incoming_byte_stream_push_locked, &arg,
+ sizeof(arg));
+}
+
+static void incoming_byte_stream_finished_failed_locked(
+ grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s,
+ void *argp) {
+ grpc_chttp2_incoming_byte_stream *bs = argp;
+ grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
+ bs->on_next = NULL;
+ bs->failed = 1;
+ incoming_byte_stream_unref(exec_ctx, bs);
+}
+
+static void incoming_byte_stream_finished_ok_locked(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s,
+ void *argp) {
+ grpc_chttp2_incoming_byte_stream *bs = argp;
+ incoming_byte_stream_unref(exec_ctx, bs);
}
void grpc_chttp2_incoming_byte_stream_finished(
grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, int success,
int from_parsing_thread) {
- if (!success) {
- if (from_parsing_thread) {
- gpr_mu_lock(&bs->transport->mu);
- }
- grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
- bs->on_next = NULL;
- bs->failed = 1;
- if (from_parsing_thread) {
- gpr_mu_unlock(&bs->transport->mu);
+ if (from_parsing_thread) {
+ if (success) {
+ grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+ incoming_byte_stream_finished_ok_locked,
+ bs, 0);
+ } else {
+ incoming_byte_stream_finished_ok_locked(exec_ctx, bs->transport,
+ bs->stream, bs);
}
} else {
-#ifndef NDEBUG
- if (from_parsing_thread) {
- gpr_mu_lock(&bs->transport->mu);
- }
- GPR_ASSERT(bs->on_next == NULL);
- if (from_parsing_thread) {
- gpr_mu_unlock(&bs->transport->mu);
+ if (success) {
+ grpc_chttp2_run_with_global_lock(
+ exec_ctx, bs->transport, bs->stream,
+ incoming_byte_stream_finished_failed_locked, bs, 0);
+ } else {
+ incoming_byte_stream_finished_failed_locked(exec_ctx, bs->transport,
+ bs->stream, bs);
}
-#endif
}
- incoming_byte_stream_unref(bs);
}
grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
@@ -1680,6 +1940,7 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
incoming_byte_stream->next_message = NULL;
incoming_byte_stream->transport = TRANSPORT_FROM_PARSING(transport_parsing);
incoming_byte_stream->stream = STREAM_FROM_PARSING(stream_parsing);
+ gpr_ref(&incoming_byte_stream->stream->global.active_streams);
gpr_slice_buffer_init(&incoming_byte_stream->slices);
incoming_byte_stream->on_next = NULL;
incoming_byte_stream->is_tail = 1;
@@ -1810,7 +2071,7 @@ void grpc_chttp2_transport_start_reading(grpc_exec_ctx *exec_ctx,
grpc_transport *transport,
gpr_slice *slices, size_t nslices) {
grpc_chttp2_transport *t = (grpc_chttp2_transport *)transport;
- REF_TRANSPORT(t, "recv_data"); /* matches unref inside recv_data */
+ REF_TRANSPORT(t, "reading_action"); /* matches unref inside reading_action */
gpr_slice_buffer_addn(&t->read_buffer, slices, nslices);
- recv_data(exec_ctx, t, 1);
+ reading_action(exec_ctx, t, 1);
}
diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
index 22467e9ddd..7f01105e3e 100644
--- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
+++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
@@ -45,15 +45,20 @@ gpr_slice grpc_chttp2_rst_stream_create(uint32_t id, uint32_t code,
stats->framing_bytes += frame_size;
uint8_t *p = GPR_SLICE_START_PTR(slice);
+ // Frame size.
*p++ = 0;
*p++ = 0;
*p++ = 4;
+ // Frame type.
*p++ = GRPC_CHTTP2_FRAME_RST_STREAM;
+ // Flags.
*p++ = 0;
+ // Stream ID.
*p++ = (uint8_t)(id >> 24);
*p++ = (uint8_t)(id >> 16);
*p++ = (uint8_t)(id >> 8);
*p++ = (uint8_t)(id);
+ // Error code.
*p++ = (uint8_t)(code >> 24);
*p++ = (uint8_t)(code >> 16);
*p++ = (uint8_t)(code >> 8);
diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.c b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
index 555027c866..ebeee37f0d 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_encoder.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
@@ -63,6 +63,8 @@
/* don't consider adding anything bigger than this to the hpack table */
#define MAX_DECODER_SPACE_USAGE 512
+extern int grpc_http_trace;
+
typedef struct {
int is_first_frame;
/* number of bytes in 'output' when we started the frame - used to calculate
@@ -532,7 +534,9 @@ void grpc_chttp2_hpack_compressor_set_max_table_size(
}
}
c->advertise_table_size_change = 1;
- gpr_log(GPR_DEBUG, "set max table size from encoder to %d", max_table_size);
+ if (grpc_http_trace) {
+ gpr_log(GPR_DEBUG, "set max table size from encoder to %d", max_table_size);
+ }
}
void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c,
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c
index 93c3e6d8b4..687936bfd3 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c
@@ -639,7 +639,7 @@ static int on_hdr(grpc_chttp2_hpack_parser *p, grpc_mdelem *md,
}
}
if (p->on_header == NULL) {
- grpc_mdelem_unref(md);
+ GRPC_MDELEM_UNREF(md);
return 0;
}
p->on_header(p->on_header_user_data, md);
diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.c b/src/core/ext/transport/chttp2/transport/hpack_table.c
index 4d64506de2..295f31c44f 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_table.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_table.c
@@ -253,7 +253,9 @@ void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl,
if (tbl->max_bytes == max_bytes) {
return;
}
- gpr_log(GPR_DEBUG, "Update hpack parser max size to %d", max_bytes);
+ if (grpc_http_trace) {
+ gpr_log(GPR_DEBUG, "Update hpack parser max size to %d", max_bytes);
+ }
while (tbl->mem_used > max_bytes) {
evict1(tbl);
}
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.c b/src/core/ext/transport/chttp2/transport/incoming_metadata.c
index db21744f0c..3e463a7995 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.c
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.c
@@ -65,6 +65,7 @@ void grpc_chttp2_incoming_metadata_buffer_add(
gpr_realloc(buffer->elems, sizeof(*buffer->elems) * buffer->capacity);
}
buffer->elems[buffer->count++].md = elem;
+ buffer->size += GRPC_MDELEM_LENGTH(elem);
}
void grpc_chttp2_incoming_metadata_buffer_set_deadline(
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
index 17ecf8e181..df4343b93e 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
@@ -42,6 +42,7 @@ typedef struct {
size_t capacity;
gpr_timespec deadline;
int published;
+ size_t size; // total size of metadata
} grpc_chttp2_incoming_metadata_buffer;
/** assumes everything initially zeroed */
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index 98cd38abd4..5872fd8e0a 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -236,9 +236,6 @@ struct grpc_chttp2_transport_parsing {
/** was a goaway frame received? */
uint8_t goaway_received;
- /** the last sent max_table_size setting */
- uint32_t last_sent_max_table_size;
-
/** initial window change */
int64_t initial_window_update;
@@ -272,6 +269,9 @@ struct grpc_chttp2_transport_parsing {
uint32_t incoming_frame_size;
uint32_t incoming_stream_id;
+ /* current max frame size */
+ uint32_t max_frame_size;
+
/* active parser */
void *parser_data;
grpc_chttp2_stream_parsing *incoming_stream;
@@ -282,6 +282,8 @@ struct grpc_chttp2_transport_parsing {
/* received settings */
uint32_t settings[GRPC_CHTTP2_NUM_SETTINGS];
+ /* last settings that were sent */
+ uint32_t last_sent_settings[GRPC_CHTTP2_NUM_SETTINGS];
/* goaway data */
grpc_status_code goaway_error;
@@ -291,27 +293,45 @@ struct grpc_chttp2_transport_parsing {
int64_t outgoing_window;
};
+typedef void (*grpc_chttp2_locked_action)(grpc_exec_ctx *ctx,
+ grpc_chttp2_transport *t,
+ grpc_chttp2_stream *s, void *arg);
+
+typedef struct grpc_chttp2_executor_action_header {
+ grpc_chttp2_stream *stream;
+ grpc_chttp2_locked_action action;
+ struct grpc_chttp2_executor_action_header *next;
+ void *arg;
+} grpc_chttp2_executor_action_header;
+
struct grpc_chttp2_transport {
grpc_transport base; /* must be first */
- grpc_endpoint *ep;
gpr_refcount refs;
+ grpc_endpoint *ep;
char *peer_string;
/** when this drops to zero it's safe to shutdown the endpoint */
gpr_refcount shutdown_ep_refs;
- gpr_mu mu;
+ struct {
+ gpr_mu mu;
+
+ /** is a thread currently in the global lock */
+ bool global_active;
+ /** is a thread currently writing */
+ bool writing_active;
+ /** is a thread currently parsing */
+ bool parsing_active;
+
+ grpc_chttp2_executor_action_header *pending_actions_head;
+ grpc_chttp2_executor_action_header *pending_actions_tail;
+ } executor;
/** is the transport destroying itself? */
uint8_t destroying;
/** has the upper layer closed the transport? */
uint8_t closed;
- /** is a thread currently writing */
- uint8_t writing_active;
- /** is a thread currently parsing */
- uint8_t parsing_active;
-
/** is there a read request to the endpoint outstanding? */
uint8_t endpoint_reading;
@@ -338,8 +358,10 @@ struct grpc_chttp2_transport {
/** closure to execute writing */
grpc_closure writing_action;
- /** closure to finish reading from the endpoint */
- grpc_closure recv_data;
+ /** closure to start reading from the endpoint */
+ grpc_closure reading_action;
+ /** closure to actually do parsing */
+ grpc_closure parsing_action;
/** incoming read bytes */
gpr_slice_buffer read_buffer;
@@ -397,21 +419,24 @@ typedef struct {
grpc_transport_stream_stats *collecting_stats;
grpc_transport_stream_stats stats;
- /** when the application requests writes be closed, the write_closed is
- 'queued'; when the close is flow controlled into the send path, we are
- 'sending' it; when the write has been performed it is 'sent' */
- uint8_t write_closed;
- /** is this stream reading half-closed (boolean) */
- uint8_t read_closed;
- /** is this stream in the stream map? (boolean) */
- uint8_t in_stream_map;
- /** has this stream seen an error? if 1, then pending incoming frames
- can be thrown away */
- uint8_t seen_error;
-
- uint8_t published_initial_metadata;
- uint8_t published_trailing_metadata;
- uint8_t faked_trailing_metadata;
+ /** number of streams that are currently being read */
+ gpr_refcount active_streams;
+
+ /** Is this stream closed for writing. */
+ bool write_closed;
+ /** Is this stream reading half-closed. */
+ bool read_closed;
+ /** Are all published incoming byte streams closed. */
+ bool all_incoming_byte_streams_finished;
+ /** Is this stream in the stream map. */
+ bool in_stream_map;
+ /** Has this stream seen an error.
+ If true, then pending incoming frames can be thrown away. */
+ bool seen_error;
+ bool exceeded_metadata_size;
+
+ bool published_initial_metadata;
+ bool published_trailing_metadata;
grpc_chttp2_incoming_metadata_buffer received_initial_metadata;
grpc_chttp2_incoming_metadata_buffer received_trailing_metadata;
@@ -454,7 +479,8 @@ struct grpc_chttp2_stream_parsing {
/** which metadata did we get (on this parse) */
uint8_t got_metadata_on_parse[2];
/** should we raise the seen_error flag in transport_global */
- uint8_t seen_error;
+ bool seen_error;
+ bool exceeded_metadata_size;
/** window available for peer to send to us */
int64_t incoming_window;
/** parsing state for data frames */
@@ -570,6 +596,9 @@ int grpc_chttp2_list_pop_waiting_for_concurrency(
void grpc_chttp2_list_add_check_read_ops(
grpc_chttp2_transport_global *transport_global,
grpc_chttp2_stream_global *stream_global);
+bool grpc_chttp2_list_remove_check_read_ops(
+ grpc_chttp2_transport_global *transport_global,
+ grpc_chttp2_stream_global *stream_global);
int grpc_chttp2_list_pop_check_read_ops(
grpc_chttp2_transport_global *transport_global,
grpc_chttp2_stream_global **stream_global);
@@ -645,6 +674,12 @@ void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx,
grpc_chttp2_stream_global *stream_global,
grpc_closure **pclosure, int success);
+void grpc_chttp2_run_with_global_lock(grpc_exec_ctx *exec_ctx,
+ grpc_chttp2_transport *transport,
+ grpc_chttp2_stream *optional_stream,
+ grpc_chttp2_locked_action action,
+ void *arg, size_t sizeof_arg);
+
#define GRPC_CHTTP2_CLIENT_CONNECT_STRING "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
#define GRPC_CHTTP2_CLIENT_CONNECT_STRLEN \
(sizeof(GRPC_CHTTP2_CLIENT_CONNECT_STRING) - 1)
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index e827a43f7a..4bd374b7fa 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -45,6 +45,10 @@
#include "src/core/lib/profiling/timers.h"
#include "src/core/lib/transport/static_metadata.h"
+#define TRANSPORT_FROM_PARSING(tp) \
+ ((grpc_chttp2_transport *)((char *)(tp)-offsetof(grpc_chttp2_transport, \
+ parsing)))
+
static int init_frame_parser(grpc_exec_ctx *exec_ctx,
grpc_chttp2_transport_parsing *transport_parsing);
static int init_header_frame_parser(
@@ -79,9 +83,12 @@ void grpc_chttp2_prepare_to_read(
GPR_TIMER_BEGIN("grpc_chttp2_prepare_to_read", 0);
transport_parsing->next_stream_id = transport_global->next_stream_id;
- transport_parsing->last_sent_max_table_size =
- transport_global->settings[GRPC_SENT_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE];
+ memcpy(transport_parsing->last_sent_settings,
+ transport_global->settings[GRPC_SENT_SETTINGS],
+ sizeof(transport_parsing->last_sent_settings));
+ transport_parsing->max_frame_size =
+ transport_global->settings[GRPC_ACKED_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE];
/* update the parsing view of incoming window */
while (grpc_chttp2_list_pop_unannounced_incoming_window_available(
@@ -167,7 +174,9 @@ void grpc_chttp2_publish_reads(
while (grpc_chttp2_list_pop_parsing_seen_stream(
transport_global, transport_parsing, &stream_global, &stream_parsing)) {
if (stream_parsing->seen_error) {
- stream_global->seen_error = 1;
+ stream_global->seen_error = true;
+ stream_global->exceeded_metadata_size =
+ stream_parsing->exceeded_metadata_size;
grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
}
@@ -388,6 +397,12 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
return 1;
}
goto dts_fh_0; /* loop */
+ } else if (transport_parsing->incoming_frame_size >
+ transport_parsing->max_frame_size) {
+ gpr_log(GPR_DEBUG, "Frame size %d is larger than max frame size %d",
+ transport_parsing->incoming_frame_size,
+ transport_parsing->max_frame_size);
+ return 0;
}
if (++cur == end) {
return 1;
@@ -603,7 +618,7 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
if (md->key == GRPC_MDSTR_GRPC_STATUS && md != GRPC_MDELEM_GRPC_STATUS_0) {
/* TODO(ctiller): check for a status like " 0" */
- stream_parsing->seen_error = 1;
+ stream_parsing->seen_error = true;
}
if (md->key == GRPC_MDSTR_GRPC_TIMEOUT) {
@@ -624,8 +639,26 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), *cached_timeout));
GRPC_MDELEM_UNREF(md);
} else {
- grpc_chttp2_incoming_metadata_buffer_add(
- &stream_parsing->metadata_buffer[0], md);
+ const size_t new_size =
+ stream_parsing->metadata_buffer[0].size + GRPC_MDELEM_LENGTH(md);
+ grpc_chttp2_transport_global *transport_global =
+ &TRANSPORT_FROM_PARSING(transport_parsing)->global;
+ const size_t metadata_size_limit =
+ transport_global->settings[GRPC_LOCAL_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+ if (new_size > metadata_size_limit) {
+ if (!stream_parsing->exceeded_metadata_size) {
+ gpr_log(GPR_DEBUG,
+ "received initial metadata size exceeds limit (%lu vs. %lu)",
+ new_size, metadata_size_limit);
+ stream_parsing->seen_error = true;
+ stream_parsing->exceeded_metadata_size = true;
+ }
+ GRPC_MDELEM_UNREF(md);
+ } else {
+ grpc_chttp2_incoming_metadata_buffer_add(
+ &stream_parsing->metadata_buffer[0], md);
+ }
}
grpc_chttp2_list_add_parsing_seen_stream(transport_parsing, stream_parsing);
@@ -649,12 +682,30 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
if (md->key == GRPC_MDSTR_GRPC_STATUS && md != GRPC_MDELEM_GRPC_STATUS_0) {
/* TODO(ctiller): check for a status like " 0" */
- stream_parsing->seen_error = 1;
+ stream_parsing->seen_error = true;
+ }
+
+ const size_t new_size =
+ stream_parsing->metadata_buffer[1].size + GRPC_MDELEM_LENGTH(md);
+ grpc_chttp2_transport_global *transport_global =
+ &TRANSPORT_FROM_PARSING(transport_parsing)->global;
+ const size_t metadata_size_limit =
+ transport_global->settings[GRPC_LOCAL_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+ if (new_size > metadata_size_limit) {
+ if (!stream_parsing->exceeded_metadata_size) {
+ gpr_log(GPR_DEBUG,
+ "received trailing metadata size exceeds limit (%lu vs. %lu)",
+ new_size, metadata_size_limit);
+ stream_parsing->seen_error = true;
+ stream_parsing->exceeded_metadata_size = true;
+ }
+ GRPC_MDELEM_UNREF(md);
+ } else {
+ grpc_chttp2_incoming_metadata_buffer_add(
+ &stream_parsing->metadata_buffer[1], md);
}
- grpc_chttp2_incoming_metadata_buffer_add(&stream_parsing->metadata_buffer[1],
- md);
-
grpc_chttp2_list_add_parsing_seen_stream(transport_parsing, stream_parsing);
GPR_TIMER_END("on_trailing_header", 0);
@@ -840,7 +891,11 @@ static int init_settings_frame_parser(
transport_parsing->settings_ack_received = 1;
grpc_chttp2_hptbl_set_max_bytes(
&transport_parsing->hpack_parser.table,
- transport_parsing->last_sent_max_table_size);
+ transport_parsing
+ ->last_sent_settings[GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
+ transport_parsing->max_frame_size =
+ transport_parsing
+ ->last_sent_settings[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE];
}
transport_parsing->parser = grpc_chttp2_settings_parser_parse;
transport_parsing->parser_data = &transport_parsing->simple.settings;
diff --git a/src/core/ext/transport/chttp2/transport/stream_lists.c b/src/core/ext/transport/chttp2/transport/stream_lists.c
index e5b35aadca..8f3ab00e6d 100644
--- a/src/core/ext/transport/chttp2/transport/stream_lists.c
+++ b/src/core/ext/transport/chttp2/transport/stream_lists.c
@@ -305,6 +305,14 @@ void grpc_chttp2_list_add_check_read_ops(
GRPC_CHTTP2_LIST_CHECK_READ_OPS);
}
+bool grpc_chttp2_list_remove_check_read_ops(
+ grpc_chttp2_transport_global *transport_global,
+ grpc_chttp2_stream_global *stream_global) {
+ return stream_list_maybe_remove(TRANSPORT_FROM_GLOBAL(transport_global),
+ STREAM_FROM_GLOBAL(stream_global),
+ GRPC_CHTTP2_LIST_CHECK_READ_OPS);
+}
+
int grpc_chttp2_list_pop_check_read_ops(
grpc_chttp2_transport_global *transport_global,
grpc_chttp2_stream_global **stream_global) {
diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h
index 0a51780a14..23c7b7b897 100644
--- a/src/core/lib/channel/channel_args.h
+++ b/src/core/lib/channel/channel_args.h
@@ -56,10 +56,6 @@ grpc_channel_args *grpc_channel_args_merge(const grpc_channel_args *a,
/** Destroy arguments created by \a grpc_channel_args_copy */
void grpc_channel_args_destroy(grpc_channel_args *a);
-/** Reads census_enabled settings from channel args. Returns 1 if census_enabled
- * is specified in channel args, otherwise returns 0. */
-int grpc_channel_args_is_census_enabled(const grpc_channel_args *a);
-
/** Returns the compression algorithm set in \a a. */
grpc_compression_algorithm grpc_channel_args_get_compression_algorithm(
const grpc_channel_args *a);
diff --git a/src/core/lib/channel/channel_stack.c b/src/core/lib/channel/channel_stack.c
index e36066d863..ad182d1f69 100644
--- a/src/core/lib/channel/channel_stack.c
+++ b/src/core/lib/channel/channel_stack.c
@@ -213,14 +213,16 @@ void grpc_call_stack_ignore_set_pollset(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
grpc_pollset *pollset) {}
-void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack) {
+void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack,
+ void *and_free_memory) {
grpc_call_element *elems = CALL_ELEMS_FROM_STACK(stack);
size_t count = stack->count;
size_t i;
/* destroy per-filter data */
for (i = 0; i < count; i++) {
- elems[i].filter->destroy_call_elem(exec_ctx, &elems[i]);
+ elems[i].filter->destroy_call_elem(exec_ctx, &elems[i],
+ i == count - 1 ? and_free_memory : NULL);
}
}
diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h
index 9e3a25a152..36c17cb467 100644
--- a/src/core/lib/channel/channel_stack.h
+++ b/src/core/lib/channel/channel_stack.h
@@ -104,8 +104,12 @@ typedef struct {
void (*set_pollset)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
grpc_pollset *pollset);
/* Destroy per call data.
- The filter does not need to do any chaining */
- void (*destroy_call_elem)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem);
+ The filter does not need to do any chaining.
+ The bottom filter of a stack will be passed a non-NULL pointer to
+ \a and_free_memory that should be passed to gpr_free when destruction
+ is complete. */
+ void (*destroy_call_elem)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *and_free_memory);
/* sizeof(per channel data) */
size_t sizeof_channel_data;
@@ -223,7 +227,8 @@ void grpc_call_stack_set_pollset(grpc_exec_ctx *exec_ctx,
#endif
/* Destroy a call stack */
-void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack);
+void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack,
+ void *and_free_memory);
/* Ignore set pollset - used by filters to implement the set_pollset method
if they don't care about pollsets at all. Does nothing. */
diff --git a/src/core/lib/channel/compress_filter.c b/src/core/lib/channel/compress_filter.c
index 229fdb5ef6..5510c79b18 100644
--- a/src/core/lib/channel/compress_filter.c
+++ b/src/core/lib/channel/compress_filter.c
@@ -47,6 +47,8 @@
#include "src/core/lib/support/string.h"
#include "src/core/lib/transport/static_metadata.h"
+int grpc_compress_filter_trace = 0;
+
typedef struct call_data {
gpr_slice_buffer slices; /**< Buffers up input slices to be compressed */
grpc_linked_mdelem compression_algorithm_storage;
@@ -169,9 +171,29 @@ static void finish_send_message(grpc_exec_ctx *exec_ctx,
did_compress =
grpc_msg_compress(calld->compression_algorithm, &calld->slices, &tmp);
if (did_compress) {
+ if (grpc_compress_filter_trace) {
+ char *algo_name;
+ const size_t before_size = calld->slices.length;
+ const size_t after_size = tmp.length;
+ const float savings_ratio = 1.0f - (float)after_size / (float)before_size;
+ GPR_ASSERT(grpc_compression_algorithm_name(calld->compression_algorithm,
+ &algo_name));
+ gpr_log(GPR_DEBUG,
+ "Compressed[%s] %d bytes vs. %d bytes (%.2f%% savings)",
+ algo_name, before_size, after_size, 100 * savings_ratio);
+ }
gpr_slice_buffer_swap(&calld->slices, &tmp);
calld->send_flags |= GRPC_WRITE_INTERNAL_COMPRESS;
+ } else {
+ if (grpc_compress_filter_trace) {
+ char *algo_name;
+ GPR_ASSERT(grpc_compression_algorithm_name(calld->compression_algorithm,
+ &algo_name));
+ gpr_log(GPR_DEBUG, "Algorithm '%s' enabled but decided not to compress.",
+ algo_name);
+ }
}
+
gpr_slice_buffer_destroy(&tmp);
grpc_slice_buffer_stream_init(&calld->replacement_stream, &calld->slices,
@@ -246,8 +268,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {
/* grab pointers to our data from the call element */
call_data *calld = elem->call_data;
gpr_slice_buffer_destroy(&calld->slices);
@@ -268,8 +290,14 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx,
channeld->default_compression_algorithm =
grpc_channel_args_get_compression_algorithm(args->channel_args);
/* Make sure the default isn't disabled. */
- GPR_ASSERT(grpc_compression_options_is_algorithm_enabled(
- &channeld->compression_options, channeld->default_compression_algorithm));
+ if (!grpc_compression_options_is_algorithm_enabled(
+ &channeld->compression_options,
+ channeld->default_compression_algorithm)) {
+ gpr_log(GPR_DEBUG,
+ "compression algorithm %d not enabled: switching to none",
+ channeld->default_compression_algorithm);
+ channeld->default_compression_algorithm = GRPC_COMPRESS_NONE;
+ }
channeld->compression_options.default_compression_algorithm =
channeld->default_compression_algorithm;
diff --git a/src/core/lib/channel/compress_filter.h b/src/core/lib/channel/compress_filter.h
index 0d973329c4..cf5879d82e 100644
--- a/src/core/lib/channel/compress_filter.h
+++ b/src/core/lib/channel/compress_filter.h
@@ -38,6 +38,8 @@
#define GRPC_COMPRESS_REQUEST_ALGORITHM_KEY "grpc-internal-encoding-request"
+extern int grpc_compress_filter_trace;
+
/** Compression filter for outgoing data.
*
* See <grpc/compression.h> for the available compression settings.
diff --git a/src/core/lib/channel/connected_channel.c b/src/core/lib/channel/connected_channel.c
index c1debab4c6..68a3a7d6fd 100644
--- a/src/core/lib/channel/connected_channel.c
+++ b/src/core/lib/channel/connected_channel.c
@@ -102,12 +102,13 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *and_free_memory) {
call_data *calld = elem->call_data;
channel_data *chand = elem->channel_data;
grpc_transport_destroy_stream(exec_ctx, chand->transport,
- TRANSPORT_STREAM_FROM_CALL_DATA(calld));
+ TRANSPORT_STREAM_FROM_CALL_DATA(calld),
+ and_free_memory);
}
/* Constructor for channel_data */
diff --git a/src/core/lib/channel/http_client_filter.c b/src/core/lib/channel/http_client_filter.c
index 211f537c69..516e708d1f 100644
--- a/src/core/lib/channel/http_client_filter.c
+++ b/src/core/lib/channel/http_client_filter.c
@@ -155,8 +155,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {}
static grpc_mdelem *scheme_from_args(const grpc_channel_args *args) {
unsigned i;
diff --git a/src/core/lib/channel/http_server_filter.c b/src/core/lib/channel/http_server_filter.c
index c140c61b8f..ba865416de 100644
--- a/src/core/lib/channel/http_server_filter.c
+++ b/src/core/lib/channel/http_server_filter.c
@@ -39,6 +39,9 @@
#include "src/core/lib/profiling/timers.h"
#include "src/core/lib/transport/static_metadata.h"
+#define EXPECTED_CONTENT_TYPE "application/grpc"
+#define EXPECTED_CONTENT_TYPE_LENGTH sizeof(EXPECTED_CONTENT_TYPE) - 1
+
typedef struct call_data {
uint8_t seen_path;
uint8_t seen_method;
@@ -92,8 +95,11 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
require */
return NULL;
} else if (md->key == GRPC_MDSTR_CONTENT_TYPE) {
- if (strncmp(grpc_mdstr_as_c_string(md->value), "application/grpc+", 17) ==
- 0) {
+ const char *value_str = grpc_mdstr_as_c_string(md->value);
+ if (strncmp(value_str, EXPECTED_CONTENT_TYPE,
+ EXPECTED_CONTENT_TYPE_LENGTH) == 0 &&
+ (value_str[EXPECTED_CONTENT_TYPE_LENGTH] == '+' ||
+ value_str[EXPECTED_CONTENT_TYPE_LENGTH] == ';')) {
/* Although the C implementation doesn't (currently) generate them,
any custom +-suffix is explicitly valid. */
/* TODO(klempner): We should consider preallocating common values such
@@ -102,8 +108,7 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
} else {
/* TODO(klempner): We're currently allowing this, but we shouldn't
see it without a proxy so log for now. */
- gpr_log(GPR_INFO, "Unexpected content-type %s",
- grpc_mdstr_as_c_string(md->value));
+ gpr_log(GPR_INFO, "Unexpected content-type %s", value_str);
}
return NULL;
} else if (md->key == GRPC_MDSTR_TE || md->key == GRPC_MDSTR_METHOD ||
@@ -220,8 +225,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {}
/* Constructor for channel_data */
static void init_channel_elem(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/http/httpcli.c b/src/core/lib/http/httpcli.c
index 76bd1b64dc..f22721ac8f 100644
--- a/src/core/lib/http/httpcli.c
+++ b/src/core/lib/http/httpcli.c
@@ -246,7 +246,7 @@ static void internal_request_begin(
grpc_pollset_set_add_pollset(exec_ctx, req->context->pollset_set,
req->pollset);
- grpc_resolve_address(request->host, req->handshaker->default_port,
+ grpc_resolve_address(exec_ctx, request->host, req->handshaker->default_port,
on_resolved, req);
}
diff --git a/src/core/lib/iomgr/closure.c b/src/core/lib/iomgr/closure.c
index d6f073fc9d..27793c32e4 100644
--- a/src/core/lib/iomgr/closure.c
+++ b/src/core/lib/iomgr/closure.c
@@ -54,6 +54,12 @@ void grpc_closure_list_add(grpc_closure_list *closure_list,
closure_list->tail = closure;
}
+void grpc_closure_list_fail_all(grpc_closure_list *list) {
+ for (grpc_closure *c = list->head; c != NULL; c = grpc_closure_next(c)) {
+ c->final_data &= ~(uintptr_t)1;
+ }
+}
+
bool grpc_closure_list_empty(grpc_closure_list closure_list) {
return closure_list.head == NULL;
}
diff --git a/src/core/lib/iomgr/closure.h b/src/core/lib/iomgr/closure.h
index 8652b53a8b..fdc2daed9d 100644
--- a/src/core/lib/iomgr/closure.h
+++ b/src/core/lib/iomgr/closure.h
@@ -86,6 +86,9 @@ grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg);
void grpc_closure_list_add(grpc_closure_list *list, grpc_closure *closure,
bool success);
+/** force all success bits in \a list to false */
+void grpc_closure_list_fail_all(grpc_closure_list *list);
+
/** append all closures from \a src to \a dst and empty \a src. */
void grpc_closure_list_move(grpc_closure_list *src, grpc_closure_list *dst);
diff --git a/src/core/lib/iomgr/ev_posix.c b/src/core/lib/iomgr/ev_posix.c
index 0eb95a2e09..7df1751352 100644
--- a/src/core/lib/iomgr/ev_posix.c
+++ b/src/core/lib/iomgr/ev_posix.c
@@ -44,7 +44,6 @@
static const grpc_event_engine_vtable *g_event_engine;
grpc_poll_function_type grpc_poll_function = poll;
-grpc_wakeup_fd grpc_global_wakeup_fd;
void grpc_event_engine_init(void) {
if ((g_event_engine = grpc_init_poll_and_epoll_posix())) {
diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h
index e09ef02400..976cc40347 100644
--- a/src/core/lib/iomgr/exec_ctx.h
+++ b/src/core/lib/iomgr/exec_ctx.h
@@ -93,6 +93,8 @@ void grpc_exec_ctx_enqueue_list(grpc_exec_ctx *exec_ctx,
grpc_workqueue *offload_target_or_null);
void grpc_exec_ctx_global_init(void);
+
+void grpc_exec_ctx_global_init(void);
void grpc_exec_ctx_global_shutdown(void);
#endif /* GRPC_CORE_LIB_IOMGR_EXEC_CTX_H */
diff --git a/src/core/lib/iomgr/iomgr.c b/src/core/lib/iomgr/iomgr.c
index 146663984d..60cef8ba77 100644
--- a/src/core/lib/iomgr/iomgr.c
+++ b/src/core/lib/iomgr/iomgr.c
@@ -166,8 +166,10 @@ bool grpc_iomgr_abort_on_leaks(void) {
if (env == NULL) return false;
static const char *truthy[] = {"yes", "Yes", "YES", "true",
"True", "TRUE", "1"};
+ bool should_we = false;
for (size_t i = 0; i < GPR_ARRAY_SIZE(truthy); i++) {
- if (0 == strcmp(env, truthy[i])) return true;
+ if (0 == strcmp(env, truthy[i])) should_we = true;
}
- return false;
+ gpr_free(env);
+ return should_we;
}
diff --git a/src/core/lib/iomgr/resolve_address.h b/src/core/lib/iomgr/resolve_address.h
index ecc06340a3..ef198fe0f6 100644
--- a/src/core/lib/iomgr/resolve_address.h
+++ b/src/core/lib/iomgr/resolve_address.h
@@ -59,8 +59,9 @@ typedef void (*grpc_resolve_cb)(grpc_exec_ctx *exec_ctx, void *arg,
/* Asynchronously resolve addr. Use default_port if a port isn't designated
in addr, otherwise use the port in addr. */
/* TODO(ctiller): add a timeout here */
-void grpc_resolve_address(const char *addr, const char *default_port,
- grpc_resolve_cb cb, void *arg);
+extern void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *addr,
+ const char *default_port,
+ grpc_resolve_cb cb, void *arg);
/* Destroy resolved addresses */
void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addresses);
diff --git a/src/core/lib/iomgr/resolve_address_posix.c b/src/core/lib/iomgr/resolve_address_posix.c
index b9d3bbdb89..cae91eec20 100644
--- a/src/core/lib/iomgr/resolve_address_posix.c
+++ b/src/core/lib/iomgr/resolve_address_posix.c
@@ -164,8 +164,9 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) {
gpr_free(addrs);
}
-void grpc_resolve_address(const char *name, const char *default_port,
- grpc_resolve_cb cb, void *arg) {
+static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name,
+ const char *default_port, grpc_resolve_cb cb,
+ void *arg) {
request *r = gpr_malloc(sizeof(request));
grpc_closure_init(&r->request_closure, do_request_thread, r);
r->name = gpr_strdup(name);
@@ -175,4 +176,8 @@ void grpc_resolve_address(const char *name, const char *default_port,
grpc_executor_enqueue(&r->request_closure, 1);
}
+void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *name,
+ const char *default_port, grpc_resolve_cb cb,
+ void *arg) = resolve_address_impl;
+
#endif
diff --git a/src/core/lib/iomgr/resolve_address_windows.c b/src/core/lib/iomgr/resolve_address_windows.c
index 82763d11f4..914736234d 100644
--- a/src/core/lib/iomgr/resolve_address_windows.c
+++ b/src/core/lib/iomgr/resolve_address_windows.c
@@ -155,8 +155,9 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) {
gpr_free(addrs);
}
-void grpc_resolve_address(const char *name, const char *default_port,
- grpc_resolve_cb cb, void *arg) {
+static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name,
+ const char *default_port, grpc_resolve_cb cb,
+ void *arg) {
request *r = gpr_malloc(sizeof(request));
grpc_closure_init(&r->request_closure, do_request_thread, r);
r->name = gpr_strdup(name);
@@ -166,4 +167,8 @@ void grpc_resolve_address(const char *name, const char *default_port,
grpc_executor_enqueue(&r->request_closure, 1);
}
+void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *name,
+ const char *default_port, grpc_resolve_cb cb,
+ void *arg) = resolve_address_impl;
+
#endif
diff --git a/src/core/lib/iomgr/tcp_client_posix.c b/src/core/lib/iomgr/tcp_client_posix.c
index 6430cb629f..e93d5734a0 100644
--- a/src/core/lib/iomgr/tcp_client_posix.c
+++ b/src/core/lib/iomgr/tcp_client_posix.c
@@ -211,11 +211,11 @@ finish:
grpc_exec_ctx_enqueue(exec_ctx, closure, *ep != NULL, NULL);
}
-void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
- grpc_endpoint **ep,
- grpc_pollset_set *interested_parties,
- const struct sockaddr *addr, size_t addr_len,
- gpr_timespec deadline) {
+static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx,
+ grpc_closure *closure, grpc_endpoint **ep,
+ grpc_pollset_set *interested_parties,
+ const struct sockaddr *addr,
+ size_t addr_len, gpr_timespec deadline) {
int fd;
grpc_dualstack_mode dsmode;
int err;
@@ -303,4 +303,19 @@ done:
gpr_free(addr_str);
}
+// overridden by api_fuzzer.c
+void (*grpc_tcp_client_connect_impl)(
+ grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
+ grpc_pollset_set *interested_parties, const struct sockaddr *addr,
+ size_t addr_len, gpr_timespec deadline) = tcp_client_connect_impl;
+
+void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
+ grpc_endpoint **ep,
+ grpc_pollset_set *interested_parties,
+ const struct sockaddr *addr, size_t addr_len,
+ gpr_timespec deadline) {
+ grpc_tcp_client_connect_impl(exec_ctx, closure, ep, interested_parties, addr,
+ addr_len, deadline);
+}
+
#endif
diff --git a/src/core/lib/iomgr/tcp_client_windows.c b/src/core/lib/iomgr/tcp_client_windows.c
index 7d78beb15a..66f9ff7a46 100644
--- a/src/core/lib/iomgr/tcp_client_windows.c
+++ b/src/core/lib/iomgr/tcp_client_windows.c
@@ -63,39 +63,45 @@ typedef struct {
grpc_endpoint **endpoint;
} async_connect;
-static void async_connect_unlock_and_cleanup(async_connect *ac) {
+static void async_connect_unlock_and_cleanup(async_connect *ac,
+ grpc_winsocket *socket) {
int done = (--ac->refs == 0);
gpr_mu_unlock(&ac->mu);
if (done) {
- if (ac->socket != NULL) grpc_winsocket_destroy(ac->socket);
gpr_mu_destroy(&ac->mu);
gpr_free(ac->addr_name);
gpr_free(ac);
}
+ if (socket != NULL) grpc_winsocket_destroy(socket);
}
static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, bool occured) {
async_connect *ac = acp;
gpr_mu_lock(&ac->mu);
- /* If the alarm didn't occur, it got cancelled. */
- if (ac->socket != NULL && occured) {
+ if (ac->socket != NULL) {
grpc_winsocket_shutdown(ac->socket);
}
- async_connect_unlock_and_cleanup(ac);
+ async_connect_unlock_and_cleanup(ac, ac->socket);
}
static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, bool from_iocp) {
async_connect *ac = acp;
SOCKET sock = ac->socket->socket;
grpc_endpoint **ep = ac->endpoint;
+ GPR_ASSERT(*ep == NULL);
grpc_winsocket_callback_info *info = &ac->socket->write_info;
grpc_closure *on_done = ac->on_done;
+ gpr_mu_lock(&ac->mu);
+ grpc_winsocket *socket = ac->socket;
+ ac->socket = NULL;
+ gpr_mu_unlock(&ac->mu);
+
grpc_timer_cancel(exec_ctx, &ac->alarm);
gpr_mu_lock(&ac->mu);
- if (from_iocp) {
+ if (from_iocp && socket != NULL) {
DWORD transfered_bytes = 0;
DWORD flags;
BOOL wsa_success = WSAGetOverlappedResult(sock, &info->overlapped,
@@ -107,12 +113,12 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, bool from_iocp) {
ac->addr_name, utf8_message);
gpr_free(utf8_message);
} else {
- *ep = grpc_tcp_create(ac->socket, ac->addr_name);
- ac->socket = NULL;
+ *ep = grpc_tcp_create(socket, ac->addr_name);
+ socket = NULL;
}
}
- async_connect_unlock_and_cleanup(ac);
+ async_connect_unlock_and_cleanup(ac, socket);
/* If the connection was aborted, the callback was already called when
the deadline was met. */
on_done->cb(exec_ctx, on_done->cb_arg, *ep != NULL);
@@ -138,6 +144,7 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *on_done,
const char *message = NULL;
char *utf8_message;
grpc_winsocket_callback_info *info;
+ int last_error;
*endpoint = NULL;
@@ -208,8 +215,10 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *on_done,
return;
failure:
- utf8_message = gpr_format_message(WSAGetLastError());
+ last_error = WSAGetLastError();
+ utf8_message = gpr_format_message(last_error);
gpr_log(GPR_ERROR, message, utf8_message);
+ gpr_log(GPR_ERROR, "last error = %d", last_error);
gpr_free(utf8_message);
if (socket != NULL) {
grpc_winsocket_destroy(socket);
diff --git a/src/core/lib/iomgr/tcp_posix.c b/src/core/lib/iomgr/tcp_posix.c
index 7210aef5d5..e2869224f1 100644
--- a/src/core/lib/iomgr/tcp_posix.c
+++ b/src/core/lib/iomgr/tcp_posix.c
@@ -164,7 +164,7 @@ static void call_read_cb(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, int success) {
for (i = 0; i < tcp->incoming_buffer->count; i++) {
char *dump = gpr_dump_slice(tcp->incoming_buffer->slices[i],
GPR_DUMP_HEX | GPR_DUMP_ASCII);
- gpr_log(GPR_DEBUG, "READ %p: %s", tcp, dump);
+ gpr_log(GPR_DEBUG, "READ %p (peer=%s): %s", tcp, tcp->peer_string, dump);
gpr_free(dump);
}
}
@@ -398,7 +398,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
for (i = 0; i < buf->count; i++) {
char *data =
gpr_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
- gpr_log(GPR_DEBUG, "WRITE %p: %s", tcp, data);
+ gpr_log(GPR_DEBUG, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string, data);
gpr_free(data);
}
}
diff --git a/src/core/lib/iomgr/tcp_server_windows.c b/src/core/lib/iomgr/tcp_server_windows.c
index 6940dec7b0..125f521d87 100644
--- a/src/core/lib/iomgr/tcp_server_windows.c
+++ b/src/core/lib/iomgr/tcp_server_windows.c
@@ -508,34 +508,6 @@ int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
}
}
-unsigned grpc_tcp_server_port_fd_count(grpc_tcp_server *s,
- unsigned port_index) {
- grpc_tcp_listener *sp;
- for (sp = s->head; sp && port_index != 0; sp = sp->next, --port_index)
- ;
- if (sp) {
- return 1;
- } else {
- return 0;
- }
-}
-
-int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index,
- unsigned fd_index) {
- grpc_tcp_listener *sp;
- if (fd_index != 0) {
- /* Windows implementation has only one fd per port_index. */
- return -1;
- }
- for (sp = s->head; sp && port_index != 0; sp = sp->next, --port_index)
- ;
- if (sp) {
- return _open_osfhandle((intptr_t)sp->socket->socket, 0);
- } else {
- return -1;
- }
-}
-
void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
grpc_pollset **pollset, size_t pollset_count,
grpc_tcp_server_cb on_accept_cb,
diff --git a/src/core/lib/iomgr/tcp_windows.c b/src/core/lib/iomgr/tcp_windows.c
index 7ee689a7e4..551149e1a6 100644
--- a/src/core/lib/iomgr/tcp_windows.c
+++ b/src/core/lib/iomgr/tcp_windows.c
@@ -35,6 +35,8 @@
#ifdef GPR_WINSOCK_SOCKET
+#include <limits.h>
+
#include "src/core/lib/iomgr/sockaddr_win32.h"
#include <grpc/support/alloc.h>
@@ -51,12 +53,20 @@
#include "src/core/lib/iomgr/tcp_client.h"
#include "src/core/lib/iomgr/timer.h"
+#if defined(__MSYS__) && defined(GPR_ARCH_64)
+/* Nasty workaround for nasty bug when using the 64 bits msys compiler
+ in conjunction with Microsoft Windows headers. */
+#define GRPC_FIONBIO _IOW('f', 126, uint32_t)
+#else
+#define GRPC_FIONBIO FIONBIO
+#endif
+
static int set_non_block(SOCKET sock) {
int status;
- unsigned long param = 1;
+ uint32_t param = 1;
DWORD ret;
- status =
- WSAIoctl(sock, FIONBIO, &param, sizeof(param), NULL, 0, &ret, NULL, NULL);
+ status = WSAIoctl(sock, GRPC_FIONBIO, &param, sizeof(param), NULL, 0, &ret,
+ NULL, NULL);
return status == 0;
}
diff --git a/src/core/lib/iomgr/timer.c b/src/core/lib/iomgr/timer.c
index 713f15b69e..acb5b26c87 100644
--- a/src/core/lib/iomgr/timer.c
+++ b/src/core/lib/iomgr/timer.c
@@ -70,6 +70,7 @@ static gpr_clock_type g_clock_type;
static shard_type g_shards[NUM_SHARDS];
/* Protected by g_mu */
static shard_type *g_shard_queue[NUM_SHARDS];
+static bool g_initialized = false;
static int run_some_expired_timers(grpc_exec_ctx *exec_ctx, gpr_timespec now,
gpr_timespec *next, int success);
@@ -83,6 +84,7 @@ static gpr_timespec compute_min_deadline(shard_type *shard) {
void grpc_timer_list_init(gpr_timespec now) {
uint32_t i;
+ g_initialized = true;
gpr_mu_init(&g_mu);
gpr_mu_init(&g_checker_mu);
g_clock_type = now.clock_type;
@@ -111,6 +113,7 @@ void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) {
}
gpr_mu_destroy(&g_mu);
gpr_mu_destroy(&g_checker_mu);
+ g_initialized = false;
}
/* This is a cheap, but good enough, pointer hash for sharding the tasks: */
@@ -180,6 +183,18 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
timer->deadline = deadline;
timer->triggered = 0;
+ if (!g_initialized) {
+ timer->triggered = 1;
+ grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, false, NULL);
+ return;
+ }
+
+ if (gpr_time_cmp(deadline, now) <= 0) {
+ timer->triggered = 1;
+ grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, true, NULL);
+ return;
+ }
+
/* TODO(ctiller): check deadline expired */
gpr_mu_lock(&shard->mu);
diff --git a/src/core/lib/security/client_auth_filter.c b/src/core/lib/security/client_auth_filter.c
index 943b1da85c..8b58cb86bf 100644
--- a/src/core/lib/security/client_auth_filter.c
+++ b/src/core/lib/security/client_auth_filter.c
@@ -277,8 +277,8 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {
call_data *calld = elem->call_data;
grpc_call_credentials_unref(calld->creds);
if (calld->host != NULL) {
diff --git a/src/core/lib/security/server_auth_filter.c b/src/core/lib/security/server_auth_filter.c
index 7844dc87cb..3320497d21 100644
--- a/src/core/lib/security/server_auth_filter.c
+++ b/src/core/lib/security/server_auth_filter.c
@@ -224,8 +224,8 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
grpc_pollset *pollset) {}
/* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {}
/* Constructor for channel_data */
static void init_channel_elem(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/support/env_win32.c b/src/core/lib/support/env_win32.c
index ef84c941df..e670e1e8d0 100644
--- a/src/core/lib/support/env_win32.c
+++ b/src/core/lib/support/env_win32.c
@@ -33,41 +33,47 @@
#include <grpc/support/port_platform.h>
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_ENV
+
+#include <windows.h>
#include "src/core/lib/support/env.h"
#include "src/core/lib/support/string.h"
-
-#ifdef __MINGW32__
-errno_t getenv_s(size_t *size_needed, char *buffer, size_t size,
- const char *varname);
-#else
-#include <stdlib.h>
-#endif
+#include "src/core/lib/support/string_win32.h"
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
char *gpr_getenv(const char *name) {
- size_t size;
char *result = NULL;
- errno_t err;
+ DWORD size;
+ LPTSTR tresult = NULL;
+ LPTSTR tname = gpr_char_to_tchar(name);
+ DWORD ret;
- err = getenv_s(&size, NULL, 0, name);
- if (err || (size == 0)) return NULL;
- result = gpr_malloc(size);
- err = getenv_s(&size, result, size, name);
- if (err) {
- gpr_free(result);
+ ret = GetEnvironmentVariable(tname, NULL, 0);
+ if (ret == 0) return NULL;
+ size = ret * (DWORD)sizeof(TCHAR);
+ tresult = gpr_malloc(size);
+ ret = GetEnvironmentVariable(tname, tresult, size);
+ gpr_free(tname);
+ if (ret == 0) {
+ gpr_free(tresult);
return NULL;
}
+ result = gpr_tchar_to_char(tresult);
+ gpr_free(tresult);
return result;
}
void gpr_setenv(const char *name, const char *value) {
- errno_t res = _putenv_s(name, value);
- GPR_ASSERT(res == 0);
+ LPTSTR tname = gpr_char_to_tchar(name);
+ LPTSTR tvalue = gpr_char_to_tchar(value);
+ BOOL res = SetEnvironmentVariable(tname, tvalue);
+ gpr_free(tname);
+ gpr_free(tvalue);
+ GPR_ASSERT(res);
}
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_ENV */
diff --git a/src/core/lib/support/log_linux.c b/src/core/lib/support/log_linux.c
index ff3febb38e..ca04c022e3 100644
--- a/src/core/lib/support/log_linux.c
+++ b/src/core/lib/support/log_linux.c
@@ -41,7 +41,7 @@
#include <grpc/support/port_platform.h>
-#ifdef GPR_LINUX
+#ifdef GPR_LINUX_LOG
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -103,4 +103,4 @@ void gpr_default_log(gpr_log_func_args *args) {
gpr_free(prefix);
}
-#endif
+#endif /* GPR_LINUX_LOG */
diff --git a/src/core/lib/support/log_win32.c b/src/core/lib/support/log_win32.c
index ba78497a0a..29735bd18c 100644
--- a/src/core/lib/support/log_win32.c
+++ b/src/core/lib/support/log_win32.c
@@ -33,7 +33,7 @@
#include <grpc/support/port_platform.h>
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_LOG
#include <stdarg.h>
#include <stdio.h>
@@ -109,18 +109,4 @@ void gpr_default_log(gpr_log_func_args *args) {
fflush(stderr);
}
-char *gpr_format_message(int messageid) {
- LPTSTR tmessage;
- char *message;
- DWORD status = FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, (DWORD)messageid, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR)(&tmessage), 0, NULL);
- if (status == 0) return gpr_strdup("Unable to retrieve error string");
- message = gpr_tchar_to_char(tmessage);
- LocalFree(tmessage);
- return message;
-}
-
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_LOG */
diff --git a/src/core/lib/support/string_util_win32.c b/src/core/lib/support/string_util_win32.c
new file mode 100644
index 0000000000..f3cb0c050f
--- /dev/null
+++ b/src/core/lib/support/string_util_win32.c
@@ -0,0 +1,94 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* Posix code for gpr snprintf support. */
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WIN32
+
+/* Some platforms (namely msys) need wchar to be included BEFORE
+ anything else, especially strsafe.h. */
+#include <wchar.h>
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <strsafe.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/support/string.h"
+
+#if defined UNICODE || defined _UNICODE
+LPTSTR
+gpr_char_to_tchar(LPCSTR input) {
+ LPTSTR ret;
+ int needed = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
+ if (needed <= 0) return NULL;
+ ret = gpr_malloc((unsigned)needed * sizeof(TCHAR));
+ MultiByteToWideChar(CP_UTF8, 0, input, -1, ret, needed);
+ return ret;
+}
+
+LPSTR
+gpr_tchar_to_char(LPCTSTR input) {
+ LPSTR ret;
+ int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
+ if (needed <= 0) return NULL;
+ ret = gpr_malloc((unsigned)needed);
+ WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL);
+ return ret;
+}
+#else
+char *gpr_tchar_to_char(LPTSTR input) { return gpr_strdup(input); }
+
+char *gpr_char_to_tchar(LPTSTR input) { return gpr_strdup(input); }
+#endif
+
+char *gpr_format_message(int messageid) {
+ LPTSTR tmessage;
+ char *message;
+ DWORD status = FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, (DWORD)messageid, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR)(&tmessage), 0, NULL);
+ if (status == 0) return gpr_strdup("Unable to retrieve error string");
+ message = gpr_tchar_to_char(tmessage);
+ LocalFree(tmessage);
+ return message;
+}
+
+#endif /* GPR_WIN32 */
diff --git a/src/core/lib/support/string_win32.c b/src/core/lib/support/string_win32.c
index a2f9857356..6b92f79253 100644
--- a/src/core/lib/support/string_win32.c
+++ b/src/core/lib/support/string_win32.c
@@ -31,11 +31,11 @@
*
*/
-/* Posix code for gpr snprintf support. */
+/* Windows code for gpr snprintf support. */
#include <grpc/support/port_platform.h>
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_STRING
#include <stdarg.h>
#include <stdio.h>
@@ -80,30 +80,4 @@ int gpr_asprintf(char **strp, const char *format, ...) {
return -1;
}
-#if defined UNICODE || defined _UNICODE
-LPTSTR
-gpr_char_to_tchar(LPCSTR input) {
- LPTSTR ret;
- int needed = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
- if (needed <= 0) return NULL;
- ret = gpr_malloc((unsigned)needed * sizeof(TCHAR));
- MultiByteToWideChar(CP_UTF8, 0, input, -1, ret, needed);
- return ret;
-}
-
-LPSTR
-gpr_tchar_to_char(LPCTSTR input) {
- LPSTR ret;
- int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
- if (needed <= 0) return NULL;
- ret = gpr_malloc((unsigned)needed);
- WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL);
- return ret;
-}
-#else
-char *gpr_tchar_to_char(LPTSTR input) { return gpr_strdup(input); }
-
-char *gpr_char_to_tchar(LPTSTR input) { return gpr_strdup(input); }
-#endif
-
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_STRING */
diff --git a/src/core/lib/support/time_posix.c b/src/core/lib/support/time_posix.c
index f5f62dadc6..11542072fe 100644
--- a/src/core/lib/support/time_posix.c
+++ b/src/core/lib/support/time_posix.c
@@ -78,7 +78,7 @@ static const clockid_t clockid_for_gpr_clock[] = {CLOCK_MONOTONIC,
void gpr_time_init(void) { gpr_precise_clock_init(); }
-gpr_timespec gpr_now(gpr_clock_type clock_type) {
+static gpr_timespec now_impl(gpr_clock_type clock_type) {
struct timespec now;
GPR_ASSERT(clock_type != GPR_TIMESPAN);
if (clock_type == GPR_CLOCK_PRECISE) {
@@ -114,7 +114,7 @@ void gpr_time_init(void) {
g_time_start = mach_absolute_time();
}
-gpr_timespec gpr_now(gpr_clock_type clock) {
+static gpr_timespec now_impl(gpr_clock_type clock) {
gpr_timespec now;
struct timeval now_tv;
double now_dbl;
@@ -142,6 +142,12 @@ gpr_timespec gpr_now(gpr_clock_type clock) {
}
#endif
+gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
+
+gpr_timespec gpr_now(gpr_clock_type clock_type) {
+ return gpr_now_impl(clock_type);
+}
+
void gpr_sleep_until(gpr_timespec until) {
gpr_timespec now;
gpr_timespec delta;
diff --git a/src/core/lib/support/time_win32.c b/src/core/lib/support/time_win32.c
index f7acbd14a6..9e924ab3f4 100644
--- a/src/core/lib/support/time_win32.c
+++ b/src/core/lib/support/time_win32.c
@@ -35,7 +35,7 @@
#include <grpc/support/port_platform.h>
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_TIME
#include <grpc/support/log.h>
#include <grpc/support/time.h>
@@ -107,4 +107,4 @@ void gpr_sleep_until(gpr_timespec until) {
}
}
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_TIME */
diff --git a/src/core/lib/support/tmpfile_msys.c b/src/core/lib/support/tmpfile_msys.c
new file mode 100644
index 0000000000..2fdc89a64f
--- /dev/null
+++ b/src/core/lib/support/tmpfile_msys.c
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_MSYS_TMPFILE
+
+#include <io.h>
+#include <stdio.h>
+#include <string.h>
+#include <tchar.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/support/string_win32.h"
+#include "src/core/lib/support/tmpfile.h"
+
+FILE *gpr_tmpfile(const char *prefix, char **tmp_filename_out) {
+ FILE *result = NULL;
+ char tmp_filename[MAX_PATH];
+ UINT success;
+
+ if (tmp_filename_out != NULL) *tmp_filename_out = NULL;
+
+ /* Generate a unique filename with our template + temporary path. */
+ success = GetTempFileNameA(".", prefix, 0, tmp_filename);
+ fprintf(stderr, "success = %d\n", success);
+
+ if (success) {
+ /* Open a file there. */
+ result = fopen(tmp_filename, "wb+");
+ fprintf(stderr, "result = %p\n", result);
+ }
+ if (result != NULL && tmp_filename_out) {
+ *tmp_filename_out = gpr_strdup(tmp_filename);
+ }
+
+ return result;
+}
+
+#endif /* GPR_MSYS_TMPFILE */
diff --git a/src/core/lib/support/tmpfile_posix.c b/src/core/lib/support/tmpfile_posix.c
index 9e0e7ad808..0cd4bb6fc3 100644
--- a/src/core/lib/support/tmpfile_posix.c
+++ b/src/core/lib/support/tmpfile_posix.c
@@ -33,7 +33,7 @@
#include <grpc/support/port_platform.h>
-#ifdef GPR_POSIX_FILE
+#ifdef GPR_POSIX_TMPFILE
#include "src/core/lib/support/tmpfile.h"
@@ -82,4 +82,4 @@ end:
return result;
}
-#endif /* GPR_POSIX_FILE */
+#endif /* GPR_POSIX_TMPFILE */
diff --git a/src/core/lib/support/tmpfile_win32.c b/src/core/lib/support/tmpfile_win32.c
index 0cb2904f8d..9ac73128c3 100644
--- a/src/core/lib/support/tmpfile_win32.c
+++ b/src/core/lib/support/tmpfile_win32.c
@@ -33,7 +33,7 @@
#include <grpc/support/port_platform.h>
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_TMPFILE
#include <io.h>
#include <stdio.h>
@@ -81,4 +81,4 @@ end:
return result;
}
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_TMPFILE */
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 6581bbd3d1..9b2b94eedf 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -142,22 +142,23 @@ struct grpc_call {
gpr_mu mu;
/* client or server call */
- uint8_t is_client;
+ bool is_client;
/* is the alarm set */
- uint8_t have_alarm;
+ bool have_alarm;
/** has grpc_call_destroy been called */
- uint8_t destroy_called;
+ bool destroy_called;
/** flag indicating that cancellation is inherited */
- uint8_t cancellation_is_inherited;
+ bool cancellation_is_inherited;
/** bitmask of live batches */
uint8_t used_batches;
/** which ops are in-flight */
- uint8_t sent_initial_metadata;
- uint8_t sending_message;
- uint8_t sent_final_op;
- uint8_t received_initial_metadata;
- uint8_t receiving_message;
- uint8_t received_final_op;
+ bool sent_initial_metadata;
+ bool sending_message;
+ bool sent_final_op;
+ bool received_initial_metadata;
+ bool receiving_message;
+ bool requested_final_op;
+ bool received_final_op;
/* have we received initial metadata */
bool has_initial_md_been_received;
@@ -220,10 +221,7 @@ struct grpc_call {
} server;
} final_op;
- struct {
- void *bctlp;
- bool success;
- } saved_receiving_stream_ready_ctx;
+ void *saved_receiving_stream_ready_bctlp;
};
#define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call) + 1))
@@ -375,8 +373,6 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
if (c->receiving_stream != NULL) {
grpc_byte_stream_destroy(exec_ctx, c->receiving_stream);
}
- grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c));
- GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call");
gpr_mu_destroy(&c->mu);
for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
if (c->status[i].details) {
@@ -394,7 +390,9 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
if (c->cq) {
GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
}
- gpr_free(c);
+ grpc_channel *channel = c->channel;
+ grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), c);
+ GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, "call");
GPR_TIMER_END("destroy_call", 0);
}
@@ -554,21 +552,6 @@ static int prepare_application_metadata(grpc_call *call, int count,
int i;
grpc_metadata_batch *batch =
&call->metadata_batch[0 /* is_receiving */][is_trailing];
- if (prepend_extra_metadata) {
- if (call->send_extra_metadata_count == 0) {
- prepend_extra_metadata = 0;
- } else {
- for (i = 0; i < call->send_extra_metadata_count; i++) {
- GRPC_MDELEM_REF(call->send_extra_metadata[i].md);
- }
- for (i = 1; i < call->send_extra_metadata_count; i++) {
- call->send_extra_metadata[i].prev = &call->send_extra_metadata[i - 1];
- }
- for (i = 0; i < call->send_extra_metadata_count - 1; i++) {
- call->send_extra_metadata[i].next = &call->send_extra_metadata[i + 1];
- }
- }
- }
for (i = 0; i < count; i++) {
grpc_metadata *md = &metadata[i];
grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
@@ -579,14 +562,37 @@ static int prepare_application_metadata(grpc_call *call, int count,
GRPC_MDSTR_LENGTH(l->md->key))) {
gpr_log(GPR_ERROR, "attempt to send invalid metadata key: %s",
grpc_mdstr_as_c_string(l->md->key));
- return 0;
+ break;
} else if (!grpc_is_binary_header(grpc_mdstr_as_c_string(l->md->key),
GRPC_MDSTR_LENGTH(l->md->key)) &&
!grpc_header_nonbin_value_is_legal(
grpc_mdstr_as_c_string(l->md->value),
GRPC_MDSTR_LENGTH(l->md->value))) {
gpr_log(GPR_ERROR, "attempt to send invalid metadata value");
- return 0;
+ break;
+ }
+ }
+ if (i != count) {
+ for (int j = 0; j <= i; j++) {
+ grpc_metadata *md = &metadata[j];
+ grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
+ GRPC_MDELEM_UNREF(l->md);
+ }
+ return 0;
+ }
+ if (prepend_extra_metadata) {
+ if (call->send_extra_metadata_count == 0) {
+ prepend_extra_metadata = 0;
+ } else {
+ for (i = 0; i < call->send_extra_metadata_count; i++) {
+ GRPC_MDELEM_REF(call->send_extra_metadata[i].md);
+ }
+ for (i = 1; i < call->send_extra_metadata_count; i++) {
+ call->send_extra_metadata[i].prev = &call->send_extra_metadata[i - 1];
+ }
+ for (i = 0; i < call->send_extra_metadata_count - 1; i++) {
+ call->send_extra_metadata[i].next = &call->send_extra_metadata[i + 1];
+ }
}
}
for (i = 1; i < count; i++) {
@@ -1057,12 +1063,12 @@ static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
grpc_call *call = bctl->call;
gpr_mu_lock(&bctl->call->mu);
- if (bctl->call->has_initial_md_been_received) {
+ if (bctl->call->has_initial_md_been_received || !success ||
+ call->receiving_stream == NULL) {
gpr_mu_unlock(&bctl->call->mu);
process_data_after_md(exec_ctx, bctlp, success);
} else {
- call->saved_receiving_stream_ready_ctx.bctlp = bctlp;
- call->saved_receiving_stream_ready_ctx.success = success;
+ call->saved_receiving_stream_ready_bctlp = bctlp;
gpr_mu_unlock(&bctl->call->mu);
}
}
@@ -1091,13 +1097,11 @@ static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
}
call->has_initial_md_been_received = true;
- if (call->saved_receiving_stream_ready_ctx.bctlp != NULL) {
+ if (call->saved_receiving_stream_ready_bctlp != NULL) {
grpc_closure *saved_rsr_closure = grpc_closure_create(
- receiving_stream_ready, call->saved_receiving_stream_ready_ctx.bctlp);
- grpc_exec_ctx_enqueue(
- exec_ctx, saved_rsr_closure,
- call->saved_receiving_stream_ready_ctx.success && success, NULL);
- call->saved_receiving_stream_ready_ctx.bctlp = NULL;
+ receiving_stream_ready, call->saved_receiving_stream_ready_bctlp);
+ call->saved_receiving_stream_ready_bctlp = NULL;
+ grpc_exec_ctx_enqueue(exec_ctx, saved_rsr_closure, success, NULL);
}
gpr_mu_unlock(&call->mu);
@@ -1133,6 +1137,7 @@ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, bool success) {
&call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
grpc_metadata_batch_filter(md, recv_trailing_filter, call);
+ call->received_final_op = true;
if (call->have_alarm) {
grpc_timer_cancel(exec_ctx, &call->alarm);
}
@@ -1377,11 +1382,11 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
goto done_with_error;
}
- if (call->received_final_op) {
+ if (call->requested_final_op) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
- call->received_final_op = 1;
+ call->requested_final_op = 1;
call->buffered_metadata[1] =
op->data.recv_status_on_client.trailing_metadata;
call->final_op.client.status = op->data.recv_status_on_client.status;
@@ -1404,11 +1409,11 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
goto done_with_error;
}
- if (call->received_final_op) {
+ if (call->requested_final_op) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
- call->received_final_op = 1;
+ call->requested_final_op = 1;
call->final_op.server.cancelled =
op->data.recv_close_on_server.cancelled;
bctl->recv_final_op = 1;
@@ -1457,7 +1462,7 @@ done_with_error:
call->receiving_message = 0;
}
if (bctl->recv_final_op) {
- call->received_final_op = 0;
+ call->requested_final_op = 0;
}
gpr_mu_unlock(&call->mu);
goto done;
@@ -1512,3 +1517,39 @@ grpc_compression_algorithm grpc_call_compression_for_level(
gpr_mu_unlock(&call->mu);
return grpc_compression_algorithm_for_level(level, accepted_encodings);
}
+
+const char *grpc_call_error_to_string(grpc_call_error error) {
+ switch (error) {
+ case GRPC_CALL_ERROR:
+ return "GRPC_CALL_ERROR";
+ case GRPC_CALL_ERROR_ALREADY_ACCEPTED:
+ return "GRPC_CALL_ERROR_ALREADY_ACCEPTED";
+ case GRPC_CALL_ERROR_ALREADY_FINISHED:
+ return "GRPC_CALL_ERROR_ALREADY_FINISHED";
+ case GRPC_CALL_ERROR_ALREADY_INVOKED:
+ return "GRPC_CALL_ERROR_ALREADY_INVOKED";
+ case GRPC_CALL_ERROR_BATCH_TOO_BIG:
+ return "GRPC_CALL_ERROR_BATCH_TOO_BIG";
+ case GRPC_CALL_ERROR_INVALID_FLAGS:
+ return "GRPC_CALL_ERROR_INVALID_FLAGS";
+ case GRPC_CALL_ERROR_INVALID_MESSAGE:
+ return "GRPC_CALL_ERROR_INVALID_MESSAGE";
+ case GRPC_CALL_ERROR_INVALID_METADATA:
+ return "GRPC_CALL_ERROR_INVALID_METADATA";
+ case GRPC_CALL_ERROR_NOT_INVOKED:
+ return "GRPC_CALL_ERROR_NOT_INVOKED";
+ case GRPC_CALL_ERROR_NOT_ON_CLIENT:
+ return "GRPC_CALL_ERROR_NOT_ON_CLIENT";
+ case GRPC_CALL_ERROR_NOT_ON_SERVER:
+ return "GRPC_CALL_ERROR_NOT_ON_SERVER";
+ case GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE:
+ return "GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE";
+ case GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH:
+ return "GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH";
+ case GRPC_CALL_ERROR_TOO_MANY_OPERATIONS:
+ return "GRPC_CALL_ERROR_TOO_MANY_OPERATIONS";
+ case GRPC_CALL_OK:
+ return "GRPC_CALL_OK";
+ }
+ GPR_UNREACHABLE_CODE(return "GRPC_CALL_ERROR_UNKNOW");
+}
diff --git a/src/core/lib/surface/completion_queue.c b/src/core/lib/surface/completion_queue.c
index 5ec8808b50..1f82c3bad2 100644
--- a/src/core/lib/surface/completion_queue.c
+++ b/src/core/lib/surface/completion_queue.c
@@ -227,6 +227,10 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc,
#endif
GPR_TIMER_BEGIN("grpc_cq_end_op", 0);
+ GRPC_API_TRACE(
+ "grpc_cq_end_op(exec_ctx=%p, cc=%p, tag=%p, success=%d, done=%p, "
+ "done_arg=%p, storage=%p)",
+ 7, (exec_ctx, cc, tag, success, done, done_arg, storage));
storage->tag = tag;
storage->done = done;
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 03f379aba8..57c6897626 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -164,10 +164,10 @@ void grpc_init(void) {
grpc_register_tracer("channel_stack_builder",
&grpc_trace_channel_stack_builder);
grpc_register_tracer("http1", &grpc_http1_trace);
+ grpc_register_tracer("compression", &grpc_compress_filter_trace);
grpc_security_pre_init();
grpc_iomgr_init();
grpc_executor_init();
- grpc_tracer_init("GRPC_TRACE");
gpr_timers_global_init();
grpc_cq_global_init();
for (i = 0; i < g_number_of_plugins; i++) {
@@ -179,6 +179,7 @@ void grpc_init(void) {
* at the appropriate time */
grpc_register_security_filters();
register_builtin_channel_init();
+ grpc_tracer_init("GRPC_TRACE");
/* no more changes to channel init pipelines */
grpc_channel_init_finalize();
}
diff --git a/src/core/lib/surface/lame_client.c b/src/core/lib/surface/lame_client.c
index c1f6812c4e..f50ec54cea 100644
--- a/src/core/lib/surface/lame_client.c
+++ b/src/core/lib/surface/lame_client.c
@@ -99,13 +99,18 @@ static void lame_start_transport_op(grpc_exec_ctx *exec_ctx,
if (op->on_consumed != NULL) {
op->on_consumed->cb(exec_ctx, op->on_consumed->cb_arg, 1);
}
+ if (op->send_ping != NULL) {
+ op->send_ping->cb(exec_ctx, op->send_ping->cb_arg, 0);
+ }
}
static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
grpc_call_element_args *args) {}
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *and_free_memory) {
+ gpr_free(and_free_memory);
+}
static void init_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem,
diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.c
index ad8ee8c7a9..2db95b9cdf 100644
--- a/src/core/lib/surface/server.c
+++ b/src/core/lib/surface/server.c
@@ -820,8 +820,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
server_ref(chand->server);
}
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data;
diff --git a/src/core/lib/surface/validate_metadata.c b/src/core/lib/surface/validate_metadata.c
index bf4126867f..84f0a083bc 100644
--- a/src/core/lib/surface/validate_metadata.c
+++ b/src/core/lib/surface/validate_metadata.c
@@ -40,7 +40,7 @@ static int conforms_to(const char *s, size_t len, const uint8_t *legal_bits) {
const char *p = s;
const char *e = s + len;
for (; p != e; p++) {
- int idx = *p;
+ int idx = (uint8_t)*p;
int byte = idx / 8;
int bit = idx % 8;
if ((legal_bits[byte] & (1 << bit)) == 0) return 0;
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index fe954cbefb..aca76d2bb7 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
#include <grpc/grpc.h>
-const char *grpc_version_string(void) { return "0.14.0-dev"; }
+const char *grpc_version_string(void) { return "0.15.0-dev"; }
diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c
index 779efbb97d..5847ec9053 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.c
@@ -386,10 +386,18 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
for (s = shard->strs[idx]; s; s = s->bucket_next) {
if (s->hash == hash && GPR_SLICE_LENGTH(s->slice) == length &&
0 == memcmp(buf, GPR_SLICE_START_PTR(s->slice), length)) {
- GRPC_MDSTR_REF((grpc_mdstr *)s);
- gpr_mu_unlock(&shard->mu);
- GPR_TIMER_END("grpc_mdstr_from_buffer", 0);
- return (grpc_mdstr *)s;
+ if (gpr_atm_full_fetch_add(&s->refcnt, 1) == 0) {
+ /* If we get here, we've added a ref to something that was about to
+ * die - drop it immediately.
+ * The *only* possible path here (given the shard mutex) should be to
+ * drop from one ref back to zero - assert that with a CAS */
+ GPR_ASSERT(gpr_atm_rel_cas(&s->refcnt, 1, 0));
+ /* and treat this as if we were never here... sshhh */
+ } else {
+ gpr_mu_unlock(&shard->mu);
+ GPR_TIMER_END("grpc_mdstr_from_buffer", 0);
+ return (grpc_mdstr *)s;
+ }
}
}
@@ -397,7 +405,7 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
if (length + 1 < GPR_SLICE_INLINED_SIZE) {
/* string data goes directly into the slice */
s = gpr_malloc(sizeof(internal_string));
- gpr_atm_rel_store(&s->refcnt, 2);
+ gpr_atm_rel_store(&s->refcnt, 1);
s->slice.refcount = NULL;
memcpy(s->slice.data.inlined.bytes, buf, length);
s->slice.data.inlined.bytes[length] = 0;
@@ -406,7 +414,7 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
/* string data goes after the internal_string header, and we +1 for null
terminator */
s = gpr_malloc(sizeof(internal_string) + length + 1);
- gpr_atm_rel_store(&s->refcnt, 2);
+ gpr_atm_rel_store(&s->refcnt, 1);
s->refcount.ref = slice_ref;
s->refcount.unref = slice_unref;
s->slice.refcount = &s->refcount;
@@ -675,20 +683,19 @@ const char *grpc_mdstr_as_c_string(grpc_mdstr *s) {
grpc_mdstr *grpc_mdstr_ref(grpc_mdstr *gs DEBUG_ARGS) {
internal_string *s = (internal_string *)gs;
if (is_mdstr_static(gs)) return gs;
- GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) != 0);
+ GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) > 0);
return gs;
}
void grpc_mdstr_unref(grpc_mdstr *gs DEBUG_ARGS) {
internal_string *s = (internal_string *)gs;
if (is_mdstr_static(gs)) return;
- if (2 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
+ if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
strtab_shard *shard =
&g_strtab_shard[SHARD_IDX(s->hash, LOG2_STRTAB_SHARD_COUNT)];
gpr_mu_lock(&shard->mu);
- if (1 == gpr_atm_no_barrier_load(&s->refcnt)) {
- internal_destroy_string(shard, s);
- }
+ GPR_ASSERT(0 == gpr_atm_no_barrier_load(&s->refcnt));
+ internal_destroy_string(shard, s);
gpr_mu_unlock(&shard->mu);
}
}
diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index e29e8df2c9..6d82f4d681 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -120,6 +120,7 @@ void grpc_mdelem_set_user_data(grpc_mdelem *md, void (*destroy_func)(void *),
void *user_data);
/* Reference counting */
+//#define GRPC_METADATA_REFCOUNT_DEBUG
#ifdef GRPC_METADATA_REFCOUNT_DEBUG
#define GRPC_MDSTR_REF(s) grpc_mdstr_ref((s), __FILE__, __LINE__)
#define GRPC_MDSTR_UNREF(s) grpc_mdstr_unref((s), __FILE__, __LINE__)
@@ -146,6 +147,10 @@ const char *grpc_mdstr_as_c_string(grpc_mdstr *s);
#define GRPC_MDSTR_LENGTH(s) (GPR_SLICE_LENGTH(s->slice))
+/* We add 32 bytes of padding as per RFC-7540 section 6.5.2. */
+#define GRPC_MDELEM_LENGTH(e) \
+ (GRPC_MDSTR_LENGTH((e)->key) + GRPC_MDSTR_LENGTH((e)->value) + 32)
+
int grpc_mdstr_is_legal_header(grpc_mdstr *s);
int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s);
int grpc_mdstr_is_bin_suffixed(grpc_mdstr *s);
diff --git a/src/core/lib/transport/metadata_batch.c b/src/core/lib/transport/metadata_batch.c
index 4567221a48..e4398abeb7 100644
--- a/src/core/lib/transport/metadata_batch.c
+++ b/src/core/lib/transport/metadata_batch.c
@@ -192,3 +192,12 @@ int grpc_metadata_batch_is_empty(grpc_metadata_batch *batch) {
gpr_time_cmp(gpr_inf_future(batch->deadline.clock_type),
batch->deadline) == 0;
}
+
+size_t grpc_metadata_batch_size(grpc_metadata_batch *batch) {
+ size_t size = 0;
+ for (grpc_linked_mdelem *elem = batch->list.head; elem != NULL;
+ elem = elem->next) {
+ size += GRPC_MDELEM_LENGTH(elem->md);
+ }
+ return size;
+}
diff --git a/src/core/lib/transport/metadata_batch.h b/src/core/lib/transport/metadata_batch.h
index b62668876e..7af823f7ca 100644
--- a/src/core/lib/transport/metadata_batch.h
+++ b/src/core/lib/transport/metadata_batch.h
@@ -66,6 +66,9 @@ void grpc_metadata_batch_destroy(grpc_metadata_batch *batch);
void grpc_metadata_batch_clear(grpc_metadata_batch *batch);
int grpc_metadata_batch_is_empty(grpc_metadata_batch *batch);
+/* Returns the transport size of the batch. */
+size_t grpc_metadata_batch_size(grpc_metadata_batch *batch);
+
/** Moves the metadata information from \a src to \a dst. Upon return, \a src is
* zeroed. */
void grpc_metadata_batch_move(grpc_metadata_batch *dst,
diff --git a/src/core/lib/transport/transport.c b/src/core/lib/transport/transport.c
index 53c634adca..e6d524abe6 100644
--- a/src/core/lib/transport/transport.c
+++ b/src/core/lib/transport/transport.c
@@ -133,8 +133,9 @@ void grpc_transport_set_pollset(grpc_exec_ctx *exec_ctx,
void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
grpc_transport *transport,
- grpc_stream *stream) {
- transport->vtable->destroy_stream(exec_ctx, transport, stream);
+ grpc_stream *stream, void *and_free_memory) {
+ transport->vtable->destroy_stream(exec_ctx, transport, stream,
+ and_free_memory);
}
char *grpc_transport_get_peer(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/transport/transport.h b/src/core/lib/transport/transport.h
index 1eb446312b..482a9d1791 100644
--- a/src/core/lib/transport/transport.h
+++ b/src/core/lib/transport/transport.h
@@ -98,6 +98,11 @@ void grpc_transport_move_stats(grpc_transport_stream_stats *from,
/* Transport stream op: a set of operations to perform on a transport
against a single stream */
typedef struct grpc_transport_stream_op {
+ /** Should be enqueued when all requested operations (excluding recv_message
+ and recv_initial_metadata which have their own closures) in a given batch
+ have been completed. */
+ grpc_closure *on_complete;
+
/** Send initial metadata to the peer, from the provided metadata batch.
idempotent_request MUST be set if this is non-null */
grpc_metadata_batch *send_initial_metadata;
@@ -129,11 +134,6 @@ typedef struct grpc_transport_stream_op {
/** Collect any stats into provided buffer, zero internal stat counters */
grpc_transport_stream_stats *collect_stats;
- /** Should be enqueued when all requested operations (excluding recv_message
- and recv_initial_metadata which have their own closures) in a given batch
- have been completed. */
- grpc_closure *on_complete;
-
/** If != GRPC_STATUS_OK, cancel this stream */
grpc_status_code cancel_with_status;
@@ -213,7 +213,7 @@ void grpc_transport_set_pollset(grpc_exec_ctx *exec_ctx,
caller, but any child memory must be cleaned up) */
void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
grpc_transport *transport,
- grpc_stream *stream);
+ grpc_stream *stream, void *and_free_memory);
void grpc_transport_stream_op_finish_with_failure(grpc_exec_ctx *exec_ctx,
grpc_transport_stream_op *op);
diff --git a/src/core/lib/transport/transport_impl.h b/src/core/lib/transport/transport_impl.h
index 2ff67073af..956155eec8 100644
--- a/src/core/lib/transport/transport_impl.h
+++ b/src/core/lib/transport/transport_impl.h
@@ -63,7 +63,7 @@ typedef struct grpc_transport_vtable {
/* implementation of grpc_transport_destroy_stream */
void (*destroy_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
- grpc_stream *stream);
+ grpc_stream *stream, void *and_free_memory);
/* implementation of grpc_transport_destroy */
void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_transport *self);
diff --git a/src/cpp/common/core_codegen.cc b/src/cpp/common/core_codegen.cc
index 33a8f755e6..8e8d42eb29 100644
--- a/src/cpp/common/core_codegen.cc
+++ b/src/cpp/common/core_codegen.cc
@@ -48,124 +48,6 @@
#include "src/core/lib/profiling/timers.h"
-namespace {
-
-const int kGrpcBufferWriterMaxBufferLength = 8192;
-
-class GrpcBufferWriter GRPC_FINAL
- : public ::grpc::protobuf::io::ZeroCopyOutputStream {
- public:
- explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
- : block_size_(block_size), byte_count_(0), have_backup_(false) {
- *bp = grpc_raw_byte_buffer_create(NULL, 0);
- slice_buffer_ = &(*bp)->data.raw.slice_buffer;
- }
-
- ~GrpcBufferWriter() GRPC_OVERRIDE {
- if (have_backup_) {
- gpr_slice_unref(backup_slice_);
- }
- }
-
- bool Next(void** data, int* size) GRPC_OVERRIDE {
- if (have_backup_) {
- slice_ = backup_slice_;
- have_backup_ = false;
- } else {
- slice_ = gpr_slice_malloc(block_size_);
- }
- *data = GPR_SLICE_START_PTR(slice_);
- // On win x64, int is only 32bit
- GPR_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
- byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
- gpr_slice_buffer_add(slice_buffer_, slice_);
- return true;
- }
-
- void BackUp(int count) GRPC_OVERRIDE {
- gpr_slice_buffer_pop(slice_buffer_);
- if (count == block_size_) {
- backup_slice_ = slice_;
- } else {
- backup_slice_ =
- gpr_slice_split_tail(&slice_, GPR_SLICE_LENGTH(slice_) - count);
- gpr_slice_buffer_add(slice_buffer_, slice_);
- }
- have_backup_ = true;
- byte_count_ -= count;
- }
-
- grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE { return byte_count_; }
-
- private:
- const int block_size_;
- int64_t byte_count_;
- gpr_slice_buffer* slice_buffer_;
- bool have_backup_;
- gpr_slice backup_slice_;
- gpr_slice slice_;
-};
-
-class GrpcBufferReader GRPC_FINAL
- : public ::grpc::protobuf::io::ZeroCopyInputStream {
- public:
- explicit GrpcBufferReader(grpc_byte_buffer* buffer)
- : byte_count_(0), backup_count_(0) {
- grpc_byte_buffer_reader_init(&reader_, buffer);
- }
- ~GrpcBufferReader() GRPC_OVERRIDE {
- grpc_byte_buffer_reader_destroy(&reader_);
- }
-
- bool Next(const void** data, int* size) GRPC_OVERRIDE {
- if (backup_count_ > 0) {
- *data = GPR_SLICE_START_PTR(slice_) + GPR_SLICE_LENGTH(slice_) -
- backup_count_;
- GPR_ASSERT(backup_count_ <= INT_MAX);
- *size = (int)backup_count_;
- backup_count_ = 0;
- return true;
- }
- if (!grpc_byte_buffer_reader_next(&reader_, &slice_)) {
- return false;
- }
- gpr_slice_unref(slice_);
- *data = GPR_SLICE_START_PTR(slice_);
- // On win x64, int is only 32bit
- GPR_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
- byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
- return true;
- }
-
- void BackUp(int count) GRPC_OVERRIDE { backup_count_ = count; }
-
- bool Skip(int count) GRPC_OVERRIDE {
- const void* data;
- int size;
- while (Next(&data, &size)) {
- if (size >= count) {
- BackUp(size - count);
- return true;
- }
- // size < count;
- count -= size;
- }
- // error or we have too large count;
- return false;
- }
-
- grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE {
- return byte_count_ - backup_count_;
- }
-
- private:
- int64_t byte_count_;
- int64_t backup_count_;
- grpc_byte_buffer_reader reader_;
- gpr_slice slice_;
-};
-} // namespace
-
namespace grpc {
grpc_completion_queue* CoreCodegen::grpc_completion_queue_create(
@@ -192,6 +74,44 @@ void CoreCodegen::grpc_byte_buffer_destroy(grpc_byte_buffer* bb) {
::grpc_byte_buffer_destroy(bb);
}
+void CoreCodegen::grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
+ grpc_byte_buffer* buffer) {
+ ::grpc_byte_buffer_reader_init(reader, buffer);
+}
+
+void CoreCodegen::grpc_byte_buffer_reader_destroy(
+ grpc_byte_buffer_reader* reader) {
+ ::grpc_byte_buffer_reader_destroy(reader);
+}
+
+int CoreCodegen::grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
+ gpr_slice* slice) {
+ return ::grpc_byte_buffer_reader_next(reader, slice);
+}
+
+grpc_byte_buffer* CoreCodegen::grpc_raw_byte_buffer_create(gpr_slice* slice,
+ size_t nslices) {
+ return ::grpc_raw_byte_buffer_create(slice, nslices);
+}
+
+gpr_slice CoreCodegen::gpr_slice_malloc(size_t length) {
+ return ::gpr_slice_malloc(length);
+}
+
+void CoreCodegen::gpr_slice_unref(gpr_slice slice) { ::gpr_slice_unref(slice); }
+
+gpr_slice CoreCodegen::gpr_slice_split_tail(gpr_slice* s, size_t split) {
+ return ::gpr_slice_split_tail(s, split);
+}
+
+void CoreCodegen::gpr_slice_buffer_add(gpr_slice_buffer* sb, gpr_slice slice) {
+ ::gpr_slice_buffer_add(sb, slice);
+}
+
+void CoreCodegen::gpr_slice_buffer_pop(gpr_slice_buffer* sb) {
+ ::gpr_slice_buffer_pop(sb);
+}
+
void CoreCodegen::grpc_metadata_array_init(grpc_metadata_array* array) {
::grpc_metadata_array_init(array);
}
@@ -200,6 +120,10 @@ void CoreCodegen::grpc_metadata_array_destroy(grpc_metadata_array* array) {
::grpc_metadata_array_destroy(array);
}
+const Status& CoreCodegen::ok() { return grpc::Status::OK; }
+
+const Status& CoreCodegen::cancelled() { return grpc::Status::CANCELLED; }
+
gpr_timespec CoreCodegen::gpr_inf_future(gpr_clock_type type) {
return ::gpr_inf_future(type);
}
@@ -209,48 +133,4 @@ void CoreCodegen::assert_fail(const char* failed_assertion) {
abort();
}
-Status CoreCodegen::SerializeProto(const grpc::protobuf::Message& msg,
- grpc_byte_buffer** bp) {
- GPR_TIMER_SCOPE("SerializeProto", 0);
- int byte_size = msg.ByteSize();
- if (byte_size <= kGrpcBufferWriterMaxBufferLength) {
- gpr_slice slice = gpr_slice_malloc(byte_size);
- GPR_ASSERT(GPR_SLICE_END_PTR(slice) ==
- msg.SerializeWithCachedSizesToArray(GPR_SLICE_START_PTR(slice)));
- *bp = grpc_raw_byte_buffer_create(&slice, 1);
- gpr_slice_unref(slice);
- return Status::OK;
- } else {
- GrpcBufferWriter writer(bp, kGrpcBufferWriterMaxBufferLength);
- return msg.SerializeToZeroCopyStream(&writer)
- ? Status::OK
- : Status(StatusCode::INTERNAL, "Failed to serialize message");
- }
-}
-
-Status CoreCodegen::DeserializeProto(grpc_byte_buffer* buffer,
- grpc::protobuf::Message* msg,
- int max_message_size) {
- GPR_TIMER_SCOPE("DeserializeProto", 0);
- if (buffer == nullptr) {
- return Status(StatusCode::INTERNAL, "No payload");
- }
- Status result = Status::OK;
- {
- GrpcBufferReader reader(buffer);
- ::grpc::protobuf::io::CodedInputStream decoder(&reader);
- if (max_message_size > 0) {
- decoder.SetTotalBytesLimit(max_message_size, max_message_size);
- }
- if (!msg->ParseFromCodedStream(&decoder)) {
- result = Status(StatusCode::INTERNAL, msg->InitializationErrorString());
- }
- if (!decoder.ConsumedEntireMessage()) {
- result = Status(StatusCode::INTERNAL, "Did not read entire message");
- }
- }
- grpc_byte_buffer_destroy(buffer);
- return result;
-}
-
} // namespace grpc
diff --git a/src/cpp/common/core_codegen.h b/src/cpp/common/core_codegen.h
index e15cb4c34a..656b11e7e7 100644
--- a/src/cpp/common/core_codegen.h
+++ b/src/cpp/common/core_codegen.h
@@ -42,13 +42,6 @@ namespace grpc {
/// Implementation of the core codegen interface.
class CoreCodegen : public CoreCodegenInterface {
private:
- Status SerializeProto(const grpc::protobuf::Message& msg,
- grpc_byte_buffer** bp) override;
-
- Status DeserializeProto(grpc_byte_buffer* buffer,
- grpc::protobuf::Message* msg,
- int max_message_size) override;
-
grpc_completion_queue* grpc_completion_queue_create(void* reserved) override;
void grpc_completion_queue_destroy(grpc_completion_queue* cq) override;
grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag,
@@ -60,11 +53,30 @@ class CoreCodegen : public CoreCodegenInterface {
void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) override;
+ void grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
+ grpc_byte_buffer* buffer) override;
+ void grpc_byte_buffer_reader_destroy(
+ grpc_byte_buffer_reader* reader) override;
+ int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
+ gpr_slice* slice) override;
+
+ grpc_byte_buffer* grpc_raw_byte_buffer_create(gpr_slice* slice,
+ size_t nslices) override;
+
+ gpr_slice gpr_slice_malloc(size_t length) override;
+ void gpr_slice_unref(gpr_slice slice) override;
+ gpr_slice gpr_slice_split_tail(gpr_slice* s, size_t split) override;
+ void gpr_slice_buffer_add(gpr_slice_buffer* sb, gpr_slice slice) override;
+ void gpr_slice_buffer_pop(gpr_slice_buffer* sb) override;
+
void grpc_metadata_array_init(grpc_metadata_array* array) override;
void grpc_metadata_array_destroy(grpc_metadata_array* array) override;
gpr_timespec gpr_inf_future(gpr_clock_type type) override;
+ virtual const Status& ok() override;
+ virtual const Status& cancelled() override;
+
void assert_fail(const char* failed_assertion) override;
};
diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
index 6c13a4fa48..d92addbf54 100644
--- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
@@ -167,6 +167,37 @@ namespace Grpc.Core.Tests
}
[Test]
+ public async Task ServerStreamingCall_EndOfStreamIsIdempotent()
+ {
+ helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+ {
+ });
+
+ var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), "");
+
+ Assert.IsFalse(await call.ResponseStream.MoveNext());
+ Assert.IsFalse(await call.ResponseStream.MoveNext());
+ }
+
+ [Test]
+ public async Task ServerStreamingCall_ErrorCanBeAwaitedTwice()
+ {
+ helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+ {
+ context.Status = new Status(StatusCode.InvalidArgument, "");
+ });
+
+ var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), "");
+
+ var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
+ Assert.AreEqual(StatusCode.InvalidArgument, ex.Status.StatusCode);
+
+ // attempting MoveNext again should result in throwing the same exception.
+ var ex2 = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
+ Assert.AreEqual(StatusCode.InvalidArgument, ex2.Status.StatusCode);
+ }
+
+ [Test]
public async Task DuplexStreamingCall()
{
helper.DuplexStreamingHandler = new DuplexStreamingServerMethod<string, string>(async (requestStream, responseStream, context) =>
@@ -209,6 +240,38 @@ namespace Grpc.Core.Tests
}
[Test]
+ public async Task ClientStreamingCall_ServerSideReadAfterCancelNotificationReturnsNull()
+ {
+ var handlerStartedBarrier = new TaskCompletionSource<object>();
+ var cancelNotificationReceivedBarrier = new TaskCompletionSource<object>();
+ var successTcs = new TaskCompletionSource<string>();
+
+ helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
+ {
+ handlerStartedBarrier.SetResult(null);
+
+ // wait for cancellation to be delivered.
+ context.CancellationToken.Register(() => cancelNotificationReceivedBarrier.SetResult(null));
+ await cancelNotificationReceivedBarrier.Task;
+
+ var moveNextResult = await requestStream.MoveNext();
+ successTcs.SetResult(!moveNextResult ? "SUCCESS" : "FAIL");
+ return "";
+ });
+
+ var cts = new CancellationTokenSource();
+ var call = Calls.AsyncClientStreamingCall(helper.CreateClientStreamingCall(new CallOptions(cancellationToken: cts.Token)));
+
+ await handlerStartedBarrier.Task;
+ cts.Cancel();
+
+ var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseAsync);
+ Assert.AreEqual(StatusCode.Cancelled, ex.Status.StatusCode);
+
+ Assert.AreEqual("SUCCESS", await successTcs.Task);
+ }
+
+ [Test]
public async Task AsyncUnaryCall_EchoMetadata()
{
helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
index 0cd059c232..47131fc454 100644
--- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
+++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
@@ -84,6 +84,8 @@
<Compile Include="SanityTest.cs" />
<Compile Include="HalfcloseTest.cs" />
<Compile Include="NUnitMain.cs" />
+ <Compile Include="Internal\FakeNativeCall.cs" />
+ <Compile Include="Internal\AsyncCallServerTest.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
new file mode 100644
index 0000000000..0e204761f6
--- /dev/null
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -0,0 +1,191 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+
+using Grpc.Core.Internal;
+using NUnit.Framework;
+
+namespace Grpc.Core.Internal.Tests
+{
+ /// <summary>
+ /// Uses fake native call to test interaction of <c>AsyncCallServer</c> wrapping code with C core in different situations.
+ /// </summary>
+ public class AsyncCallServerTest
+ {
+ Server server;
+ FakeNativeCall fakeCall;
+ AsyncCallServer<string, string> asyncCallServer;
+
+ [SetUp]
+ public void Init()
+ {
+ var environment = GrpcEnvironment.AddRef();
+
+ // Create a fake server just so we have an instance to refer to.
+ // The server won't actually be used at all.
+ server = new Server()
+ {
+ Ports = { { "localhost", 0, ServerCredentials.Insecure } }
+ };
+ server.Start();
+
+ fakeCall = new FakeNativeCall();
+ asyncCallServer = new AsyncCallServer<string, string>(
+ Marshallers.StringMarshaller.Serializer, Marshallers.StringMarshaller.Deserializer,
+ environment,
+ server);
+ asyncCallServer.InitializeForTesting(fakeCall);
+ }
+
+ [TearDown]
+ public void Cleanup()
+ {
+ server.ShutdownAsync().Wait();
+ GrpcEnvironment.Release();
+ }
+
+ [Test]
+ public void CancelNotificationAfterStartDisposes()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ [Test]
+ public void CancelNotificationAfterStartDisposesAfterPendingReadFinishes()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+
+ var moveNextTask = requestStream.MoveNext();
+
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+ fakeCall.ReceivedMessageHandler(true, null);
+ Assert.IsFalse(moveNextTask.Result);
+
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ [Test]
+ public void ReadAfterCancelNotificationCanSucceed()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+
+ // Check that starting a read after cancel notification has been processed is legal.
+ var moveNextTask = requestStream.MoveNext();
+ Assert.IsFalse(moveNextTask.Result);
+
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ [Test]
+ public void ReadCompletionFailureClosesRequestStream()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+
+ // if a read completion's success==false, the request stream will silently finish
+ // and we rely on C core cancelling the call.
+ var moveNextTask = requestStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(false, null);
+ Assert.IsFalse(moveNextTask.Result);
+
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ [Test]
+ public void WriteAfterCancelNotificationFails()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+ var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+
+ // TODO(jtattermusch): should we throw a different exception type instead?
+ Assert.Throws(typeof(InvalidOperationException), () => responseStream.WriteAsync("request1"));
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ [Test]
+ public void WriteCompletionFailureThrows()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+ var writeTask = responseStream.WriteAsync("request1");
+ fakeCall.SendCompletionHandler(false);
+ // TODO(jtattermusch): should we throw a different exception type instead?
+ Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await writeTask);
+
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ [Test]
+ public void WriteAndWriteStatusCanRunConcurrently()
+ {
+ var finishedTask = asyncCallServer.ServerSideCallAsync();
+ var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+ var writeTask = responseStream.WriteAsync("request1");
+ var writeStatusTask = asyncCallServer.SendStatusFromServerAsync(Status.DefaultSuccess, new Metadata(), null);
+
+ fakeCall.SendCompletionHandler(true);
+ fakeCall.SendStatusFromServerHandler(true);
+
+ Assert.DoesNotThrowAsync(async () => await writeTask);
+ Assert.DoesNotThrowAsync(async () => await writeStatusTask);
+
+ fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+
+ AssertFinished(asyncCallServer, fakeCall, finishedTask);
+ }
+
+ static void AssertFinished(AsyncCallServer<string, string> asyncCallServer, FakeNativeCall fakeCall, Task finishedTask)
+ {
+ Assert.IsTrue(fakeCall.IsDisposed);
+ Assert.IsTrue(finishedTask.IsCompleted);
+ Assert.DoesNotThrow(() => finishedTask.Wait());
+ }
+ }
+}
diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index 60530d3250..abe9d4a2e6 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -32,6 +32,7 @@
#endregion
using System;
+using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
@@ -40,6 +41,9 @@ using NUnit.Framework;
namespace Grpc.Core.Internal.Tests
{
+ /// <summary>
+ /// Uses fake native call to test interaction of <c>AsyncCall</c> wrapping code with C core in different situations.
+ /// </summary>
public class AsyncCallTest
{
Channel channel;
@@ -64,159 +68,421 @@ namespace Grpc.Core.Internal.Tests
}
[Test]
- public void AsyncUnary_CompletionSuccess()
+ public void AsyncUnary_CanBeStartedOnlyOnce()
+ {
+ asyncCall.UnaryCallAsync("request1");
+ Assert.Throws(typeof(InvalidOperationException),
+ () => asyncCall.UnaryCallAsync("abc"));
+ }
+
+ [Test]
+ public void AsyncUnary_StreamingOperationsNotAllowed()
+ {
+ asyncCall.UnaryCallAsync("request1");
+ Assert.ThrowsAsync(typeof(InvalidOperationException),
+ async () => await asyncCall.ReadMessageAsync());
+ Assert.Throws(typeof(InvalidOperationException),
+ () => asyncCall.StartSendMessage("abc", new WriteFlags(), (x,y) => {}));
+ }
+
+ [Test]
+ public void AsyncUnary_Success()
+ {
+ var resultTask = asyncCall.UnaryCallAsync("request1");
+ fakeCall.UnaryResponseClientHandler(true,
+ new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+ }
+
+ [Test]
+ public void AsyncUnary_NonSuccessStatusCode()
+ {
+ var resultTask = asyncCall.UnaryCallAsync("request1");
+ fakeCall.UnaryResponseClientHandler(true,
+ CreateClientSideStatus(StatusCode.InvalidArgument),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.InvalidArgument);
+ }
+
+ [Test]
+ public void AsyncUnary_NullResponsePayload()
+ {
+ var resultTask = asyncCall.UnaryCallAsync("request1");
+ fakeCall.UnaryResponseClientHandler(true,
+ new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+ null,
+ new Metadata());
+
+ // failure to deserialize will result in InvalidArgument status.
+ AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Internal);
+ }
+
+ [Test]
+ public void ClientStreaming_StreamingReadNotAllowed()
+ {
+ asyncCall.ClientStreamingCallAsync();
+ Assert.ThrowsAsync(typeof(InvalidOperationException),
+ async () => await asyncCall.ReadMessageAsync());
+ }
+
+ [Test]
+ public void ClientStreaming_NoRequest_Success()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ fakeCall.UnaryResponseClientHandler(true,
+ new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+ }
+
+ [Test]
+ public void ClientStreaming_NoRequest_NonSuccessStatusCode()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ fakeCall.UnaryResponseClientHandler(true,
+ CreateClientSideStatus(StatusCode.InvalidArgument),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.InvalidArgument);
+ }
+
+ [Test]
+ public void ClientStreaming_MoreRequests_Success()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+ var writeTask = requestStream.WriteAsync("request1");
+ fakeCall.SendCompletionHandler(true);
+ writeTask.Wait();
+
+ var writeTask2 = requestStream.WriteAsync("request2");
+ fakeCall.SendCompletionHandler(true);
+ writeTask2.Wait();
+
+ var completeTask = requestStream.CompleteAsync();
+ fakeCall.SendCompletionHandler(true);
+ completeTask.Wait();
+
+ fakeCall.UnaryResponseClientHandler(true,
+ new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+ }
+
+ [Test]
+ public void ClientStreaming_WriteFailure()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+ var writeTask = requestStream.WriteAsync("request1");
+ fakeCall.SendCompletionHandler(false);
+ Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await writeTask);
+
+ fakeCall.UnaryResponseClientHandler(true,
+ CreateClientSideStatus(StatusCode.Internal),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Internal);
+ }
+
+ [Test]
+ public void ClientStreaming_WriteAfterReceivingStatusFails()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+ fakeCall.UnaryResponseClientHandler(true,
+ new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+ Assert.Throws(typeof(InvalidOperationException), () => requestStream.WriteAsync("request1"));
+ }
+
+ [Test]
+ public void ClientStreaming_CompleteAfterReceivingStatusSucceeds()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+ fakeCall.UnaryResponseClientHandler(true,
+ new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+ Assert.DoesNotThrowAsync(async () => await requestStream.CompleteAsync());
+ }
+
+ [Test]
+ public void ClientStreaming_WriteAfterCancellationRequestFails()
+ {
+ var resultTask = asyncCall.ClientStreamingCallAsync();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+ asyncCall.Cancel();
+ Assert.IsTrue(fakeCall.IsCancelled);
+
+ Assert.Throws(typeof(OperationCanceledException), () => requestStream.WriteAsync("request1"));
+
+ fakeCall.UnaryResponseClientHandler(true,
+ CreateClientSideStatus(StatusCode.Cancelled),
+ CreateResponsePayload(),
+ new Metadata());
+
+ AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Cancelled);
+ }
+
+ [Test]
+ public void ServerStreaming_StreamingSendNotAllowed()
+ {
+ asyncCall.StartServerStreamingCall("request1");
+ Assert.Throws(typeof(InvalidOperationException),
+ () => asyncCall.StartSendMessage("abc", new WriteFlags(), (x,y) => {}));
+ }
+
+ [Test]
+ public void ServerStreaming_NoResponse_Success1()
+ {
+ asyncCall.StartServerStreamingCall("request1");
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+ var readTask = responseStream.MoveNext();
+
+ fakeCall.ReceivedResponseHeadersHandler(true, new Metadata());
+ Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+ AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+ }
+
+ [Test]
+ public void ServerStreaming_NoResponse_Success2()
+ {
+ asyncCall.StartServerStreamingCall("request1");
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+ var readTask = responseStream.MoveNext();
+
+ // try alternative order of completions
+ fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+ fakeCall.ReceivedMessageHandler(true, null);
+
+ AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+ }
+
+ [Test]
+ public void ServerStreaming_NoResponse_ReadFailure()
+ {
+ asyncCall.StartServerStreamingCall("request1");
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+ var readTask = responseStream.MoveNext();
+
+ fakeCall.ReceivedMessageHandler(false, null); // after a failed read, we rely on C core to deliver appropriate status code.
+ fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Internal));
+
+ AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Internal);
+ }
+
+ [Test]
+ public void ServerStreaming_MoreResponses_Success()
+ {
+ asyncCall.StartServerStreamingCall("request1");
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ var readTask1 = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+ Assert.IsTrue(readTask1.Result);
+ Assert.AreEqual("response1", responseStream.Current);
+
+ var readTask2 = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+ Assert.IsTrue(readTask2.Result);
+ Assert.AreEqual("response1", responseStream.Current);
+
+ var readTask3 = responseStream.MoveNext();
+ fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+ fakeCall.ReceivedMessageHandler(true, null);
+
+ AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask3);
+ }
+
+ [Test]
+ public void DuplexStreaming_NoRequestNoResponse_Success()
+ {
+ asyncCall.StartDuplexStreamingCall();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ var writeTask1 = requestStream.CompleteAsync();
+ fakeCall.SendCompletionHandler(true);
+ Assert.DoesNotThrowAsync(async () => await writeTask1);
+
+ var readTask = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+ AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+ }
+
+ [Test]
+ public void DuplexStreaming_WriteAfterReceivingStatusFails()
+ {
+ asyncCall.StartDuplexStreamingCall();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ var readTask = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+ AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+
+ Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await requestStream.WriteAsync("request1"));
+ }
+
+ [Test]
+ public void DuplexStreaming_CompleteAfterReceivingStatusFails()
+ {
+ asyncCall.StartDuplexStreamingCall();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ var readTask = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+ AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+
+ Assert.DoesNotThrowAsync(async () => await requestStream.CompleteAsync());
+ }
+
+ [Test]
+ public void DuplexStreaming_WriteAfterCancellationRequestFails()
+ {
+ asyncCall.StartDuplexStreamingCall();
+ var requestStream = new ClientRequestStream<string, string>(asyncCall);
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ asyncCall.Cancel();
+ Assert.IsTrue(fakeCall.IsCancelled);
+ Assert.Throws(typeof(OperationCanceledException), () => requestStream.WriteAsync("request1"));
+
+ var readTask = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled));
+
+ AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Cancelled);
+ }
+
+ [Test]
+ public void DuplexStreaming_ReadAfterCancellationRequestCanSucceed()
+ {
+ asyncCall.StartDuplexStreamingCall();
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ asyncCall.Cancel();
+ Assert.IsTrue(fakeCall.IsCancelled);
+
+ var readTask1 = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+ Assert.IsTrue(readTask1.Result);
+ Assert.AreEqual("response1", responseStream.Current);
+
+ var readTask2 = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled));
+
+ AssertStreamingResponseError(asyncCall, fakeCall, readTask2, StatusCode.Cancelled);
+ }
+
+ [Test]
+ public void DuplexStreaming_ReadStartedBeforeCancellationRequestCanSucceed()
+ {
+ asyncCall.StartDuplexStreamingCall();
+ var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+ var readTask1 = responseStream.MoveNext(); // initiate the read before cancel request
+ asyncCall.Cancel();
+ Assert.IsTrue(fakeCall.IsCancelled);
+
+ fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+ Assert.IsTrue(readTask1.Result);
+ Assert.AreEqual("response1", responseStream.Current);
+
+ var readTask2 = responseStream.MoveNext();
+ fakeCall.ReceivedMessageHandler(true, null);
+ fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled));
+
+ AssertStreamingResponseError(asyncCall, fakeCall, readTask2, StatusCode.Cancelled);
+ }
+
+ ClientSideStatus CreateClientSideStatus(StatusCode statusCode)
+ {
+ return new ClientSideStatus(new Status(statusCode, ""), new Metadata());
+ }
+
+ byte[] CreateResponsePayload()
+ {
+ return Marshallers.StringMarshaller.Serializer("response1");
+ }
+
+ static void AssertUnaryResponseSuccess(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<string> resultTask)
{
- var resultTask = asyncCall.UnaryCallAsync("abc");
- fakeCall.UnaryResponseClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()), new byte[] { 1, 2, 3 }, new Metadata());
Assert.IsTrue(resultTask.IsCompleted);
Assert.IsTrue(fakeCall.IsDisposed);
+
Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus());
+ Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+ Assert.AreEqual(0, asyncCall.GetTrailers().Count);
+ Assert.AreEqual("response1", resultTask.Result);
}
- [Test]
- public void AsyncUnary_CompletionFailure()
+ static void AssertStreamingResponseSuccess(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<bool> moveNextTask)
{
- var resultTask = asyncCall.UnaryCallAsync("abc");
- fakeCall.UnaryResponseClientHandler(false, new ClientSideStatus(new Status(StatusCode.Internal, ""), null), new byte[] { 1, 2, 3 }, new Metadata());
+ Assert.IsTrue(moveNextTask.IsCompleted);
+ Assert.IsTrue(fakeCall.IsDisposed);
+ Assert.IsFalse(moveNextTask.Result);
+ Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus());
+ Assert.AreEqual(0, asyncCall.GetTrailers().Count);
+ }
+
+ static void AssertUnaryResponseError(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<string> resultTask, StatusCode expectedStatusCode)
+ {
Assert.IsTrue(resultTask.IsCompleted);
Assert.IsTrue(fakeCall.IsDisposed);
- Assert.AreEqual(StatusCode.Internal, asyncCall.GetStatus().StatusCode);
- Assert.IsNull(asyncCall.GetTrailers());
+ Assert.AreEqual(expectedStatusCode, asyncCall.GetStatus().StatusCode);
var ex = Assert.ThrowsAsync<RpcException>(async () => await resultTask);
- Assert.AreEqual(StatusCode.Internal, ex.Status.StatusCode);
- }
-
- internal class FakeNativeCall : INativeCall
- {
- public UnaryResponseClientHandler UnaryResponseClientHandler
- {
- get;
- set;
- }
-
- public ReceivedStatusOnClientHandler ReceivedStatusOnClientHandler
- {
- get;
- set;
- }
-
- public ReceivedMessageHandler ReceivedMessageHandler
- {
- get;
- set;
- }
-
- public ReceivedResponseHeadersHandler ReceivedResponseHeadersHandler
- {
- get;
- set;
- }
-
- public SendCompletionHandler SendCompletionHandler
- {
- get;
- set;
- }
-
- public ReceivedCloseOnServerHandler ReceivedCloseOnServerHandler
- {
- get;
- set;
- }
-
- public bool IsCancelled
- {
- get;
- set;
- }
-
- public bool IsDisposed
- {
- get;
- set;
- }
-
- public void Cancel()
- {
- IsCancelled = true;
- }
-
- public void CancelWithStatus(Status status)
- {
- IsCancelled = true;
- }
-
- public string GetPeer()
- {
- return "PEER";
- }
-
- public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
- {
- UnaryResponseClientHandler = callback;
- }
-
- public void StartUnary(BatchContextSafeHandle ctx, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
- {
- throw new NotImplementedException();
- }
-
- public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray)
- {
- UnaryResponseClientHandler = callback;
- }
-
- public void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
- {
- ReceivedStatusOnClientHandler = callback;
- }
-
- public void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray)
- {
- ReceivedStatusOnClientHandler = callback;
- }
-
- public void StartReceiveMessage(ReceivedMessageHandler callback)
- {
- ReceivedMessageHandler = callback;
- }
-
- public void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback)
- {
- ReceivedResponseHeadersHandler = callback;
- }
-
- public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray)
- {
- SendCompletionHandler = callback;
- }
-
- public void StartSendMessage(SendCompletionHandler callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata)
- {
- SendCompletionHandler = callback;
- }
-
- public void StartSendCloseFromClient(SendCompletionHandler callback)
- {
- SendCompletionHandler = callback;
- }
-
- public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
- {
- SendCompletionHandler = callback;
- }
-
- public void StartServerSide(ReceivedCloseOnServerHandler callback)
- {
- ReceivedCloseOnServerHandler = callback;
- }
-
- public void Dispose()
- {
- IsDisposed = true;
- }
+ Assert.AreEqual(expectedStatusCode, ex.Status.StatusCode);
+ Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+ Assert.AreEqual(0, asyncCall.GetTrailers().Count);
+ }
+
+ static void AssertStreamingResponseError(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<bool> moveNextTask, StatusCode expectedStatusCode)
+ {
+ Assert.IsTrue(moveNextTask.IsCompleted);
+ Assert.IsTrue(fakeCall.IsDisposed);
+
+ var ex = Assert.ThrowsAsync<RpcException>(async () => await moveNextTask);
+ Assert.AreEqual(expectedStatusCode, ex.Status.StatusCode);
+ Assert.AreEqual(expectedStatusCode, asyncCall.GetStatus().StatusCode);
+ Assert.AreEqual(0, asyncCall.GetTrailers().Count);
}
}
}
diff --git a/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
new file mode 100644
index 0000000000..909112a47c
--- /dev/null
+++ b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
@@ -0,0 +1,184 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+
+using Grpc.Core.Internal;
+using NUnit.Framework;
+
+namespace Grpc.Core.Internal.Tests
+{
+ /// <summary>
+ /// For testing purposes.
+ /// </summary>
+ internal class FakeNativeCall : INativeCall
+ {
+ public UnaryResponseClientHandler UnaryResponseClientHandler
+ {
+ get;
+ set;
+ }
+
+ public ReceivedStatusOnClientHandler ReceivedStatusOnClientHandler
+ {
+ get;
+ set;
+ }
+
+ public ReceivedMessageHandler ReceivedMessageHandler
+ {
+ get;
+ set;
+ }
+
+ public ReceivedResponseHeadersHandler ReceivedResponseHeadersHandler
+ {
+ get;
+ set;
+ }
+
+ public SendCompletionHandler SendCompletionHandler
+ {
+ get;
+ set;
+ }
+
+ public SendCompletionHandler SendStatusFromServerHandler
+ {
+ get;
+ set;
+ }
+
+ public ReceivedCloseOnServerHandler ReceivedCloseOnServerHandler
+ {
+ get;
+ set;
+ }
+
+ public bool IsCancelled
+ {
+ get;
+ set;
+ }
+
+ public bool IsDisposed
+ {
+ get;
+ set;
+ }
+
+ public void Cancel()
+ {
+ IsCancelled = true;
+ }
+
+ public void CancelWithStatus(Status status)
+ {
+ IsCancelled = true;
+ }
+
+ public string GetPeer()
+ {
+ return "PEER";
+ }
+
+ public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
+ {
+ UnaryResponseClientHandler = callback;
+ }
+
+ public void StartUnary(BatchContextSafeHandle ctx, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray)
+ {
+ UnaryResponseClientHandler = callback;
+ }
+
+ public void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
+ {
+ ReceivedStatusOnClientHandler = callback;
+ }
+
+ public void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray)
+ {
+ ReceivedStatusOnClientHandler = callback;
+ }
+
+ public void StartReceiveMessage(ReceivedMessageHandler callback)
+ {
+ ReceivedMessageHandler = callback;
+ }
+
+ public void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback)
+ {
+ ReceivedResponseHeadersHandler = callback;
+ }
+
+ public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray)
+ {
+ SendCompletionHandler = callback;
+ }
+
+ public void StartSendMessage(SendCompletionHandler callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata)
+ {
+ SendCompletionHandler = callback;
+ }
+
+ public void StartSendCloseFromClient(SendCompletionHandler callback)
+ {
+ SendCompletionHandler = callback;
+ }
+
+ public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+ byte[] optionalPayload, WriteFlags writeFlags)
+ {
+ SendStatusFromServerHandler = callback;
+ }
+
+ public void StartServerSide(ReceivedCloseOnServerHandler callback)
+ {
+ ReceivedCloseOnServerHandler = callback;
+ }
+
+ public void Dispose()
+ {
+ IsDisposed = true;
+ }
+ }
+}
diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs
index a5c78cc9d7..bee0ef1d62 100644
--- a/src/csharp/Grpc.Core/GrpcEnvironment.cs
+++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs
@@ -45,11 +45,12 @@ namespace Grpc.Core
/// </summary>
public class GrpcEnvironment
{
- const int THREAD_POOL_SIZE = 4;
+ const int MinDefaultThreadPoolSize = 4;
static object staticLock = new object();
static GrpcEnvironment instance;
static int refCount;
+ static int? customThreadPoolSize;
static ILogger logger = new ConsoleLogger();
@@ -123,13 +124,30 @@ namespace Grpc.Core
}
/// <summary>
+ /// Sets the number of threads in the gRPC thread pool that polls for internal RPC events.
+ /// Can be only invoke before the <c>GrpcEnviroment</c> is started and cannot be changed afterwards.
+ /// Setting thread pool size is an advanced setting and you should only use it if you know what you are doing.
+ /// Most users should rely on the default value provided by gRPC library.
+ /// Note: this method is part of an experimental API that can change or be removed without any prior notice.
+ /// </summary>
+ public static void SetThreadPoolSize(int threadCount)
+ {
+ lock (staticLock)
+ {
+ GrpcPreconditions.CheckState(instance == null, "Can only be set before GrpcEnvironment is initialized");
+ GrpcPreconditions.CheckArgument(threadCount > 0, "threadCount needs to be a positive number");
+ customThreadPoolSize = threadCount;
+ }
+ }
+
+ /// <summary>
/// Creates gRPC environment.
/// </summary>
private GrpcEnvironment()
{
GrpcNativeInit();
completionRegistry = new CompletionRegistry(this);
- threadPool = new GrpcThreadPool(this, THREAD_POOL_SIZE);
+ threadPool = new GrpcThreadPool(this, GetThreadPoolSizeOrDefault());
threadPool.Start();
}
@@ -200,5 +218,17 @@ namespace Grpc.Core
debugStats.CheckOK();
}
+
+ private int GetThreadPoolSizeOrDefault()
+ {
+ if (customThreadPoolSize.HasValue)
+ {
+ return customThreadPoolSize.Value;
+ }
+ // In systems with many cores, use half of the cores for GrpcThreadPool
+ // and the other half for .NET thread pool. This heuristic definitely needs
+ // more work, but seems to work reasonably well for a start.
+ return Math.Max(MinDefaultThreadPoolSize, Environment.ProcessorCount / 2);
+ }
}
}
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index 016e1b8587..f522174bd0 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -241,11 +241,10 @@ namespace Grpc.Core.Internal
/// <summary>
/// Receives a streaming response. Only one pending read action is allowed at any given time.
- /// completionDelegate is called when the operation finishes.
/// </summary>
- public void StartReadMessage(AsyncCompletionDelegate<TResponse> completionDelegate)
+ public Task<TResponse> ReadMessageAsync()
{
- StartReadMessageInternal(completionDelegate);
+ return ReadMessageInternalAsync();
}
/// <summary>
@@ -409,10 +408,13 @@ namespace Grpc.Core.Internal
/// </summary>
private void HandleUnaryResponse(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders)
{
+ // NOTE: because this event is a result of batch containing GRPC_OP_RECV_STATUS_ON_CLIENT,
+ // success will be always set to true.
+
using (Profilers.ForCurrentThread().NewScope("AsyncCall.HandleUnaryResponse"))
{
TResponse msg = default(TResponse);
- var deserializeException = success ? TryDeserialize(receivedMessage, out msg) : null;
+ var deserializeException = TryDeserialize(receivedMessage, out msg);
lock (myLock)
{
@@ -425,14 +427,13 @@ namespace Grpc.Core.Internal
finishedStatus = receivedStatus;
ReleaseResourcesIfPossible();
-
}
responseHeadersTcs.SetResult(responseHeaders);
var status = receivedStatus.Status;
- if (!success || status.StatusCode != StatusCode.OK)
+ if (status.StatusCode != StatusCode.OK)
{
unaryResponseTcs.SetException(new RpcException(status));
return;
@@ -447,6 +448,9 @@ namespace Grpc.Core.Internal
/// </summary>
private void HandleFinished(bool success, ClientSideStatus receivedStatus)
{
+ // NOTE: because this event is a result of batch containing GRPC_OP_RECV_STATUS_ON_CLIENT,
+ // success will be always set to true.
+
lock (myLock)
{
finished = true;
@@ -457,7 +461,7 @@ namespace Grpc.Core.Internal
var status = receivedStatus.Status;
- if (!success || status.StatusCode != StatusCode.OK)
+ if (status.StatusCode != StatusCode.OK)
{
streamingCallFinishedTcs.SetException(new RpcException(status));
return;
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index ccd047f469..42234dcac2 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -68,7 +68,8 @@ namespace Grpc.Core.Internal
protected bool cancelRequested;
protected AsyncCompletionDelegate<object> sendCompletionDelegate; // Completion of a pending send or sendclose if not null.
- protected AsyncCompletionDelegate<TRead> readCompletionDelegate; // Completion of a pending send or sendclose if not null.
+ protected TaskCompletionSource<TRead> streamingReadTcs; // Completion of a pending streaming read if not null.
+ protected TaskCompletionSource<object> sendStatusFromServerTcs;
protected bool readingDone; // True if last read (i.e. read with null payload) was already received.
protected bool halfcloseRequested; // True if send close have been initiated.
@@ -150,15 +151,25 @@ namespace Grpc.Core.Internal
/// Initiates reading a message. Only one read operation can be active at a time.
/// completionDelegate is invoked upon completion.
/// </summary>
- protected void StartReadMessageInternal(AsyncCompletionDelegate<TRead> completionDelegate)
+ protected Task<TRead> ReadMessageInternalAsync()
{
lock (myLock)
{
- GrpcPreconditions.CheckNotNull(completionDelegate, "Completion delegate cannot be null");
- CheckReadingAllowed();
+ GrpcPreconditions.CheckState(started);
+ if (readingDone)
+ {
+ // the last read that returns null or throws an exception is idempotent
+ // and maintain its state.
+ GrpcPreconditions.CheckState(streamingReadTcs != null, "Call does not support streaming reads.");
+ return streamingReadTcs.Task;
+ }
+
+ GrpcPreconditions.CheckState(streamingReadTcs == null, "Only one read can be pending at a time");
+ GrpcPreconditions.CheckState(!disposed);
call.StartReceiveMessage(HandleReadFinished);
- readCompletionDelegate = completionDelegate;
+ streamingReadTcs = new TaskCompletionSource<TRead>();
+ return streamingReadTcs.Task;
}
}
@@ -213,15 +224,6 @@ namespace Grpc.Core.Internal
GrpcPreconditions.CheckState(sendCompletionDelegate == null, "Only one write can be pending at a time");
}
- protected virtual void CheckReadingAllowed()
- {
- GrpcPreconditions.CheckState(started);
- GrpcPreconditions.CheckState(!disposed);
-
- GrpcPreconditions.CheckState(!readingDone, "Stream has already been closed.");
- GrpcPreconditions.CheckState(readCompletionDelegate == null, "Only one read can be pending at a time");
- }
-
protected void CheckNotCancelled()
{
if (cancelRequested)
@@ -322,22 +324,18 @@ namespace Grpc.Core.Internal
/// </summary>
protected void HandleSendStatusFromServerFinished(bool success)
{
- AsyncCompletionDelegate<object> origCompletionDelegate = null;
lock (myLock)
{
- origCompletionDelegate = sendCompletionDelegate;
- sendCompletionDelegate = null;
-
ReleaseResourcesIfPossible();
}
if (!success)
{
- FireCompletion(origCompletionDelegate, null, new InvalidOperationException("Error sending status from server."));
+ sendStatusFromServerTcs.SetException(new InvalidOperationException("Error sending status from server."));
}
else
{
- FireCompletion(origCompletionDelegate, null, null);
+ sendStatusFromServerTcs.SetResult(null);
}
}
@@ -346,15 +344,17 @@ namespace Grpc.Core.Internal
/// </summary>
protected void HandleReadFinished(bool success, byte[] receivedMessage)
{
+ // if success == false, received message will be null. It that case we will
+ // treat this completion as the last read an rely on C core to handle the failed
+ // read (e.g. deliver approriate statusCode on the clientside).
+
TRead msg = default(TRead);
var deserializeException = (success && receivedMessage != null) ? TryDeserialize(receivedMessage, out msg) : null;
- AsyncCompletionDelegate<TRead> origCompletionDelegate = null;
+ TaskCompletionSource<TRead> origTcs = null;
lock (myLock)
{
- origCompletionDelegate = readCompletionDelegate;
- readCompletionDelegate = null;
-
+ origTcs = streamingReadTcs;
if (receivedMessage == null)
{
// This was the last read.
@@ -364,20 +364,25 @@ namespace Grpc.Core.Internal
if (deserializeException != null && IsClient)
{
readingDone = true;
+
+ // TODO(jtattermusch): it might be too late to set the status
CancelWithStatus(DeserializeResponseFailureStatus);
}
+ if (!readingDone)
+ {
+ streamingReadTcs = null;
+ }
+
ReleaseResourcesIfPossible();
}
- // TODO: handle the case when success==false
-
if (deserializeException != null && !IsClient)
{
- FireCompletion(origCompletionDelegate, default(TRead), new IOException("Failed to deserialize request message.", deserializeException));
+ origTcs.SetException(new IOException("Failed to deserialize request message.", deserializeException));
return;
}
- FireCompletion(origCompletionDelegate, msg, null);
+ origTcs.SetResult(msg);
}
}
}
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index bea2b3660c..b1566b44a7 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -65,6 +65,15 @@ namespace Grpc.Core.Internal
}
/// <summary>
+ /// Only for testing purposes.
+ /// </summary>
+ public void InitializeForTesting(INativeCall call)
+ {
+ server.AddCallReference(this);
+ InitializeInternal(call);
+ }
+
+ /// <summary>
/// Starts a server side call.
/// </summary>
public Task ServerSideCallAsync()
@@ -91,11 +100,10 @@ namespace Grpc.Core.Internal
/// <summary>
/// Receives a streaming request. Only one pending read action is allowed at any given time.
- /// completionDelegate is called when the operation finishes.
/// </summary>
- public void StartReadMessage(AsyncCompletionDelegate<TRequest> completionDelegate)
+ public Task<TRequest> ReadMessageAsync()
{
- StartReadMessageInternal(completionDelegate);
+ return ReadMessageInternalAsync();
}
/// <summary>
@@ -128,24 +136,33 @@ namespace Grpc.Core.Internal
}
/// <summary>
- /// Sends call result status, also indicating server is done with streaming responses.
- /// Only one pending send action is allowed at any given time.
- /// completionDelegate is called when the operation finishes.
+ /// Sends call result status, indicating we are done with writes.
+ /// Sending a status different from StatusCode.OK will also implicitly cancel the call.
/// </summary>
- public void StartSendStatusFromServer(Status status, Metadata trailers, AsyncCompletionDelegate<object> completionDelegate)
+ public Task SendStatusFromServerAsync(Status status, Metadata trailers, Tuple<TResponse, WriteFlags> optionalWrite)
{
+ byte[] payload = optionalWrite != null ? UnsafeSerialize(optionalWrite.Item1) : null;
+ var writeFlags = optionalWrite != null ? optionalWrite.Item2 : default(WriteFlags);
+
lock (myLock)
{
- GrpcPreconditions.CheckNotNull(completionDelegate, "Completion delegate cannot be null");
- CheckSendingAllowed(allowFinished: false);
+ GrpcPreconditions.CheckState(started);
+ GrpcPreconditions.CheckState(!disposed);
+ GrpcPreconditions.CheckState(!halfcloseRequested, "Can only send status from server once.");
using (var metadataArray = MetadataArraySafeHandle.Create(trailers))
{
- call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent);
+ call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent,
+ payload, writeFlags);
}
halfcloseRequested = true;
- readingDone = true;
- sendCompletionDelegate = completionDelegate;
+ initialMetadataSent = true;
+ sendStatusFromServerTcs = new TaskCompletionSource<object>();
+ if (optionalWrite != null)
+ {
+ streamingWritesCounter++;
+ }
+ return sendStatusFromServerTcs.Task;
}
}
@@ -174,12 +191,6 @@ namespace Grpc.Core.Internal
get { return false; }
}
- protected override void CheckReadingAllowed()
- {
- base.CheckReadingAllowed();
- GrpcPreconditions.CheckArgument(!cancelRequested);
- }
-
protected override void OnAfterReleaseResources()
{
server.RemoveCallReference(this);
@@ -190,12 +201,21 @@ namespace Grpc.Core.Internal
/// </summary>
private void HandleFinishedServerside(bool success, bool cancelled)
{
+ // NOTE: because this event is a result of batch containing GRPC_OP_RECV_CLOSE_ON_SERVER,
+ // success will be always set to true.
lock (myLock)
{
finished = true;
+ if (streamingReadTcs == null)
+ {
+ // if there's no pending read, readingDone=true will dispose now.
+ // if there is a pending read, we will dispose once that read finishes.
+ readingDone = true;
+ streamingReadTcs = new TaskCompletionSource<TRequest>();
+ streamingReadTcs.SetResult(default(TRequest));
+ }
ReleaseResourcesIfPossible();
}
- // TODO(jtattermusch): handle error
if (cancelled)
{
diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs
index 500653ba5d..244b97d4a4 100644
--- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs
+++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs
@@ -135,13 +135,16 @@ namespace Grpc.Core.Internal
}
}
- public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
+ public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+ byte[] optionalPayload, WriteFlags writeFlags)
{
using (completionQueue.NewScope())
{
var ctx = BatchContextSafeHandle.Create();
+ var optionalPayloadLength = optionalPayload != null ? new UIntPtr((ulong)optionalPayload.Length) : UIntPtr.Zero;
completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success));
- Native.grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata).CheckOk();
+ Native.grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata,
+ optionalPayload, optionalPayloadLength, writeFlags).CheckOk();
}
}
diff --git a/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs b/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs
index d6e34a0f04..ad9423ff58 100644
--- a/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs
+++ b/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs
@@ -68,9 +68,7 @@ namespace Grpc.Core.Internal
{
throw new InvalidOperationException("Cancellation of individual reads is not supported.");
}
- var taskSource = new AsyncCompletionTaskSource<TResponse>();
- call.StartReadMessage(taskSource.CompletionDelegate);
- var result = await taskSource.Task.ConfigureAwait(false);
+ var result = await call.ReadMessageAsync().ConfigureAwait(false);
this.current = result;
if (result == null)
diff --git a/src/csharp/Grpc.Core/Internal/INativeCall.cs b/src/csharp/Grpc.Core/Internal/INativeCall.cs
index cbef599139..cd3719cb50 100644
--- a/src/csharp/Grpc.Core/Internal/INativeCall.cs
+++ b/src/csharp/Grpc.Core/Internal/INativeCall.cs
@@ -78,7 +78,7 @@ namespace Grpc.Core.Internal
void StartSendCloseFromClient(SendCompletionHandler callback);
- void StartSendStatusFromServer(SendCompletionHandler callback, Grpc.Core.Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata);
+ void StartSendStatusFromServer(SendCompletionHandler callback, Grpc.Core.Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata, byte[] optionalPayload, Grpc.Core.WriteFlags writeFlags);
void StartServerSide(ReceivedCloseOnServerHandler callback);
}
diff --git a/src/csharp/Grpc.Core/Internal/NativeMethods.cs b/src/csharp/Grpc.Core/Internal/NativeMethods.cs
index 9ee0ba3bc0..c277c73ef0 100644
--- a/src/csharp/Grpc.Core/Internal/NativeMethods.cs
+++ b/src/csharp/Grpc.Core/Internal/NativeMethods.cs
@@ -421,20 +421,21 @@ namespace Grpc.Core.Internal
public delegate GRPCCallError grpcsharp_call_cancel_delegate(CallSafeHandle call);
public delegate GRPCCallError grpcsharp_call_cancel_with_status_delegate(CallSafeHandle call, StatusCode status, string description);
public delegate GRPCCallError grpcsharp_call_start_unary_delegate(CallSafeHandle call,
- BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
+ BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
public delegate GRPCCallError grpcsharp_call_start_client_streaming_delegate(CallSafeHandle call,
BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
public delegate GRPCCallError grpcsharp_call_start_server_streaming_delegate(CallSafeHandle call,
- BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len,
+ BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen,
MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
public delegate GRPCCallError grpcsharp_call_start_duplex_streaming_delegate(CallSafeHandle call,
BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
public delegate GRPCCallError grpcsharp_call_send_message_delegate(CallSafeHandle call,
- BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
+ BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
public delegate GRPCCallError grpcsharp_call_send_close_from_client_delegate(CallSafeHandle call,
BatchContextSafeHandle ctx);
public delegate GRPCCallError grpcsharp_call_send_status_from_server_delegate(CallSafeHandle call,
- BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata);
+ BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+ byte[] optionalSendBuffer, UIntPtr optionalSendBufferLen, WriteFlags writeFlags);
public delegate GRPCCallError grpcsharp_call_recv_message_delegate(CallSafeHandle call,
BatchContextSafeHandle ctx);
public delegate GRPCCallError grpcsharp_call_recv_initial_metadata_delegate(CallSafeHandle call,
@@ -593,7 +594,7 @@ namespace Grpc.Core.Internal
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_start_unary(CallSafeHandle call,
- BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
+ BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_start_client_streaming(CallSafeHandle call,
@@ -601,7 +602,7 @@ namespace Grpc.Core.Internal
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_start_server_streaming(CallSafeHandle call,
- BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len,
+ BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen,
MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
[DllImport("grpc_csharp_ext.dll")]
@@ -610,7 +611,7 @@ namespace Grpc.Core.Internal
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_send_message(CallSafeHandle call,
- BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
+ BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_send_close_from_client(CallSafeHandle call,
@@ -618,7 +619,8 @@ namespace Grpc.Core.Internal
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_send_status_from_server(CallSafeHandle call,
- BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata);
+ BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+ byte[] optionalSendBuffer, UIntPtr optionalSendBufferLen, WriteFlags writeFlags);
[DllImport("grpc_csharp_ext.dll")]
public static extern GRPCCallError grpcsharp_call_recv_message(CallSafeHandle call,
diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
index 1f83e51548..85b7a4b01e 100644
--- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
@@ -75,29 +75,32 @@ namespace Grpc.Core.Internal
var responseStream = new ServerResponseStream<TRequest, TResponse>(asyncCall);
Status status;
+ Tuple<TResponse,WriteFlags> responseTuple = null;
var context = HandlerUtils.NewContext(newRpc, asyncCall.Peer, responseStream, asyncCall.CancellationToken);
try
{
GrpcPreconditions.CheckArgument(await requestStream.MoveNext().ConfigureAwait(false));
var request = requestStream.Current;
- // TODO(jtattermusch): we need to read the full stream so that native callhandle gets deallocated.
- GrpcPreconditions.CheckArgument(!await requestStream.MoveNext().ConfigureAwait(false));
- var result = await handler(request, context).ConfigureAwait(false);
+ var response = await handler(request, context).ConfigureAwait(false);
status = context.Status;
- await responseStream.WriteAsync(result).ConfigureAwait(false);
+ responseTuple = Tuple.Create(response, HandlerUtils.GetWriteFlags(context.WriteOptions));
}
catch (Exception e)
{
- Logger.Error(e, "Exception occured in handler.");
+ if (!(e is RpcException))
+ {
+ Logger.Warning(e, "Exception occured in handler.");
+ }
status = HandlerUtils.StatusFromException(e);
}
try
{
- await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+ await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, responseTuple).ConfigureAwait(false);
}
- catch (OperationCanceledException)
+ catch (Exception)
{
- // Call has been already cancelled.
+ asyncCall.Cancel();
+ throw;
}
await finishedTask.ConfigureAwait(false);
}
@@ -136,24 +139,26 @@ namespace Grpc.Core.Internal
{
GrpcPreconditions.CheckArgument(await requestStream.MoveNext().ConfigureAwait(false));
var request = requestStream.Current;
- // TODO(jtattermusch): we need to read the full stream so that native callhandle gets deallocated.
- GrpcPreconditions.CheckArgument(!await requestStream.MoveNext().ConfigureAwait(false));
await handler(request, responseStream, context).ConfigureAwait(false);
status = context.Status;
}
catch (Exception e)
{
- Logger.Error(e, "Exception occured in handler.");
+ if (!(e is RpcException))
+ {
+ Logger.Warning(e, "Exception occured in handler.");
+ }
status = HandlerUtils.StatusFromException(e);
}
try
{
- await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+ await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, null).ConfigureAwait(false);
}
- catch (OperationCanceledException)
+ catch (Exception)
{
- // Call has been already cancelled.
+ asyncCall.Cancel();
+ throw;
}
await finishedTask.ConfigureAwait(false);
}
@@ -187,33 +192,31 @@ namespace Grpc.Core.Internal
var responseStream = new ServerResponseStream<TRequest, TResponse>(asyncCall);
Status status;
+ Tuple<TResponse,WriteFlags> responseTuple = null;
var context = HandlerUtils.NewContext(newRpc, asyncCall.Peer, responseStream, asyncCall.CancellationToken);
try
{
- var result = await handler(requestStream, context).ConfigureAwait(false);
+ var response = await handler(requestStream, context).ConfigureAwait(false);
status = context.Status;
- try
- {
- await responseStream.WriteAsync(result).ConfigureAwait(false);
- }
- catch (OperationCanceledException)
- {
- status = Status.DefaultCancelled;
- }
+ responseTuple = Tuple.Create(response, HandlerUtils.GetWriteFlags(context.WriteOptions));
}
catch (Exception e)
{
- Logger.Error(e, "Exception occured in handler.");
+ if (!(e is RpcException))
+ {
+ Logger.Warning(e, "Exception occured in handler.");
+ }
status = HandlerUtils.StatusFromException(e);
}
try
{
- await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+ await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, responseTuple).ConfigureAwait(false);
}
- catch (OperationCanceledException)
+ catch (Exception)
{
- // Call has been already cancelled.
+ asyncCall.Cancel();
+ throw;
}
await finishedTask.ConfigureAwait(false);
}
@@ -255,16 +258,20 @@ namespace Grpc.Core.Internal
}
catch (Exception e)
{
- Logger.Error(e, "Exception occured in handler.");
+ if (!(e is RpcException))
+ {
+ Logger.Warning(e, "Exception occured in handler.");
+ }
status = HandlerUtils.StatusFromException(e);
}
try
{
- await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+ await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, null).ConfigureAwait(false);
}
- catch (OperationCanceledException)
+ catch (Exception)
{
- // Call has been already cancelled.
+ asyncCall.Cancel();
+ throw;
}
await finishedTask.ConfigureAwait(false);
}
@@ -282,9 +289,7 @@ namespace Grpc.Core.Internal
asyncCall.Initialize(newRpc.Call);
var finishedTask = asyncCall.ServerSideCallAsync();
- var responseStream = new ServerResponseStream<byte[], byte[]>(asyncCall);
-
- await responseStream.WriteStatusAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty).ConfigureAwait(false);
+ await asyncCall.SendStatusFromServerAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty, null).ConfigureAwait(false);
await finishedTask.ConfigureAwait(false);
}
}
@@ -300,10 +305,14 @@ namespace Grpc.Core.Internal
return rpcException.Status;
}
- // TODO(jtattermusch): what is the right status code here?
return new Status(StatusCode.Unknown, "Exception was thrown by handler.");
}
+ public static WriteFlags GetWriteFlags(WriteOptions writeOptions)
+ {
+ return writeOptions != null ? writeOptions.Flags : default(WriteFlags);
+ }
+
public static ServerCallContext NewContext<TRequest, TResponse>(ServerRpcNew newRpc, string peer, ServerResponseStream<TRequest, TResponse> serverResponseStream, CancellationToken cancellationToken)
where TRequest : class
where TResponse : class
diff --git a/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs b/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs
index e7be82c318..d76030d1ad 100644
--- a/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs
@@ -68,9 +68,7 @@ namespace Grpc.Core.Internal
{
throw new InvalidOperationException("Cancellation of individual reads is not supported.");
}
- var taskSource = new AsyncCompletionTaskSource<TRequest>();
- call.StartReadMessage(taskSource.CompletionDelegate);
- var result = await taskSource.Task.ConfigureAwait(false);
+ var result = await call.ReadMessageAsync().ConfigureAwait(false);
this.current = result;
return result != null;
}
diff --git a/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs b/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs
index 03e39efc02..ecfee0bfdd 100644
--- a/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs
@@ -57,13 +57,6 @@ namespace Grpc.Core.Internal
return taskSource.Task;
}
- public Task WriteStatusAsync(Status status, Metadata trailers)
- {
- var taskSource = new AsyncCompletionTaskSource<object>();
- call.StartSendStatusFromServer(status, trailers, taskSource.CompletionDelegate);
- return taskSource.Task;
- }
-
public Task WriteResponseHeadersAsync(Metadata responseHeaders)
{
var taskSource = new AsyncCompletionTaskSource<object>();
diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs
index 5b61b7f060..d538a4671f 100644
--- a/src/csharp/Grpc.Core/Server.cs
+++ b/src/csharp/Grpc.Core/Server.cs
@@ -48,6 +48,7 @@ namespace Grpc.Core
/// </summary>
public class Server
{
+ const int InitialAllowRpcTokenCount = 10;
static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<Server>();
readonly AtomicCounter activeCallCounter = new AtomicCounter();
@@ -65,7 +66,7 @@ namespace Grpc.Core
readonly TaskCompletionSource<object> shutdownTcs = new TaskCompletionSource<object>();
bool startRequested;
- bool shutdownRequested;
+ volatile bool shutdownRequested;
/// <summary>
/// Create a new server.
@@ -129,7 +130,13 @@ namespace Grpc.Core
startRequested = true;
handle.Start();
- AllowOneRpc();
+
+ // Starting with more than one AllowOneRpc tokens can significantly increase
+ // unary RPC throughput.
+ for (int i = 0; i < InitialAllowRpcTokenCount; i++)
+ {
+ AllowOneRpc();
+ }
}
}
@@ -239,12 +246,9 @@ namespace Grpc.Core
/// </summary>
private void AllowOneRpc()
{
- lock (myLock)
+ if (!shutdownRequested)
{
- if (!shutdownRequested)
- {
- handle.RequestCall(HandleNewServerRpc, environment);
- }
+ handle.RequestCall(HandleNewServerRpc, environment);
}
}
@@ -283,6 +287,8 @@ namespace Grpc.Core
/// </summary>
private void HandleNewServerRpc(bool success, BatchContextSafeHandle ctx)
{
+ Task.Run(() => AllowOneRpc());
+
if (success)
{
ServerRpcNew newRpc = ctx.GetServerRpcNew(this);
@@ -290,11 +296,9 @@ namespace Grpc.Core
// after server shutdown, the callback returns with null call
if (!newRpc.Call.IsInvalid)
{
- Task.Run(async () => await HandleCallAsync(newRpc)).ConfigureAwait(false);
+ HandleCallAsync(newRpc); // we don't need to await.
}
}
-
- AllowOneRpc();
}
/// <summary>
diff --git a/src/csharp/Grpc.Core/Version.cs b/src/csharp/Grpc.Core/Version.cs
index 8a26bd8362..f5c44fd098 100644
--- a/src/csharp/Grpc.Core/Version.cs
+++ b/src/csharp/Grpc.Core/Version.cs
@@ -33,5 +33,6 @@
using System.Reflection;
-// The current version of gRPC C#.
[assembly: AssemblyVersion(Grpc.Core.VersionInfo.CurrentAssemblyVersion)]
+[assembly: AssemblyFileVersion(Grpc.Core.VersionInfo.CurrentAssemblyFileVersion)]
+[assembly: AssemblyInformationalVersion(Grpc.Core.VersionInfo.CurrentVersion)]
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index 9014a13f40..e1609341d9 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -35,17 +35,24 @@ namespace Grpc.Core
{
/// <summary>
/// Provides info about current version of gRPC.
+ /// See https://codingforsmarties.wordpress.com/2016/01/21/how-to-version-assemblies-destined-for-nuget/
+ /// for rationale about assembly versioning.
/// </summary>
public static class VersionInfo
{
/// <summary>
- /// Current version of gRPC C# assemblies
+ /// Current <c>AssemblyVersion</c> attribute of gRPC C# assemblies
/// </summary>
- public const string CurrentAssemblyVersion = "0.14.0.0";
+ public const string CurrentAssemblyVersion = "1.0.0.0";
+
+ /// <summary>
+ /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
+ /// </summary>
+ public const string CurrentAssemblyFileVersion = "0.15.0.0";
/// <summary>
/// Current version of gRPC C#
/// </summary>
- public const string CurrentVersion = "0.14.0-dev";
+ public const string CurrentVersion = "0.15.0-dev";
}
}
diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index f3bb0d1cdc..d700a18778 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -1,5 +1,35 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: math.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
#region Designer generated code
using System;
@@ -45,65 +75,151 @@ namespace Math {
__Marshaller_Num,
__Marshaller_Num);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Math.MathReflection.Descriptor.Services[0]; }
}
- // client interface
+ /// <summary>Client for Math</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IMathClient
{
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
global::Math.DivReply Div(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
global::Math.DivReply Div(global::Math.DivArgs request, CallOptions options);
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, CallOptions options);
+ /// <summary>
+ /// DivMany accepts an arbitrary number of division args from the client stream
+ /// and sends back the results in the reply stream. The stream continues until
+ /// the client closes its end; the server does the same after sending all the
+ /// replies. The stream ends immediately if either end aborts.
+ /// </summary>
AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// DivMany accepts an arbitrary number of division args from the client stream
+ /// and sends back the results in the reply stream. The stream continues until
+ /// the client closes its end; the server does the same after sending all the
+ /// replies. The stream ends immediately if either end aborts.
+ /// </summary>
AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(CallOptions options);
+ /// <summary>
+ /// Fib generates numbers in the Fibonacci sequence. If args.limit > 0, Fib
+ /// generates up to limit numbers; otherwise it continues until the call is
+ /// canceled. Unlike Fib above, Fib has no final FibReply.
+ /// </summary>
AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Fib generates numbers in the Fibonacci sequence. If args.limit > 0, Fib
+ /// generates up to limit numbers; otherwise it continues until the call is
+ /// canceled. Unlike Fib above, Fib has no final FibReply.
+ /// </summary>
AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, CallOptions options);
+ /// <summary>
+ /// Sum sums a stream of numbers, returning the final result once the stream
+ /// is closed.
+ /// </summary>
AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Sum sums a stream of numbers, returning the final result once the stream
+ /// is closed.
+ /// </summary>
AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of Math</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IMath
{
- Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context);
- Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context);
- Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context);
- Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context);
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context);
+ /// <summary>
+ /// DivMany accepts an arbitrary number of division args from the client stream
+ /// and sends back the results in the reply stream. The stream continues until
+ /// the client closes its end; the server does the same after sending all the
+ /// replies. The stream ends immediately if either end aborts.
+ /// </summary>
+ global::System.Threading.Tasks.Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context);
+ /// <summary>
+ /// Fib generates numbers in the Fibonacci sequence. If args.limit > 0, Fib
+ /// generates up to limit numbers; otherwise it continues until the call is
+ /// canceled. Unlike Fib above, Fib has no final FibReply.
+ /// </summary>
+ global::System.Threading.Tasks.Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context);
+ /// <summary>
+ /// Sum sums a stream of numbers, returning the final result once the stream
+ /// is closed.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of Math</summary>
public abstract class MathBase
{
- public virtual Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context)
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context)
+ /// <summary>
+ /// DivMany accepts an arbitrary number of division args from the client stream
+ /// and sends back the results in the reply stream. The stream continues until
+ /// the client closes its end; the server does the same after sending all the
+ /// replies. The stream ends immediately if either end aborts.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context)
+ /// <summary>
+ /// Fib generates numbers in the Fibonacci sequence. If args.limit > 0, Fib
+ /// generates up to limit numbers; otherwise it continues until the call is
+ /// canceled. Unlike Fib above, Fib has no final FibReply.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context)
+ /// <summary>
+ /// Sum sums a stream of numbers, returning the final result once the stream
+ /// is closed.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for Math</summary>
+ #pragma warning disable 0618
public class MathClient : ClientBase<MathClient>, IMathClient
+ #pragma warning restore 0618
{
public MathClient(Channel channel) : base(channel)
{
@@ -120,42 +236,88 @@ namespace Math {
{
}
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
public virtual global::Math.DivReply Div(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return Div(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
public virtual global::Math.DivReply Div(global::Math.DivArgs request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_Div, null, options, request);
}
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
public virtual AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return DivAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Div divides args.dividend by args.divisor and returns the quotient and
+ /// remainder.
+ /// </summary>
public virtual AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_Div, null, options, request);
}
+ /// <summary>
+ /// DivMany accepts an arbitrary number of division args from the client stream
+ /// and sends back the results in the reply stream. The stream continues until
+ /// the client closes its end; the server does the same after sending all the
+ /// replies. The stream ends immediately if either end aborts.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return DivMany(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// DivMany accepts an arbitrary number of division args from the client stream
+ /// and sends back the results in the reply stream. The stream continues until
+ /// the client closes its end; the server does the same after sending all the
+ /// replies. The stream ends immediately if either end aborts.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_DivMany, null, options);
}
+ /// <summary>
+ /// Fib generates numbers in the Fibonacci sequence. If args.limit > 0, Fib
+ /// generates up to limit numbers; otherwise it continues until the call is
+ /// canceled. Unlike Fib above, Fib has no final FibReply.
+ /// </summary>
public virtual AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return Fib(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Fib generates numbers in the Fibonacci sequence. If args.limit > 0, Fib
+ /// generates up to limit numbers; otherwise it continues until the call is
+ /// canceled. Unlike Fib above, Fib has no final FibReply.
+ /// </summary>
public virtual AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, CallOptions options)
{
return CallInvoker.AsyncServerStreamingCall(__Method_Fib, null, options, request);
}
+ /// <summary>
+ /// Sum sums a stream of numbers, returning the final result once the stream
+ /// is closed.
+ /// </summary>
public virtual AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return Sum(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Sum sums a stream of numbers, returning the final result once the stream
+ /// is closed.
+ /// </summary>
public virtual AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(CallOptions options)
{
return CallInvoker.AsyncClientStreamingCall(__Method_Sum, null, options);
@@ -166,8 +328,16 @@ namespace Math {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for Math</summary>
+ public static MathClient NewClient(Channel channel)
+ {
+ return new MathClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IMath serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_Div, serviceImpl.Div)
@@ -176,8 +346,10 @@ namespace Math {
.AddMethod(__Method_Sum, serviceImpl.Sum).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(MathBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_Div, serviceImpl.Div)
@@ -186,12 +358,6 @@ namespace Math {
.AddMethod(__Method_Sum, serviceImpl.Sum).Build();
}
- // creates a new client
- public static MathClient NewClient(Channel channel)
- {
- return new MathClient(channel);
- }
-
}
}
#endregion
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index 72e11cca3a..51c6a39b1d 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -1,5 +1,35 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: health.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
#region Designer generated code
using System;
@@ -22,13 +52,13 @@ namespace Grpc.Health.V1 {
__Marshaller_HealthCheckRequest,
__Marshaller_HealthCheckResponse);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Health.V1.HealthReflection.Descriptor.Services[0]; }
}
- // client interface
+ /// <summary>Client for Health</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IHealthClient
{
@@ -38,25 +68,27 @@ namespace Grpc.Health.V1 {
AsyncUnaryCall<global::Grpc.Health.V1.HealthCheckResponse> CheckAsync(global::Grpc.Health.V1.HealthCheckRequest request, CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of Health</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IHealth
{
- Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context);
+ global::System.Threading.Tasks.Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of Health</summary>
public abstract class HealthBase
{
- public virtual Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for Health</summary>
+ #pragma warning disable 0618
public class HealthClient : ClientBase<HealthClient>, IHealthClient
+ #pragma warning restore 0618
{
public HealthClient(Channel channel) : base(channel)
{
@@ -95,26 +127,30 @@ namespace Grpc.Health.V1 {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for Health</summary>
+ public static HealthClient NewClient(Channel channel)
+ {
+ return new HealthClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IHealth serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_Check, serviceImpl.Check).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(HealthBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_Check, serviceImpl.Check).Build();
}
- // creates a new client
- public static HealthClient NewClient(Channel channel)
- {
- return new HealthClient(channel);
- }
-
}
}
#endregion
diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs
index b4572756f2..9eaf6bf7ce 100644
--- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs
@@ -142,8 +142,7 @@ namespace Grpc.IntegrationTesting
for (int i = 0; i < outstandingRpcsPerChannel; i++)
{
var timer = CreateTimer(loadParams, 1.0 / this.channels.Count / outstandingRpcsPerChannel);
- var threadBody = GetThreadBody(channel, timer);
- this.runnerTasks.Add(Task.Factory.StartNew(threadBody, TaskCreationOptions.LongRunning));
+ this.runnerTasks.Add(RunClientAsync(channel, timer));
}
}
}
@@ -269,38 +268,30 @@ namespace Grpc.IntegrationTesting
}
}
- private Action GetThreadBody(Channel channel, IInterarrivalTimer timer)
+ private Task RunClientAsync(Channel channel, IInterarrivalTimer timer)
{
if (payloadConfig.PayloadCase == PayloadConfig.PayloadOneofCase.BytebufParams)
{
GrpcPreconditions.CheckArgument(clientType == ClientType.ASYNC_CLIENT, "Generic client only supports async API");
GrpcPreconditions.CheckArgument(rpcType == RpcType.STREAMING, "Generic client only supports streaming calls");
- return () =>
- {
- RunGenericStreamingAsync(channel, timer).Wait();
- };
+ return RunGenericStreamingAsync(channel, timer);
}
GrpcPreconditions.CheckNotNull(payloadConfig.SimpleParams);
if (clientType == ClientType.SYNC_CLIENT)
{
GrpcPreconditions.CheckArgument(rpcType == RpcType.UNARY, "Sync client can only be used for Unary calls in C#");
- return () => RunUnary(channel, timer);
+ // create a dedicated thread for the synchronous client
+ return Task.Factory.StartNew(() => RunUnary(channel, timer), TaskCreationOptions.LongRunning);
}
else if (clientType == ClientType.ASYNC_CLIENT)
{
switch (rpcType)
{
case RpcType.UNARY:
- return () =>
- {
- RunUnaryAsync(channel, timer).Wait();
- };
+ return RunUnaryAsync(channel, timer);
case RpcType.STREAMING:
- return () =>
- {
- RunStreamingPingPongAsync(channel, timer).Wait();
- };
+ return RunStreamingPingPongAsync(channel, timer);
}
}
throw new ArgumentException("Unsupported configuration.");
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index 5436517960..b3b1abf1bc 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -494,7 +494,8 @@ namespace Grpc.IntegrationTesting
}
var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
- Assert.AreEqual(StatusCode.DeadlineExceeded, ex.Status.StatusCode);
+ // We can't guarantee the status code always DeadlineExceeded. See issue #2685.
+ Assert.Contains(ex.Status.StatusCode, new[] { StatusCode.DeadlineExceeded, StatusCode.Internal });
}
Console.WriteLine("Passed!");
}
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index cc01ae91a1..9d31d1c514 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -1,5 +1,41 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: src/proto/grpc/testing/metrics.proto
+// Original file comments:
+// Copyright 2015-2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Contains the definitions for a metrics service and the type of metrics
+// exposed by the service.
+//
+// Currently, 'Gauge' (i.e a metric that represents the measured value of
+// something at an instant of time) is the only metric type supported by the
+// service.
#region Designer generated code
using System;
@@ -30,49 +66,85 @@ namespace Grpc.Testing {
__Marshaller_GaugeRequest,
__Marshaller_GaugeResponse);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Testing.MetricsReflection.Descriptor.Services[0]; }
}
- // client interface
+ /// <summary>Client for MetricsService</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IMetricsServiceClient
{
+ /// <summary>
+ /// Returns the values of all the gauges that are currently being maintained by
+ /// the service
+ /// </summary>
AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Returns the values of all the gauges that are currently being maintained by
+ /// the service
+ /// </summary>
AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options);
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options);
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of MetricsService</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IMetricsService
{
- Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context);
- Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context);
+ /// <summary>
+ /// Returns the values of all the gauges that are currently being maintained by
+ /// the service
+ /// </summary>
+ global::System.Threading.Tasks.Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context);
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of MetricsService</summary>
public abstract class MetricsServiceBase
{
- public virtual Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
+ /// <summary>
+ /// Returns the values of all the gauges that are currently being maintained by
+ /// the service
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for MetricsService</summary>
+ #pragma warning disable 0618
public class MetricsServiceClient : ClientBase<MetricsServiceClient>, IMetricsServiceClient
+ #pragma warning restore 0618
{
public MetricsServiceClient(Channel channel) : base(channel)
{
@@ -89,26 +161,46 @@ namespace Grpc.Testing {
{
}
+ /// <summary>
+ /// Returns the values of all the gauges that are currently being maintained by
+ /// the service
+ /// </summary>
public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetAllGauges(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Returns the values of all the gauges that are currently being maintained by
+ /// the service
+ /// </summary>
public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options)
{
return CallInvoker.AsyncServerStreamingCall(__Method_GetAllGauges, null, options, request);
}
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetGauge(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_GetGauge, null, options, request);
}
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetGaugeAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Returns the value of one gauge
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_GetGauge, null, options, request);
@@ -119,28 +211,32 @@ namespace Grpc.Testing {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for MetricsService</summary>
+ public static MetricsServiceClient NewClient(Channel channel)
+ {
+ return new MetricsServiceClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IMetricsService serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
.AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
.AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
}
- // creates a new client
- public static MetricsServiceClient NewClient(Channel channel)
- {
- return new MetricsServiceClient(channel);
- }
-
}
}
#endregion
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 46b16cf202..f7071ebf6b 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -1,5 +1,37 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: src/proto/grpc/testing/services.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
#region Designer generated code
using System;
@@ -29,49 +61,91 @@ namespace Grpc.Testing {
__Marshaller_SimpleRequest,
__Marshaller_SimpleResponse);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Testing.ServicesReflection.Descriptor.Services[0]; }
}
- // client interface
+ /// <summary>Client for BenchmarkService</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IBenchmarkServiceClient
{
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of BenchmarkService</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IBenchmarkService
{
- Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
- Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context);
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
+ global::System.Threading.Tasks.Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of BenchmarkService</summary>
public abstract class BenchmarkServiceBase
{
- public virtual Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context)
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for BenchmarkService</summary>
+ #pragma warning disable 0618
public class BenchmarkServiceClient : ClientBase<BenchmarkServiceClient>, IBenchmarkServiceClient
+ #pragma warning restore 0618
{
public BenchmarkServiceClient(Channel channel) : base(channel)
{
@@ -88,26 +162,50 @@ namespace Grpc.Testing {
{
}
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return UnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnaryCall, null, options, request);
}
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return UnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnaryCall, null, options, request);
}
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return StreamingCall(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One request followed by one response.
+ /// The server returns the client payload as-is.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_StreamingCall, null, options);
@@ -118,28 +216,32 @@ namespace Grpc.Testing {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for BenchmarkService</summary>
+ public static BenchmarkServiceClient NewClient(Channel channel)
+ {
+ return new BenchmarkServiceClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IBenchmarkService serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
.AddMethod(__Method_StreamingCall, serviceImpl.StreamingCall).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(BenchmarkServiceBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
.AddMethod(__Method_StreamingCall, serviceImpl.StreamingCall).Build();
}
- // creates a new client
- public static BenchmarkServiceClient NewClient(Channel channel)
- {
- return new BenchmarkServiceClient(channel);
- }
-
}
public static class WorkerService
{
@@ -181,67 +283,169 @@ namespace Grpc.Testing {
__Marshaller_Void,
__Marshaller_Void);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Testing.ServicesReflection.Descriptor.Services[1]; }
}
- // client interface
+ /// <summary>Client for WorkerService</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IWorkerServiceClient
{
+ /// <summary>
+ /// Start server with specified workload.
+ /// First request sent specifies the ServerConfig followed by ServerStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test server
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Start server with specified workload.
+ /// First request sent specifies the ServerConfig followed by ServerStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test server
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(CallOptions options);
+ /// <summary>
+ /// Start client with specified workload.
+ /// First request sent specifies the ClientConfig followed by ClientStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test client
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Start client with specified workload.
+ /// First request sent specifies the ClientConfig followed by ClientStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test client
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(CallOptions options);
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, CallOptions options);
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, CallOptions options);
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, CallOptions options);
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of WorkerService</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IWorkerService
{
- Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context);
- Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context);
- Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context);
- Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context);
+ /// <summary>
+ /// Start server with specified workload.
+ /// First request sent specifies the ServerConfig followed by ServerStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test server
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
+ global::System.Threading.Tasks.Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context);
+ /// <summary>
+ /// Start client with specified workload.
+ /// First request sent specifies the ClientConfig followed by ClientStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test client
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
+ global::System.Threading.Tasks.Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context);
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context);
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of WorkerService</summary>
public abstract class WorkerServiceBase
{
- public virtual Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context)
+ /// <summary>
+ /// Start server with specified workload.
+ /// First request sent specifies the ServerConfig followed by ServerStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test server
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context)
+ /// <summary>
+ /// Start client with specified workload.
+ /// First request sent specifies the ClientConfig followed by ClientStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test client
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context)
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context)
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for WorkerService</summary>
+ #pragma warning disable 0618
public class WorkerServiceClient : ClientBase<WorkerServiceClient>, IWorkerServiceClient
+ #pragma warning restore 0618
{
public WorkerServiceClient(Channel channel) : base(channel)
{
@@ -258,50 +462,106 @@ namespace Grpc.Testing {
{
}
+ /// <summary>
+ /// Start server with specified workload.
+ /// First request sent specifies the ServerConfig followed by ServerStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test server
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return RunServer(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Start server with specified workload.
+ /// First request sent specifies the ServerConfig followed by ServerStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test server
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_RunServer, null, options);
}
+ /// <summary>
+ /// Start client with specified workload.
+ /// First request sent specifies the ClientConfig followed by ClientStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test client
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return RunClient(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Start client with specified workload.
+ /// First request sent specifies the ClientConfig followed by ClientStatus
+ /// response. After that, a "Mark" can be sent anytime to request the latest
+ /// stats. Closing the stream will initiate shutdown of the test client
+ /// and once the shutdown has finished, the OK status is sent to terminate
+ /// this RPC.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_RunClient, null, options);
}
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return CoreCount(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_CoreCount, null, options, request);
}
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return CoreCountAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Just return the core count - unary call
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_CoreCount, null, options, request);
}
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return QuitWorker(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_QuitWorker, null, options, request);
}
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return QuitWorkerAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// Quit this worker
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_QuitWorker, null, options, request);
@@ -312,8 +572,16 @@ namespace Grpc.Testing {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for WorkerService</summary>
+ public static WorkerServiceClient NewClient(Channel channel)
+ {
+ return new WorkerServiceClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IWorkerService serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_RunServer, serviceImpl.RunServer)
@@ -322,8 +590,10 @@ namespace Grpc.Testing {
.AddMethod(__Method_QuitWorker, serviceImpl.QuitWorker).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(WorkerServiceBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_RunServer, serviceImpl.RunServer)
@@ -332,12 +602,6 @@ namespace Grpc.Testing {
.AddMethod(__Method_QuitWorker, serviceImpl.QuitWorker).Build();
}
- // creates a new client
- public static WorkerServiceClient NewClient(Channel channel)
- {
- return new WorkerServiceClient(channel);
- }
-
}
}
#endregion
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index 31746cbe71..cf43a77118 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -1,5 +1,38 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: src/proto/grpc/testing/test.proto
+// Original file comments:
+// Copyright 2015-2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+//
#region Designer generated code
using System;
@@ -8,6 +41,10 @@ using System.Threading.Tasks;
using Grpc.Core;
namespace Grpc.Testing {
+ /// <summary>
+ /// A simple service to test the various types of RPCs and experiment with
+ /// performance with various types of payload.
+ /// </summary>
public static class TestService
{
static readonly string __ServiceName = "grpc.testing.TestService";
@@ -62,83 +99,197 @@ namespace Grpc.Testing {
__Marshaller_StreamingOutputCallRequest,
__Marshaller_StreamingOutputCallResponse);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Testing.TestReflection.Descriptor.Services[0]; }
}
- // client interface
+ /// <summary>Client for TestService</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface ITestServiceClient
{
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, CallOptions options);
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, CallOptions options);
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+ /// <summary>
+ /// One request followed by a sequence of responses (streamed download).
+ /// The server returns the payload with client desired type and sizes.
+ /// </summary>
AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// One request followed by a sequence of responses (streamed download).
+ /// The server returns the payload with client desired type and sizes.
+ /// </summary>
AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, CallOptions options);
+ /// <summary>
+ /// A sequence of requests followed by one response (streamed upload).
+ /// The server returns the aggregated size of client payload as the result.
+ /// </summary>
AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A sequence of requests followed by one response (streamed upload).
+ /// The server returns the aggregated size of client payload as the result.
+ /// </summary>
AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(CallOptions options);
+ /// <summary>
+ /// A sequence of requests with each request served by the server immediately.
+ /// As one request could lead to multiple responses, this interface
+ /// demonstrates the idea of full duplexing.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A sequence of requests with each request served by the server immediately.
+ /// As one request could lead to multiple responses, this interface
+ /// demonstrates the idea of full duplexing.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(CallOptions options);
+ /// <summary>
+ /// A sequence of requests followed by a sequence of responses.
+ /// The server buffers all the client requests and then serves them in order. A
+ /// stream of responses are returned to the client when the server starts with
+ /// first request.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A sequence of requests followed by a sequence of responses.
+ /// The server buffers all the client requests and then serves them in order. A
+ /// stream of responses are returned to the client when the server starts with
+ /// first request.
+ /// </summary>
AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of TestService</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface ITestService
{
- Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context);
- Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
- Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
- Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context);
- Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
- Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context);
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
+ /// <summary>
+ /// One request followed by a sequence of responses (streamed download).
+ /// The server returns the payload with client desired type and sizes.
+ /// </summary>
+ global::System.Threading.Tasks.Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+ /// <summary>
+ /// A sequence of requests followed by one response (streamed upload).
+ /// The server returns the aggregated size of client payload as the result.
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context);
+ /// <summary>
+ /// A sequence of requests with each request served by the server immediately.
+ /// As one request could lead to multiple responses, this interface
+ /// demonstrates the idea of full duplexing.
+ /// </summary>
+ global::System.Threading.Tasks.Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+ /// <summary>
+ /// A sequence of requests followed by a sequence of responses.
+ /// The server buffers all the client requests and then serves them in order. A
+ /// stream of responses are returned to the client when the server starts with
+ /// first request.
+ /// </summary>
+ global::System.Threading.Tasks.Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of TestService</summary>
public abstract class TestServiceBase
{
- public virtual Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ /// <summary>
+ /// One request followed by a sequence of responses (streamed download).
+ /// The server returns the payload with client desired type and sizes.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context)
+ /// <summary>
+ /// A sequence of requests followed by one response (streamed upload).
+ /// The server returns the aggregated size of client payload as the result.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ /// <summary>
+ /// A sequence of requests with each request served by the server immediately.
+ /// As one request could lead to multiple responses, this interface
+ /// demonstrates the idea of full duplexing.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ /// <summary>
+ /// A sequence of requests followed by a sequence of responses.
+ /// The server buffers all the client requests and then serves them in order. A
+ /// stream of responses are returned to the client when the server starts with
+ /// first request.
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for TestService</summary>
+ #pragma warning disable 0618
public class TestServiceClient : ClientBase<TestServiceClient>, ITestServiceClient
+ #pragma warning restore 0618
{
public TestServiceClient(Channel channel) : base(channel)
{
@@ -155,66 +306,128 @@ namespace Grpc.Testing {
{
}
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return EmptyCall(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_EmptyCall, null, options, request);
}
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return EmptyCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One empty request followed by one empty response.
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_EmptyCall, null, options, request);
}
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return UnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnaryCall, null, options, request);
}
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return UnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One request followed by one response.
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnaryCall, null, options, request);
}
+ /// <summary>
+ /// One request followed by a sequence of responses (streamed download).
+ /// The server returns the payload with client desired type and sizes.
+ /// </summary>
public virtual AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return StreamingOutputCall(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// One request followed by a sequence of responses (streamed download).
+ /// The server returns the payload with client desired type and sizes.
+ /// </summary>
public virtual AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, CallOptions options)
{
return CallInvoker.AsyncServerStreamingCall(__Method_StreamingOutputCall, null, options, request);
}
+ /// <summary>
+ /// A sequence of requests followed by one response (streamed upload).
+ /// The server returns the aggregated size of client payload as the result.
+ /// </summary>
public virtual AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return StreamingInputCall(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// A sequence of requests followed by one response (streamed upload).
+ /// The server returns the aggregated size of client payload as the result.
+ /// </summary>
public virtual AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(CallOptions options)
{
return CallInvoker.AsyncClientStreamingCall(__Method_StreamingInputCall, null, options);
}
+ /// <summary>
+ /// A sequence of requests with each request served by the server immediately.
+ /// As one request could lead to multiple responses, this interface
+ /// demonstrates the idea of full duplexing.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return FullDuplexCall(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// A sequence of requests with each request served by the server immediately.
+ /// As one request could lead to multiple responses, this interface
+ /// demonstrates the idea of full duplexing.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_FullDuplexCall, null, options);
}
+ /// <summary>
+ /// A sequence of requests followed by a sequence of responses.
+ /// The server buffers all the client requests and then serves them in order. A
+ /// stream of responses are returned to the client when the server starts with
+ /// first request.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return HalfDuplexCall(new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// A sequence of requests followed by a sequence of responses.
+ /// The server buffers all the client requests and then serves them in order. A
+ /// stream of responses are returned to the client when the server starts with
+ /// first request.
+ /// </summary>
public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(CallOptions options)
{
return CallInvoker.AsyncDuplexStreamingCall(__Method_HalfDuplexCall, null, options);
@@ -225,8 +438,16 @@ namespace Grpc.Testing {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for TestService</summary>
+ public static TestServiceClient NewClient(Channel channel)
+ {
+ return new TestServiceClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(ITestService serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
@@ -237,8 +458,10 @@ namespace Grpc.Testing {
.AddMethod(__Method_HalfDuplexCall, serviceImpl.HalfDuplexCall).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(TestServiceBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
@@ -249,13 +472,11 @@ namespace Grpc.Testing {
.AddMethod(__Method_HalfDuplexCall, serviceImpl.HalfDuplexCall).Build();
}
- // creates a new client
- public static TestServiceClient NewClient(Channel channel)
- {
- return new TestServiceClient(channel);
- }
-
}
+ /// <summary>
+ /// A simple service NOT implemented at servers so clients can test for
+ /// that case.
+ /// </summary>
public static class UnimplementedService
{
static readonly string __ServiceName = "grpc.testing.UnimplementedService";
@@ -269,41 +490,61 @@ namespace Grpc.Testing {
__Marshaller_Empty,
__Marshaller_Empty);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Testing.TestReflection.Descriptor.Services[1]; }
}
- // client interface
+ /// <summary>Client for UnimplementedService</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IUnimplementedServiceClient
{
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, CallOptions options);
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of UnimplementedService</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IUnimplementedService
{
- Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context);
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of UnimplementedService</summary>
public abstract class UnimplementedServiceBase
{
- public virtual Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for UnimplementedService</summary>
+ #pragma warning disable 0618
public class UnimplementedServiceClient : ClientBase<UnimplementedServiceClient>, IUnimplementedServiceClient
+ #pragma warning restore 0618
{
public UnimplementedServiceClient(Channel channel) : base(channel)
{
@@ -320,18 +561,30 @@ namespace Grpc.Testing {
{
}
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return UnimplementedCall(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, CallOptions options)
{
return CallInvoker.BlockingUnaryCall(__Method_UnimplementedCall, null, options, request);
}
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
{
return UnimplementedCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
}
+ /// <summary>
+ /// A call that no server should implement
+ /// </summary>
public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
{
return CallInvoker.AsyncUnaryCall(__Method_UnimplementedCall, null, options, request);
@@ -342,27 +595,34 @@ namespace Grpc.Testing {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for UnimplementedService</summary>
+ public static UnimplementedServiceClient NewClient(Channel channel)
+ {
+ return new UnimplementedServiceClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IUnimplementedService serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(UnimplementedServiceBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
}
- // creates a new client
- public static UnimplementedServiceClient NewClient(Channel channel)
- {
- return new UnimplementedServiceClient(channel);
- }
-
}
+ /// <summary>
+ /// A service used to control reconnect server.
+ /// </summary>
public static class ReconnectService
{
static readonly string __ServiceName = "grpc.testing.ReconnectService";
@@ -385,13 +645,13 @@ namespace Grpc.Testing {
__Marshaller_Empty,
__Marshaller_ReconnectInfo);
- // service descriptor
+ /// <summary>Service descriptor</summary>
public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
{
get { return global::Grpc.Testing.TestReflection.Descriptor.Services[2]; }
}
- // client interface
+ /// <summary>Client for ReconnectService</summary>
[System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
public interface IReconnectServiceClient
{
@@ -405,31 +665,33 @@ namespace Grpc.Testing {
AsyncUnaryCall<global::Grpc.Testing.ReconnectInfo> StopAsync(global::Grpc.Testing.Empty request, CallOptions options);
}
- // server-side interface
+ /// <summary>Interface of server-side implementations of ReconnectService</summary>
[System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
public interface IReconnectService
{
- Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context);
- Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context);
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context);
+ global::System.Threading.Tasks.Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context);
}
- // server-side abstract class
+ /// <summary>Base class for server-side implementations of ReconnectService</summary>
public abstract class ReconnectServiceBase
{
- public virtual Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
- public virtual Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context)
+ public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context)
{
throw new RpcException(new Status(StatusCode.Unimplemented, ""));
}
}
- // client stub
+ /// <summary>Client for ReconnectService</summary>
+ #pragma warning disable 0618
public class ReconnectServiceClient : ClientBase<ReconnectServiceClient>, IReconnectServiceClient
+ #pragma warning restore 0618
{
public ReconnectServiceClient(Channel channel) : base(channel)
{
@@ -484,28 +746,32 @@ namespace Grpc.Testing {
}
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates a new client for ReconnectService</summary>
+ public static ReconnectServiceClient NewClient(Channel channel)
+ {
+ return new ReconnectServiceClient(channel);
+ }
+
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(IReconnectService serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_Start, serviceImpl.Start)
.AddMethod(__Method_Stop, serviceImpl.Stop).Build();
}
- // creates service definition that can be registered with a server
+ /// <summary>Creates service definition that can be registered with a server</summary>
+ #pragma warning disable 0618
public static ServerServiceDefinition BindService(ReconnectServiceBase serviceImpl)
+ #pragma warning restore 0618
{
return ServerServiceDefinition.CreateBuilder(__ServiceName)
.AddMethod(__Method_Start, serviceImpl.Start)
.AddMethod(__Method_Stop, serviceImpl.Stop).Build();
}
- // creates a new client
- public static ReconnectServiceClient NewClient(Channel channel)
- {
- return new ReconnectServiceClient(channel);
- }
-
}
}
#endregion
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 9a60be26b6..7520b0f81a 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
@rem Builds gRPC NuGet packages
@rem Current package versions
-set VERSION=0.14.0-dev
+set VERSION=0.15.0-dev
set PROTOBUF_VERSION=3.0.0-beta2
@rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/csharp/buildall.bat b/src/csharp/buildall.bat
index fcc8442656..f800756dfe 100644
--- a/src/csharp/buildall.bat
+++ b/src/csharp/buildall.bat
@@ -8,6 +8,12 @@ cd /d %~dp0
@rem Set VS variables (uses Visual Studio 2013)
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
+@rem Fetch all dependencies
+nuget restore ..\..\vsprojects\grpc.sln || goto :error
+nuget restore ..\..\vsprojects\grpc_csharp_ext.sln || goto :error
+nuget restore ..\..\vsprojects\grpc_protoc_plugins.sln || goto :error
+nuget restore Grpc.sln || goto :error
+
@rem Build the C# native extension
msbuild ..\..\vsprojects\grpc_csharp_ext.sln /p:Configuration=Debug /p:PlatformToolset=v120 || goto :error
msbuild ..\..\vsprojects\grpc_csharp_ext.sln /p:Configuration=Release /p:PlatformToolset=v120 || goto :error
diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c
index aeef8a79e9..5b8ff9b819 100644
--- a/src/csharp/ext/grpc_csharp_ext.c
+++ b/src/csharp/ext/grpc_csharp_ext.c
@@ -715,10 +715,11 @@ grpcsharp_call_send_close_from_client(grpc_call *call,
GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_send_status_from_server(
grpc_call *call, grpcsharp_batch_context *ctx, grpc_status_code status_code,
const char *status_details, grpc_metadata_array *trailing_metadata,
- int32_t send_empty_initial_metadata) {
+ int32_t send_empty_initial_metadata, const char* optional_send_buffer,
+ size_t optional_send_buffer_len, uint32_t write_flags) {
/* TODO: don't use magic number */
- grpc_op ops[2];
- size_t nops = send_empty_initial_metadata ? 2 : 1;
+ grpc_op ops[3];
+ size_t nops = 1;
ops[0].op = GRPC_OP_SEND_STATUS_FROM_SERVER;
ops[0].data.send_status_from_server.status = status_code;
ops[0].data.send_status_from_server.status_details =
@@ -731,12 +732,23 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_send_status_from_server(
ctx->send_status_from_server.trailing_metadata.metadata;
ops[0].flags = 0;
ops[0].reserved = NULL;
- ops[1].op = GRPC_OP_SEND_INITIAL_METADATA;
- ops[1].data.send_initial_metadata.count = 0;
- ops[1].data.send_initial_metadata.metadata = NULL;
- ops[1].flags = 0;
- ops[1].reserved = NULL;
-
+ if (optional_send_buffer) {
+ ops[nops].op = GRPC_OP_SEND_MESSAGE;
+ ctx->send_message = string_to_byte_buffer(optional_send_buffer,
+ optional_send_buffer_len);
+ ops[nops].data.send_message = ctx->send_message;
+ ops[nops].flags = write_flags;
+ ops[nops].reserved = NULL;
+ nops ++;
+ }
+ if (send_empty_initial_metadata) {
+ ops[nops].op = GRPC_OP_SEND_INITIAL_METADATA;
+ ops[nops].data.send_initial_metadata.count = 0;
+ ops[nops].data.send_initial_metadata.metadata = NULL;
+ ops[nops].flags = 0;
+ ops[nops].reserved = NULL;
+ nops++;
+ }
return grpc_call_start_batch(call, ops, nops, ctx, NULL);
}
diff --git a/src/csharp/tests.json b/src/csharp/tests.json
index f733352a31..f6af3408d5 100644
--- a/src/csharp/tests.json
+++ b/src/csharp/tests.json
@@ -1,5 +1,6 @@
{
"Grpc.Core.Tests": [
+ "Grpc.Core.Internal.Tests.AsyncCallServerTest",
"Grpc.Core.Internal.Tests.AsyncCallTest",
"Grpc.Core.Internal.Tests.ChannelArgsSafeHandleTest",
"Grpc.Core.Internal.Tests.CompletionQueueEventTest",
diff --git a/src/node/.gitignore b/src/node/.gitignore
deleted file mode 100644
index e3fbd98336..0000000000
--- a/src/node/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build
-node_modules
diff --git a/src/node/.jshintignore b/src/node/.jshintignore
new file mode 100644
index 0000000000..0a73e1e2b6
--- /dev/null
+++ b/src/node/.jshintignore
@@ -0,0 +1 @@
+**/*_pb.js \ No newline at end of file
diff --git a/src/node/.jshintrc b/src/node/.jshintrc
deleted file mode 100644
index 8237e0d2b6..0000000000
--- a/src/node/.jshintrc
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "bitwise": true,
- "curly": true,
- "eqeqeq": true,
- "esnext": true,
- "freeze": true,
- "immed": true,
- "indent": 2,
- "latedef": "nofunc",
- "maxlen": 80,
- "newcap": true,
- "node": true,
- "noarg": true,
- "quotmark": "single",
- "strict": true,
- "trailing": true,
- "undef": true,
- "unused": "vars",
- "globals": {
- /* Mocha-provided globals */
- "describe": false,
- "it": false,
- "before": false,
- "beforeEach": false,
- "after": false,
- "afterEach": false
- }
-}
diff --git a/src/node/ext/node_grpc.cc b/src/node/ext/node_grpc.cc
index b988f29878..6b6e42737b 100644
--- a/src/node/ext/node_grpc.cc
+++ b/src/node/ext/node_grpc.cc
@@ -35,6 +35,8 @@
#include <nan.h>
#include <v8.h>
#include "grpc/grpc.h"
+#include "grpc/grpc_security.h"
+#include "grpc/support/alloc.h"
#include "call.h"
#include "call_credentials.h"
@@ -51,6 +53,8 @@ using v8::Object;
using v8::Uint32;
using v8::String;
+static char *pem_root_certs = NULL;
+
void InitStatusConstants(Local<Object> exports) {
Nan::HandleScope scope;
Local<Object> status = Nan::New<Object>();
@@ -268,9 +272,36 @@ NAN_METHOD(MetadataKeyIsBinary) {
grpc_is_binary_header(key_str, static_cast<size_t>(key->Length()))));
}
+static grpc_ssl_roots_override_result get_ssl_roots_override(
+ char **pem_root_certs_ptr) {
+ *pem_root_certs_ptr = pem_root_certs;
+ if (pem_root_certs == NULL) {
+ return GRPC_SSL_ROOTS_OVERRIDE_FAIL;
+ } else {
+ return GRPC_SSL_ROOTS_OVERRIDE_OK;
+ }
+}
+
+/* This should only be called once, and only before creating any
+ *ServerCredentials */
+NAN_METHOD(SetDefaultRootsPem) {
+ if (!info[0]->IsString()) {
+ return Nan::ThrowTypeError(
+ "setDefaultRootsPem's argument must be a string");
+ }
+ Nan::Utf8String utf8_roots(info[0]);
+ size_t length = static_cast<size_t>(utf8_roots.length());
+ if (length > 0) {
+ const char *data = *utf8_roots;
+ pem_root_certs = (char *)gpr_malloc((length + 1) * sizeof(char));
+ memcpy(pem_root_certs, data, length + 1);
+ }
+}
+
void init(Local<Object> exports) {
Nan::HandleScope scope;
grpc_init();
+ grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
InitStatusConstants(exports);
InitCallErrorConstants(exports);
InitOpTypeConstants(exports);
@@ -298,6 +329,10 @@ void init(Local<Object> exports) {
Nan::GetFunction(
Nan::New<FunctionTemplate>(MetadataKeyIsBinary)
).ToLocalChecked());
+ Nan::Set(exports, Nan::New("setDefaultRootsPem").ToLocalChecked(),
+ Nan::GetFunction(
+ Nan::New<FunctionTemplate>(SetDefaultRootsPem)
+ ).ToLocalChecked());
}
NODE_MODULE(grpc_node, init)
diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc
index cff821aafc..a817ade518 100644
--- a/src/node/ext/server_credentials.cc
+++ b/src/node/ext/server_credentials.cc
@@ -146,7 +146,9 @@ NAN_METHOD(ServerCredentials::CreateSsl) {
"createSsl's second argument must be a list of objects");
}
- grpc_ssl_client_certificate_request_type client_certificate_request;
+ // Default to not requesting the client certificate
+ grpc_ssl_client_certificate_request_type client_certificate_request =
+ GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
if (info[2]->IsBoolean()) {
client_certificate_request =
Nan::To<bool>(info[2]).FromJust()
diff --git a/src/node/index.js b/src/node/index.js
index d345a5142d..66664d94b5 100644
--- a/src/node/index.js
+++ b/src/node/index.js
@@ -34,13 +34,10 @@
'use strict';
var path = require('path');
+var fs = require('fs');
var SSL_ROOTS_PATH = path.resolve(__dirname, '..', '..', 'etc', 'roots.pem');
-if (!process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH) {
- process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = SSL_ROOTS_PATH;
-}
-
var _ = require('lodash');
var ProtoBuf = require('protobufjs');
@@ -53,6 +50,8 @@ var Metadata = require('./src/metadata.js');
var grpc = require('./src/grpc_extension');
+grpc.setDefaultRootsPem(fs.readFileSync(SSL_ROOTS_PATH, 'ascii'));
+
/**
* Load a gRPC object from an existing ProtoBuf.Reflect object.
* @param {ProtoBuf.Reflect.Namespace} value The ProtoBuf object to load.
diff --git a/src/node/src/client.js b/src/node/src/client.js
index 5e07046fc6..f75f951eb8 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -815,8 +815,7 @@ exports.waitForClientReady = function(client, deadline, callback) {
* @return {function(string, Object)} New client constructor
*/
exports.makeProtobufClientConstructor = function(service, options) {
- var method_attrs = common.getProtobufServiceAttrs(service, service.name,
- options);
+ var method_attrs = common.getProtobufServiceAttrs(service, options);
var deprecatedArgumentOrder = false;
if (options) {
deprecatedArgumentOrder = options.deprecatedArgumentOrder;
diff --git a/src/node/src/server.js b/src/node/src/server.js
index 22128343a9..fd5153f124 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -684,6 +684,26 @@ Server.prototype.register = function(name, handler, serialize, deserialize,
return true;
};
+var unimplementedStatusResponse = {
+ code: grpc.status.UNIMPLEMENTED,
+ details: 'The server does not implement this method'
+};
+
+var defaultHandler = {
+ unary: function(call, callback) {
+ callback(unimplementedStatusResponse);
+ },
+ client_stream: function(call, callback) {
+ callback(unimplementedStatusResponse);
+ },
+ server_stream: function(call) {
+ call.emit('error', unimplementedStatusResponse);
+ },
+ bidi: function(call) {
+ call.emit('error', unimplementedStatusResponse);
+ }
+};
+
/**
* Add a service to the server, with a corresponding implementation. If you are
* generating this from a proto file, you should instead use
@@ -713,16 +733,18 @@ Server.prototype.addService = function(service, implementation) {
method_type = 'unary';
}
}
+ var impl;
if (implementation[name] === undefined) {
- throw new Error('Method handler for ' + attrs.path +
- ' not provided.');
+ console.warn('Method handler for %s expected but not provided',
+ attrs.path);
+ impl = defaultHandler[method_type];
+ } else {
+ impl = _.bind(implementation[name], implementation);
}
var serialize = attrs.responseSerialize;
var deserialize = attrs.requestDeserialize;
- var register_success = self.register(attrs.path,
- _.bind(implementation[name],
- implementation),
- serialize, deserialize, method_type);
+ var register_success = self.register(attrs.path, impl, serialize,
+ deserialize, method_type);
if (!register_success) {
throw new Error('Method handler for ' + attrs.path +
' already provided.');
diff --git a/src/node/test/math/math_grpc_pb.js b/src/node/test/math/math_grpc_pb.js
new file mode 100644
index 0000000000..083ed66913
--- /dev/null
+++ b/src/node/test/math/math_grpc_pb.js
@@ -0,0 +1,99 @@
+// GENERATED CODE -- DO NOT EDIT!
+
+'use strict';
+var grpc = require('grpc');
+var math_pb = require('./math_pb.js');
+
+function serialize_DivArgs(arg) {
+ if (!(arg instanceof math_pb.DivArgs)) {
+ throw new Error('Expected argument of type DivArgs');
+ }
+ return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_DivArgs(buffer_arg) {
+ return math_pb.DivArgs.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_DivReply(arg) {
+ if (!(arg instanceof math_pb.DivReply)) {
+ throw new Error('Expected argument of type DivReply');
+ }
+ return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_DivReply(buffer_arg) {
+ return math_pb.DivReply.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_FibArgs(arg) {
+ if (!(arg instanceof math_pb.FibArgs)) {
+ throw new Error('Expected argument of type FibArgs');
+ }
+ return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_FibArgs(buffer_arg) {
+ return math_pb.FibArgs.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_Num(arg) {
+ if (!(arg instanceof math_pb.Num)) {
+ throw new Error('Expected argument of type Num');
+ }
+ return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_Num(buffer_arg) {
+ return math_pb.Num.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+
+var MathService = exports.MathService = {
+ div: {
+ path: '/math.Math/Div',
+ requestStream: false,
+ responseStream: false,
+ requestType: math_pb.DivArgs,
+ responseType: math_pb.DivReply,
+ requestSerialize: serialize_DivArgs,
+ requestDeserialize: deserialize_DivArgs,
+ responseSerialize: serialize_DivReply,
+ responseDeserialize: deserialize_DivReply,
+ },
+ divMany: {
+ path: '/math.Math/DivMany',
+ requestStream: true,
+ responseStream: true,
+ requestType: math_pb.DivArgs,
+ responseType: math_pb.DivReply,
+ requestSerialize: serialize_DivArgs,
+ requestDeserialize: deserialize_DivArgs,
+ responseSerialize: serialize_DivReply,
+ responseDeserialize: deserialize_DivReply,
+ },
+ fib: {
+ path: '/math.Math/Fib',
+ requestStream: false,
+ responseStream: true,
+ requestType: math_pb.FibArgs,
+ responseType: math_pb.Num,
+ requestSerialize: serialize_FibArgs,
+ requestDeserialize: deserialize_FibArgs,
+ responseSerialize: serialize_Num,
+ responseDeserialize: deserialize_Num,
+ },
+ sum: {
+ path: '/math.Math/Sum',
+ requestStream: true,
+ responseStream: false,
+ requestType: math_pb.Num,
+ responseType: math_pb.Num,
+ requestSerialize: serialize_Num,
+ requestDeserialize: deserialize_Num,
+ responseSerialize: serialize_Num,
+ responseDeserialize: deserialize_Num,
+ },
+};
+
+exports.MathClient = grpc.makeGenericClientConstructor(MathService);
diff --git a/src/node/test/math/math_pb.js b/src/node/test/math/math_pb.js
new file mode 100644
index 0000000000..3489143bec
--- /dev/null
+++ b/src/node/test/math/math_pb.js
@@ -0,0 +1,866 @@
+/**
+ * @fileoverview
+ * @enhanceable
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.math.DivArgs', null, global);
+goog.exportSymbol('proto.math.DivReply', null, global);
+goog.exportSymbol('proto.math.FibArgs', null, global);
+goog.exportSymbol('proto.math.FibReply', null, global);
+goog.exportSymbol('proto.math.Num', null, global);
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.DivArgs = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.DivArgs, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.math.DivArgs.displayName = 'proto.math.DivArgs';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.DivArgs.prototype.toObject = function(opt_includeInstance) {
+ return proto.math.DivArgs.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.math.DivArgs} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.DivArgs.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ dividend: msg.getDividend(),
+ divisor: msg.getDivisor()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.DivArgs}
+ */
+proto.math.DivArgs.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.math.DivArgs;
+ return proto.math.DivArgs.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.DivArgs} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.DivArgs}
+ */
+proto.math.DivArgs.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setDividend(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setDivisor(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.DivArgs} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivArgs.serializeBinaryToWriter = function(message, writer) {
+ message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.DivArgs.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ this.serializeBinaryToWriter(writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivArgs.prototype.serializeBinaryToWriter = function (writer) {
+ var f = undefined;
+ f = this.getDividend();
+ if (f !== 0) {
+ writer.writeInt64(
+ 1,
+ f
+ );
+ }
+ f = this.getDivisor();
+ if (f !== 0) {
+ writer.writeInt64(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.DivArgs} The clone.
+ */
+proto.math.DivArgs.prototype.cloneMessage = function() {
+ return /** @type {!proto.math.DivArgs} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 dividend = 1;
+ * @return {number}
+ */
+proto.math.DivArgs.prototype.getDividend = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value */
+proto.math.DivArgs.prototype.setDividend = function(value) {
+ jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional int64 divisor = 2;
+ * @return {number}
+ */
+proto.math.DivArgs.prototype.getDivisor = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+};
+
+
+/** @param {number} value */
+proto.math.DivArgs.prototype.setDivisor = function(value) {
+ jspb.Message.setField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.DivReply = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.DivReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.math.DivReply.displayName = 'proto.math.DivReply';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.DivReply.prototype.toObject = function(opt_includeInstance) {
+ return proto.math.DivReply.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.math.DivReply} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.DivReply.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ quotient: msg.getQuotient(),
+ remainder: msg.getRemainder()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.DivReply}
+ */
+proto.math.DivReply.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.math.DivReply;
+ return proto.math.DivReply.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.DivReply} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.DivReply}
+ */
+proto.math.DivReply.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setQuotient(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setRemainder(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.DivReply} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivReply.serializeBinaryToWriter = function(message, writer) {
+ message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.DivReply.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ this.serializeBinaryToWriter(writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivReply.prototype.serializeBinaryToWriter = function (writer) {
+ var f = undefined;
+ f = this.getQuotient();
+ if (f !== 0) {
+ writer.writeInt64(
+ 1,
+ f
+ );
+ }
+ f = this.getRemainder();
+ if (f !== 0) {
+ writer.writeInt64(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.DivReply} The clone.
+ */
+proto.math.DivReply.prototype.cloneMessage = function() {
+ return /** @type {!proto.math.DivReply} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 quotient = 1;
+ * @return {number}
+ */
+proto.math.DivReply.prototype.getQuotient = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value */
+proto.math.DivReply.prototype.setQuotient = function(value) {
+ jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional int64 remainder = 2;
+ * @return {number}
+ */
+proto.math.DivReply.prototype.getRemainder = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+};
+
+
+/** @param {number} value */
+proto.math.DivReply.prototype.setRemainder = function(value) {
+ jspb.Message.setField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.FibArgs = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.FibArgs, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.math.FibArgs.displayName = 'proto.math.FibArgs';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.FibArgs.prototype.toObject = function(opt_includeInstance) {
+ return proto.math.FibArgs.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.math.FibArgs} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.FibArgs.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ limit: msg.getLimit()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.FibArgs}
+ */
+proto.math.FibArgs.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.math.FibArgs;
+ return proto.math.FibArgs.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.FibArgs} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.FibArgs}
+ */
+proto.math.FibArgs.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setLimit(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.FibArgs} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibArgs.serializeBinaryToWriter = function(message, writer) {
+ message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.FibArgs.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ this.serializeBinaryToWriter(writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibArgs.prototype.serializeBinaryToWriter = function (writer) {
+ var f = undefined;
+ f = this.getLimit();
+ if (f !== 0) {
+ writer.writeInt64(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.FibArgs} The clone.
+ */
+proto.math.FibArgs.prototype.cloneMessage = function() {
+ return /** @type {!proto.math.FibArgs} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 limit = 1;
+ * @return {number}
+ */
+proto.math.FibArgs.prototype.getLimit = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value */
+proto.math.FibArgs.prototype.setLimit = function(value) {
+ jspb.Message.setField(this, 1, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.Num = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.Num, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.math.Num.displayName = 'proto.math.Num';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.Num.prototype.toObject = function(opt_includeInstance) {
+ return proto.math.Num.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.math.Num} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.Num.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ num: msg.getNum()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.Num}
+ */
+proto.math.Num.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.math.Num;
+ return proto.math.Num.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.Num} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.Num}
+ */
+proto.math.Num.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setNum(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.Num} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.Num.serializeBinaryToWriter = function(message, writer) {
+ message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.Num.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ this.serializeBinaryToWriter(writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.Num.prototype.serializeBinaryToWriter = function (writer) {
+ var f = undefined;
+ f = this.getNum();
+ if (f !== 0) {
+ writer.writeInt64(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.Num} The clone.
+ */
+proto.math.Num.prototype.cloneMessage = function() {
+ return /** @type {!proto.math.Num} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 num = 1;
+ * @return {number}
+ */
+proto.math.Num.prototype.getNum = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value */
+proto.math.Num.prototype.setNum = function(value) {
+ jspb.Message.setField(this, 1, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.FibReply = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.FibReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.math.FibReply.displayName = 'proto.math.FibReply';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.FibReply.prototype.toObject = function(opt_includeInstance) {
+ return proto.math.FibReply.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.math.FibReply} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.FibReply.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ count: msg.getCount()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.FibReply}
+ */
+proto.math.FibReply.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.math.FibReply;
+ return proto.math.FibReply.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.FibReply} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.FibReply}
+ */
+proto.math.FibReply.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setCount(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.FibReply} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibReply.serializeBinaryToWriter = function(message, writer) {
+ message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.FibReply.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ this.serializeBinaryToWriter(writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibReply.prototype.serializeBinaryToWriter = function (writer) {
+ var f = undefined;
+ f = this.getCount();
+ if (f !== 0) {
+ writer.writeInt64(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.FibReply} The clone.
+ */
+proto.math.FibReply.prototype.cloneMessage = function() {
+ return /** @type {!proto.math.FibReply} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 count = 1;
+ * @return {number}
+ */
+proto.math.FibReply.prototype.getCount = function() {
+ return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value */
+proto.math.FibReply.prototype.setCount = function(value) {
+ jspb.Message.setField(this, 1, value);
+};
+
+
+goog.object.extend(exports, proto.math);
diff --git a/src/node/test/math/math_server.js b/src/node/test/math/math_server.js
index 9f67c52ab0..5e3d1dd864 100644
--- a/src/node/test/math/math_server.js
+++ b/src/node/test/math/math_server.js
@@ -34,8 +34,8 @@
'use strict';
var grpc = require('../..');
-var math = grpc.load(__dirname + '/../../../proto/math/math.proto').math;
-
+var grpcMath = require('./math_grpc_pb');
+var math = require('./math_pb');
/**
* Server function for division. Provides the /Math/DivMany and /Math/Div
@@ -46,14 +46,16 @@ var math = grpc.load(__dirname + '/../../../proto/math/math.proto').math;
*/
function mathDiv(call, cb) {
var req = call.request;
+ var divisor = req.getDivisor();
+ var dividend = req.getDividend();
// Unary + is explicit coersion to integer
- if (+req.divisor === 0) {
+ if (req.getDivisor() === 0) {
cb(new Error('cannot divide by zero'));
} else {
- cb(null, {
- quotient: req.dividend / req.divisor,
- remainder: req.dividend % req.divisor
- });
+ var response = new math.DivReply();
+ response.setQuotient(Math.floor(dividend / divisor));
+ response.setRemainder(dividend % divisor);
+ cb(null, response);
}
}
@@ -66,8 +68,10 @@ function mathDiv(call, cb) {
function mathFib(stream) {
// Here, call is a standard writable Node object Stream
var previous = 0, current = 1;
- for (var i = 0; i < stream.request.limit; i++) {
- stream.write({num: current});
+ for (var i = 0; i < stream.request.getLimit(); i++) {
+ var response = new math.Num();
+ response.setNum(current);
+ stream.write(response);
var temp = current;
current += previous;
previous = temp;
@@ -85,22 +89,26 @@ function mathSum(call, cb) {
// Here, call is a standard readable Node object Stream
var sum = 0;
call.on('data', function(data) {
- sum += (+data.num);
+ sum += data.getNum();
});
call.on('end', function() {
- cb(null, {num: sum});
+ var response = new math.Num();
+ response.setNum(sum);
+ cb(null, response);
});
}
function mathDivMany(stream) {
stream.on('data', function(div_args) {
- if (+div_args.divisor === 0) {
+ var divisor = div_args.getDivisor();
+ var dividend = div_args.getDividend();
+ if (divisor === 0) {
stream.emit('error', new Error('cannot divide by zero'));
} else {
- stream.write({
- quotient: div_args.dividend / div_args.divisor,
- remainder: div_args.dividend % div_args.divisor
- });
+ var response = new math.DivReply();
+ response.setQuotient(Math.floor(dividend / divisor));
+ response.setRemainder(dividend % divisor);
+ stream.write(response);
}
});
stream.on('end', function() {
@@ -110,7 +118,7 @@ function mathDivMany(stream) {
function getMathServer() {
var server = new grpc.Server();
- server.addProtoService(math.Math.service, {
+ server.addService(grpcMath.MathService, {
div: mathDiv,
fib: mathFib,
sum: mathSum,
diff --git a/src/node/test/math/node_modules/grpc.js b/src/node/test/math/node_modules/grpc.js
new file mode 100644
index 0000000000..17c8fd96d9
--- /dev/null
+++ b/src/node/test/math/node_modules/grpc.js
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* This exists solely to allow the generated code to import the grpc module
+ * without using a relative path */
+
+module.exports = require('../../..');
diff --git a/src/node/test/math_client_test.js b/src/node/test/math_client_test.js
index 3d44610536..34c16e070b 100644
--- a/src/node/test/math_client_test.js
+++ b/src/node/test/math_client_test.js
@@ -36,7 +36,8 @@
var assert = require('assert');
var grpc = require('..');
-var math = grpc.load(__dirname + '/../../proto/math/math.proto').math;
+var math = require('./math/math_pb');
+var MathClient = require('./math/math_grpc_pb').MathClient;
/**
* Client to use to make requests to a running server.
@@ -55,35 +56,41 @@ describe('Math client', function() {
var port_num = server.bind('0.0.0.0:0',
grpc.ServerCredentials.createInsecure());
server.start();
- math_client = new math.Math('localhost:' + port_num,
- grpc.credentials.createInsecure());
+ math_client = new MathClient('localhost:' + port_num,
+ grpc.credentials.createInsecure());
done();
});
after(function() {
server.forceShutdown();
});
it('should handle a single request', function(done) {
- var arg = {dividend: 7, divisor: 4};
+ var arg = new math.DivArgs();
+ arg.setDividend(7);
+ arg.setDivisor(4);
math_client.div(arg, function handleDivResult(err, value) {
assert.ifError(err);
- assert.equal(value.quotient, 1);
- assert.equal(value.remainder, 3);
+ assert.equal(value.getQuotient(), 1);
+ assert.equal(value.getRemainder(), 3);
done();
});
});
it('should handle an error from a unary request', function(done) {
- var arg = {dividend: 7, divisor: 0};
+ var arg = new math.DivArgs();
+ arg.setDividend(7);
+ arg.setDivisor(0);
math_client.div(arg, function handleDivResult(err, value) {
assert(err);
done();
});
});
it('should handle a server streaming request', function(done) {
- var call = math_client.fib({limit: 7});
+ var arg = new math.FibArgs();
+ arg.setLimit(7);
+ var call = math_client.fib(arg);
var expected_results = [1, 1, 2, 3, 5, 8, 13];
var next_expected = 0;
call.on('data', function checkResponse(value) {
- assert.equal(value.num, expected_results[next_expected]);
+ assert.equal(value.getNum(), expected_results[next_expected]);
next_expected += 1;
});
call.on('status', function checkStatus(status) {
@@ -94,10 +101,12 @@ describe('Math client', function() {
it('should handle a client streaming request', function(done) {
var call = math_client.sum(function handleSumResult(err, value) {
assert.ifError(err);
- assert.equal(value.num, 21);
+ assert.equal(value.getNum(), 21);
});
for (var i = 0; i < 7; i++) {
- call.write({'num': i});
+ var arg = new math.Num();
+ arg.setNum(i);
+ call.write(arg);
}
call.end();
call.on('status', function checkStatus(status) {
@@ -107,8 +116,8 @@ describe('Math client', function() {
});
it('should handle a bidirectional streaming request', function(done) {
function checkResponse(index, value) {
- assert.equal(value.quotient, index);
- assert.equal(value.remainder, 1);
+ assert.equal(value.getQuotient(), index);
+ assert.equal(value.getRemainder(), 1);
}
var call = math_client.divMany();
var response_index = 0;
@@ -117,7 +126,10 @@ describe('Math client', function() {
response_index += 1;
});
for (var i = 0; i < 7; i++) {
- call.write({dividend: 2 * i + 1, divisor: 2});
+ var arg = new math.DivArgs();
+ arg.setDividend(2 * i + 1);
+ arg.setDivisor(2);
+ call.write(arg);
}
call.end();
call.on('status', function checkStatus(status) {
@@ -131,7 +143,10 @@ describe('Math client', function() {
assert.fail(value, undefined, 'Unexpected data response on failing call',
'!=');
});
- call.write({dividend: 7, divisor: 0});
+ var arg = new math.DivArgs();
+ arg.setDividend(7);
+ arg.setDivisor(0);
+ call.write(arg);
call.end();
call.on('error', function checkStatus(status) {
done();
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index b96e8e487c..d8b36dc55c 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -143,21 +143,59 @@ describe('Server.prototype.addProtoService', function() {
server.addProtoService(mathService, dummyImpls);
});
});
- it('Should fail with missing handlers', function() {
- assert.throws(function() {
- server.addProtoService(mathService, {
- 'div': function() {},
- 'divMany': function() {},
- 'fib': function() {}
- });
- }, /math.Math.Sum/);
- });
it('Should fail if the server has been started', function() {
server.start();
assert.throws(function() {
server.addProtoService(mathService, dummyImpls);
});
});
+ describe('Default handlers', function() {
+ var client;
+ beforeEach(function() {
+ server.addProtoService(mathService, {});
+ var port = server.bind('localhost:0', server_insecure_creds);
+ var Client = surface_client.makeProtobufClientConstructor(mathService);
+ client = new Client('localhost:' + port,
+ grpc.credentials.createInsecure());
+ server.start();
+ });
+ it('should respond to a unary call with UNIMPLEMENTED', function(done) {
+ client.div({divisor: 4, dividend: 3}, function(error, response) {
+ assert(error);
+ assert.strictEqual(error.code, grpc.status.UNIMPLEMENTED);
+ done();
+ });
+ });
+ it('should respond to a client stream with UNIMPLEMENTED', function(done) {
+ var call = client.sum(function(error, respones) {
+ assert(error);
+ assert.strictEqual(error.code, grpc.status.UNIMPLEMENTED);
+ done();
+ });
+ call.end();
+ });
+ it('should respond to a server stream with UNIMPLEMENTED', function(done) {
+ var call = client.fib({limit: 5});
+ call.on('data', function(value) {
+ assert.fail('No messages expected');
+ });
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.UNIMPLEMENTED);
+ done();
+ });
+ });
+ it('should respond to a bidi call with UNIMPLEMENTED', function(done) {
+ var call = client.divMany();
+ call.on('data', function(value) {
+ assert.fail('No messages expected');
+ });
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.UNIMPLEMENTED);
+ done();
+ });
+ call.end();
+ });
+ });
});
describe('Client constructor building', function() {
var illegal_service_attrs = {
diff --git a/src/node/tools/bin/protoc.js b/src/node/tools/bin/protoc.js
index 0c6d7ce017..4d50c94b0f 100755
--- a/src/node/tools/bin/protoc.js
+++ b/src/node/tools/bin/protoc.js
@@ -43,7 +43,9 @@
var path = require('path');
var execFile = require('child_process').execFile;
-var protoc = path.resolve(__dirname, 'protoc');
+var exe_ext = process.platform === 'win32' ? '.exe' : '';
+
+var protoc = path.resolve(__dirname, 'protoc' + exe_ext);
execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
if (error) {
diff --git a/src/node/tools/bin/protoc_plugin.js b/src/node/tools/bin/protoc_plugin.js
new file mode 100755
index 0000000000..281ec0d85e
--- /dev/null
+++ b/src/node/tools/bin/protoc_plugin.js
@@ -0,0 +1,56 @@
+#!/usr/bin/env node
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/**
+ * This file is required because package.json cannot reference a file that
+ * is not distributed with the package, and we use node-pre-gyp to distribute
+ * the plugin binary
+ */
+
+'use strict';
+
+var path = require('path');
+var execFile = require('child_process').execFile;
+
+var exe_ext = process.platform === 'win32' ? '.exe' : '';
+
+var plugin = path.resolve(__dirname, 'grpc_node_plugin' + exe_ext);
+
+execFile(plugin, process.argv.slice(2), function(error, stdout, stderr) {
+ if (error) {
+ throw error;
+ }
+ console.log(stdout);
+ console.log(stderr);
+});
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index 4b3499f2f9..d4849c2e38 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
{
"name": "grpc-tools",
- "version": "0.14.0-dev",
+ "version": "0.15.0-dev",
"author": "Google Inc.",
"description": "Tools for developing with gRPC on Node.js",
"homepage": "http://www.grpc.io/",
@@ -16,7 +16,8 @@
}
],
"bin": {
- "grpc-tools-protoc": "./bin/protoc.js"
+ "grpc_tools_node_protoc": "./bin/protoc.js",
+ "grpc_tools_node_protoc_plugin": "./bin/protoc_plugin.js"
},
"scripts": {
"install": "./node_modules/.bin/node-pre-gyp install"
@@ -32,6 +33,7 @@
"files": [
"index.js",
"bin/protoc.js",
+ "bin/protoc_plugin.js",
"LICENSE"
],
"main": "index.js"
diff --git a/src/objective-c/BoringSSL.podspec b/src/objective-c/BoringSSL.podspec
index 4a6df910a7..7d1de80716 100644
--- a/src/objective-c/BoringSSL.podspec
+++ b/src/objective-c/BoringSSL.podspec
@@ -31,7 +31,7 @@
Pod::Spec.new do |s|
s.name = 'BoringSSL'
- s.version = '2.0'
+ s.version = '3.0'
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google’s needs.'
# Adapted from the homepage:
s.description = <<-DESC
@@ -67,7 +67,7 @@ Pod::Spec.new do |s|
s.authors = 'Adam Langley', 'David Benjamin', 'Matt Braithwaite'
s.source = { :git => 'https://boringssl.googlesource.com/boringssl',
- :tag => 'version_for_cocoapods_2.0' }
+ :tag => 'version_for_cocoapods_3.0' }
s.source_files = 'ssl/*.{h,c}',
'ssl/**/*.{h,c}',
diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h
new file mode 100644
index 0000000000..343dd48a14
--- /dev/null
+++ b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import "GRPCCall.h"
+
+/** Helpers for setting TLS Trusted Roots, Client Certificates, and Private Key */
+@interface GRPCCall (ChannelCredentials)
+
+/**
+ * Use the provided @c pemRootCert as the set of trusted root Certificate Authorities for @c host.
+ */
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCert
+ forHost:(nonnull NSString *)host
+ error:(NSError **)errorPtr;
+/**
+ * Configures @c host with TLS/SSL Client Credentials and optionally trusted root Certificate
+ * Authorities. If @c pemRootCerts is nil, the default CA Certificates bundled with gRPC will be
+ * used.
+ */
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+ withPrivateKey:(nullable NSString *)pemPrivateKey
+ withCertChain:(nullable NSString *)pemCertChain
+ forHost:(nonnull NSString *)host
+ error:(NSError **)errorPtr;
+
+@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m
new file mode 100644
index 0000000000..a8bcd0aab4
--- /dev/null
+++ b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m
@@ -0,0 +1,66 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import "GRPCCall+ChannelCredentials.h"
+
+#import "private/GRPCHost.h"
+
+@implementation GRPCCall (ChannelCredentials)
+
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+ withPrivateKey:(nullable NSString *)pemPrivateKey
+ withCertChain:(nullable NSString *)pemCertChain
+ forHost:(nonnull NSString *)host
+ error:(NSError **)errorPtr {
+ if (!host) {
+ [NSException raise:NSInvalidArgumentException
+ format:@"host must be provided."];
+ }
+ GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
+ return [hostConfig setTLSPEMRootCerts:pemRootCerts
+ withPrivateKey:pemPrivateKey
+ withCertChain:pemCertChain
+ error:errorPtr];
+}
+
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+ forHost:(nonnull NSString *)host
+ error:(NSError **)errorPtr {
+ return [GRPCCall setTLSPEMRootCerts:pemRootCerts
+ withPrivateKey:nil
+ withCertChain:nil
+ forHost:host
+ error:errorPtr];
+}
+
+@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+Tests.m b/src/objective-c/GRPCClient/GRPCCall+Tests.m
index c8e8133703..b9456691bd 100644
--- a/src/objective-c/GRPCClient/GRPCCall+Tests.m
+++ b/src/objective-c/GRPCClient/GRPCCall+Tests.m
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,8 +43,16 @@
if (!host || !certsPath || !testName) {
[NSException raise:NSInvalidArgumentException format:@"host, path and name must be provided."];
}
+ NSError *error = nil;
+ NSString *certs = [NSString stringWithContentsOfFile:certsPath
+ encoding:NSUTF8StringEncoding
+ error:&error];
+ if (error != nil) {
+ [NSException raise:[error localizedDescription] format:@"failed to load certs"];
+ }
+
GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
- hostConfig.pathToCertificates = certsPath;
+ [hostConfig setTLSPEMRootCerts:certs withPrivateKey:nil withCertChain:nil error:nil];
hostConfig.hostNameOverride = testName;
}
diff --git a/src/objective-c/GRPCClient/GRPCCall.m b/src/objective-c/GRPCClient/GRPCCall.m
index 1847d6016f..0eb10656dd 100644
--- a/src/objective-c/GRPCClient/GRPCCall.m
+++ b/src/objective-c/GRPCClient/GRPCCall.m
@@ -136,6 +136,10 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
#pragma mark Finish
- (void)finishWithError:(NSError *)errorOrNil {
+ @synchronized(self) {
+ _state = GRXWriterStateFinished;
+ }
+
// If the call isn't retained anywhere else, it can be deallocated now.
_retainSelf = nil;
@@ -342,6 +346,10 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
#pragma mark GRXWriter implementation
- (void)startWithWriteable:(id<GRXWriteable>)writeable {
+ @synchronized(self) {
+ _state = GRXWriterStateStarted;
+ }
+
// Create a retain cycle so that this instance lives until the RPC finishes (or is cancelled).
// This makes RPCs in which the call isn't externally retained possible (as long as it is started
// before being autoreleased).
@@ -375,30 +383,32 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
}
- (void)setState:(GRXWriterState)newState {
- // Manual transitions are only allowed from the started or paused states.
- if (_state == GRXWriterStateNotStarted || _state == GRXWriterStateFinished) {
- return;
- }
-
- switch (newState) {
- case GRXWriterStateFinished:
- _state = newState;
- // Per GRXWriter's contract, setting the state to Finished manually
- // means one doesn't wish the writeable to be messaged anymore.
- [_responseWriteable cancelSilently];
- _responseWriteable = nil;
- return;
- case GRXWriterStatePaused:
- _state = newState;
+ @synchronized(self) {
+ // Manual transitions are only allowed from the started or paused states.
+ if (_state == GRXWriterStateNotStarted || _state == GRXWriterStateFinished) {
return;
- case GRXWriterStateStarted:
- if (_state == GRXWriterStatePaused) {
+ }
+
+ switch (newState) {
+ case GRXWriterStateFinished:
_state = newState;
- [self startNextRead];
- }
- return;
- case GRXWriterStateNotStarted:
- return;
+ // Per GRXWriter's contract, setting the state to Finished manually
+ // means one doesn't wish the writeable to be messaged anymore.
+ [_responseWriteable cancelSilently];
+ _responseWriteable = nil;
+ return;
+ case GRXWriterStatePaused:
+ _state = newState;
+ return;
+ case GRXWriterStateStarted:
+ if (_state == GRXWriterStatePaused) {
+ _state = newState;
+ [self startNextRead];
+ }
+ return;
+ case GRXWriterStateNotStarted:
+ return;
+ }
}
}
diff --git a/src/objective-c/GRPCClient/private/GRPCChannel.h b/src/objective-c/GRPCClient/private/GRPCChannel.h
index 73bf8d95e7..70d1a9bd2f 100644
--- a/src/objective-c/GRPCClient/private/GRPCChannel.h
+++ b/src/objective-c/GRPCClient/private/GRPCChannel.h
@@ -56,18 +56,6 @@ struct grpc_channel_credentials;
+ (nullable GRPCChannel *)secureChannelWithHost:(nonnull NSString *)host;
/**
- * Creates a secure channel to the specified @c host using the specified @c pathToCertificates and
- * @c channelArgs. Only in tests should @c pathToCertificates be nil or
- * @c GRPC_SSL_TARGET_NAME_OVERRIDE_ARG channel arg be set. Passing nil for @c pathToCertificates
- * results in using the default root certificates distributed with the library. If certificates
- * could not be found in any case, then @c nil is returned.
- */
-+ (nullable GRPCChannel *)secureChannelWithHost:(nonnull NSString *)host
- pathToCertificates:(nullable NSString *)pathToCertificates
- channelArgs:(nullable NSDictionary *)channelArgs;
-
-
-/**
* Creates a secure channel to the specified @c host using the specified @c credentials and
* @c channelArgs. Only in tests should @c GRPC_SSL_TARGET_NAME_OVERRIDE_ARG channel arg be set.
*/
diff --git a/src/objective-c/GRPCClient/private/GRPCChannel.m b/src/objective-c/GRPCClient/private/GRPCChannel.m
index 926f55048d..203ef58c0d 100644
--- a/src/objective-c/GRPCClient/private/GRPCChannel.m
+++ b/src/objective-c/GRPCClient/private/GRPCChannel.m
@@ -40,26 +40,6 @@
#import "GRPCCompletionQueue.h"
-/**
- * Returns @c grpc_channel_credentials from the specified @c path. If the file at the path could not
- * be read then NULL is returned. If NULL is returned, @c errorPtr may not be NULL if there are
- * details available describing what went wrong.
- */
-static grpc_channel_credentials *CertificatesAtPath(NSString *path, NSError **errorPtr) {
- // Files in PEM format can have non-ASCII characters in their comments (e.g. for the name of the
- // issuer). Load them as UTF8 and produce an ASCII equivalent.
- NSString *contentInUTF8 = [NSString stringWithContentsOfFile:path
- encoding:NSUTF8StringEncoding
- error:errorPtr];
- NSData *contentInASCII = [contentInUTF8 dataUsingEncoding:NSASCIIStringEncoding
- allowLossyConversion:YES];
- if (!contentInASCII.bytes) {
- // Passing NULL to grpc_ssl_credentials_create produces behavior we don't want, so return.
- return NULL;
- }
- return grpc_ssl_credentials_create(contentInASCII.bytes, NULL, NULL);
-}
-
void freeChannelArgs(grpc_channel_args *channel_args) {
for (size_t i = 0; i < channel_args->num_args; ++i) {
grpc_arg *arg = &channel_args->args[i];
@@ -158,38 +138,6 @@ grpc_channel_args * buildChannelArgs(NSDictionary *dictionary) {
}
+ (GRPCChannel *)secureChannelWithHost:(NSString *)host
- pathToCertificates:(NSString *)path
- channelArgs:(NSDictionary *)channelArgs {
- // Load default SSL certificates once.
- static grpc_channel_credentials *kDefaultCertificates;
- static dispatch_once_t loading;
- dispatch_once(&loading, ^{
- NSString *defaultPath = @"gRPCCertificates.bundle/roots"; // .pem
- // Do not use NSBundle.mainBundle, as it's nil for tests of library projects.
- NSBundle *bundle = [NSBundle bundleForClass:self.class];
- NSString *path = [bundle pathForResource:defaultPath ofType:@"pem"];
- NSError *error;
- kDefaultCertificates = CertificatesAtPath(path, &error);
- NSAssert(kDefaultCertificates, @"Could not read %@/%@.pem. This file, with the root "
- "certificates, is needed to establish secure (TLS) connections. Because the file is "
- "distributed with the gRPC library, this error is usually a sign that the library "
- "wasn't configured correctly for your project. Error: %@",
- bundle.bundlePath, defaultPath, error);
- });
-
- //TODO(jcanizales): Add NSError** parameter to the initializer.
- grpc_channel_credentials *certificates = path
- ? CertificatesAtPath(path, NULL)
- : kDefaultCertificates;
-
- return [[GRPCChannel alloc] initWithHost:host
- secure:YES
- credentials:certificates
- channelArgs:channelArgs];
-}
-
-
-+ (GRPCChannel *)secureChannelWithHost:(NSString *)host
credentials:(struct grpc_channel_credentials *)credentials
channelArgs:(NSDictionary *)channelArgs {
return [[GRPCChannel alloc] initWithHost:host
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.h b/src/objective-c/GRPCClient/private/GRPCHost.h
index e58bb7a2d9..9220e2a33d 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.h
+++ b/src/objective-c/GRPCClient/private/GRPCHost.h
@@ -37,23 +37,28 @@ NS_ASSUME_NONNULL_BEGIN
@class GRPCCompletionQueue;
struct grpc_call;
+struct grpc_channel_credentials;
@interface GRPCHost : NSObject
@property(nonatomic, readonly) NSString *address;
@property(nonatomic, copy, nullable) NSString *userAgentPrefix;
+@property(nonatomic, nullable) struct grpc_channel_credentials *channelCreds;
/** The following properties should only be modified for testing: */
@property(nonatomic, getter=isSecure) BOOL secure;
-@property(nonatomic, copy, nullable) NSString *pathToCertificates;
@property(nonatomic, copy, nullable) NSString *hostNameOverride;
- (nullable instancetype)init NS_UNAVAILABLE;
/** Host objects initialized with the same address are the same. */
+ (nullable instancetype)hostWithAddress:(NSString *)address;
- (nullable instancetype)initWithAddress:(NSString *)address NS_DESIGNATED_INITIALIZER;
+- (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+ withPrivateKey:(nullable NSString *)pemPrivateKey
+ withCertChain:(nullable NSString *)pemCertChain
+ error:(NSError **)errorPtr;
/** Create a grpc_call object to the provided path on this host. */
- (nullable struct grpc_call *)unmanagedCallWithPath:(NSString *)path
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m
index 739d808c53..43166cbb52 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.m
+++ b/src/objective-c/GRPCClient/private/GRPCHost.m
@@ -34,6 +34,7 @@
#import "GRPCHost.h"
#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
#import <GRPCClient/GRPCCall.h>
#import <GRPCClient/GRPCCall+ChannelArg.h>
@@ -56,6 +57,12 @@ NS_ASSUME_NONNULL_BEGIN
return [[self alloc] initWithAddress:address];
}
+- (void)dealloc {
+ if (_channelCreds != nil) {
+ grpc_channel_credentials_release(_channelCreds);
+ }
+}
+
// Default initializer.
- (nullable instancetype)initWithAddress:(NSString *)address {
if (!address) {
@@ -105,6 +112,75 @@ NS_ASSUME_NONNULL_BEGIN
return [channel unmanagedCallWithPath:path completionQueue:queue];
}
+- (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+ withPrivateKey:(nullable NSString *)pemPrivateKey
+ withCertChain:(nullable NSString *)pemCertChain
+ error:(NSError **)errorPtr {
+ static NSData *kDefaultRootsASCII;
+ static NSError *kDefaultRootsError;
+ static dispatch_once_t loading;
+ dispatch_once(&loading, ^{
+ NSString *defaultPath = @"gRPCCertificates.bundle/roots"; // .pem
+ // Do not use NSBundle.mainBundle, as it's nil for tests of library projects.
+ NSBundle *bundle = [NSBundle bundleForClass:self.class];
+ NSString *path = [bundle pathForResource:defaultPath ofType:@"pem"];
+ NSError *error;
+ // Files in PEM format can have non-ASCII characters in their comments (e.g. for the name of the
+ // issuer). Load them as UTF8 and produce an ASCII equivalent.
+ NSString *contentInUTF8 = [NSString stringWithContentsOfFile:path
+ encoding:NSUTF8StringEncoding
+ error:&error];
+ if (contentInUTF8 == nil) {
+ kDefaultRootsError = error;
+ return;
+ }
+ kDefaultRootsASCII = [contentInUTF8 dataUsingEncoding:NSASCIIStringEncoding
+ allowLossyConversion:YES];
+ });
+
+ NSData *rootsASCII;
+ if (pemRootCerts != nil) {
+ rootsASCII = [pemRootCerts dataUsingEncoding:NSASCIIStringEncoding
+ allowLossyConversion:YES];
+ } else {
+ if (kDefaultRootsASCII == nil) {
+ if (errorPtr) {
+ *errorPtr = kDefaultRootsError;
+ }
+ NSAssert(kDefaultRootsASCII, @"Could not read gRPCCertificates.bundle/roots.pem. This file, "
+ "with the root certificates, is needed to establish secure (TLS) connections. "
+ "Because the file is distributed with the gRPC library, this error is usually a sign "
+ "that the library wasn't configured correctly for your project. Error: %@",
+ kDefaultRootsError);
+ return NO;
+ }
+ rootsASCII = kDefaultRootsASCII;
+ }
+
+ grpc_channel_credentials *creds;
+ if (pemPrivateKey == nil && pemCertChain == nil) {
+ creds = grpc_ssl_credentials_create(rootsASCII.bytes, NULL, NULL);
+ } else {
+ grpc_ssl_pem_key_cert_pair key_cert_pair;
+ NSData *privateKeyASCII = [pemPrivateKey dataUsingEncoding:NSASCIIStringEncoding
+ allowLossyConversion:YES];
+ NSData *certChainASCII = [pemCertChain dataUsingEncoding:NSASCIIStringEncoding
+ allowLossyConversion:YES];
+ key_cert_pair.private_key = privateKeyASCII.bytes;
+ key_cert_pair.cert_chain = certChainASCII.bytes;
+ creds = grpc_ssl_credentials_create(rootsASCII.bytes, &key_cert_pair, NULL);
+ }
+
+ @synchronized(self) {
+ if (_channelCreds != nil) {
+ grpc_channel_credentials_release(_channelCreds);
+ }
+ _channelCreds = creds;
+ }
+
+ return YES;
+}
+
- (NSDictionary *)channelArgs {
NSMutableDictionary *args = [NSMutableDictionary dictionary];
@@ -125,9 +201,16 @@ NS_ASSUME_NONNULL_BEGIN
- (GRPCChannel *)newChannel {
NSDictionary *args = [self channelArgs];
if (_secure) {
- return [GRPCChannel secureChannelWithHost:_address
- pathToCertificates:_pathToCertificates
- channelArgs:args];
+ GRPCChannel *channel;
+ @synchronized(self) {
+ if (_channelCreds == nil) {
+ [self setTLSPEMRootCerts:nil withPrivateKey:nil withCertChain:nil error:nil];
+ }
+ channel = [GRPCChannel secureChannelWithHost:_address
+ credentials:_channelCreds
+ channelArgs:args];
+ }
+ return channel;
} else {
return [GRPCChannel insecureChannelWithHost:_address channelArgs:args];
}
@@ -145,9 +228,6 @@ NS_ASSUME_NONNULL_BEGIN
}
}
-// TODO(jcanizales): Don't let set |secure| to |NO| if |pathToCertificates| or |hostNameOverride|
-// have been set. Don't let set either of the latter if |secure| has been set to |NO|.
-
@end
NS_ASSUME_NONNULL_END
diff --git a/src/objective-c/tests/InteropTests.m b/src/objective-c/tests/InteropTests.m
index 26877b1ae8..4f096b9efa 100644
--- a/src/objective-c/tests/InteropTests.m
+++ b/src/objective-c/tests/InteropTests.m
@@ -272,8 +272,14 @@
XCTAssertEqual(error.code, GRPC_STATUS_CANCELLED);
[expectation fulfill];
}];
+ XCTAssertEqual(call.state, GRXWriterStateNotStarted);
+
[call start];
+ XCTAssertEqual(call.state, GRXWriterStateStarted);
+
[call cancel];
+ XCTAssertEqual(call.state, GRXWriterStateFinished);
+
[self waitForExpectationsWithTimeout:1 handler:nil];
}
diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php
index aebf80f6bf..565bfce74f 100755
--- a/src/php/tests/interop/interop_client.php
+++ b/src/php/tests/interop/interop_client.php
@@ -1,7 +1,7 @@
<?php
/*
*
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -388,141 +388,158 @@ function timeoutOnSleepingServer($stub)
'Call status was not DEADLINE_EXCEEDED');
}
-$args = getopt('', ['server_host:', 'server_port:', 'test_case:',
- 'use_tls::', 'use_test_ca::',
- 'server_host_override:', 'oauth_scope:',
- 'default_service_account:', ]);
-if (!array_key_exists('server_host', $args)) {
- throw new Exception('Missing argument: --server_host is required');
-}
-if (!array_key_exists('server_port', $args)) {
- throw new Exception('Missing argument: --server_port is required');
-}
-if (!array_key_exists('test_case', $args)) {
- throw new Exception('Missing argument: --test_case is required');
-}
-
-if ($args['server_port'] == 443) {
- $server_address = $args['server_host'];
-} else {
- $server_address = $args['server_host'].':'.$args['server_port'];
-}
+function _makeStub($args)
+{
+ if (!array_key_exists('server_host', $args)) {
+ throw new Exception('Missing argument: --server_host is required');
+ }
+ if (!array_key_exists('server_port', $args)) {
+ throw new Exception('Missing argument: --server_port is required');
+ }
+ if (!array_key_exists('test_case', $args)) {
+ throw new Exception('Missing argument: --test_case is required');
+ }
-$test_case = $args['test_case'];
+ if ($args['server_port'] == 443) {
+ $server_address = $args['server_host'];
+ } else {
+ $server_address = $args['server_host'].':'.$args['server_port'];
+ }
-$host_override = 'foo.test.google.fr';
-if (array_key_exists('server_host_override', $args)) {
- $host_override = $args['server_host_override'];
-}
+ $test_case = $args['test_case'];
-$use_tls = false;
-if (array_key_exists('use_tls', $args) &&
- $args['use_tls'] != 'false') {
- $use_tls = true;
-}
+ $host_override = 'foo.test.google.fr';
+ if (array_key_exists('server_host_override', $args)) {
+ $host_override = $args['server_host_override'];
+ }
-$use_test_ca = false;
-if (array_key_exists('use_test_ca', $args) &&
- $args['use_test_ca'] != 'false') {
- $use_test_ca = true;
-}
+ $use_tls = false;
+ if (array_key_exists('use_tls', $args) &&
+ $args['use_tls'] != 'false') {
+ $use_tls = true;
+ }
-$opts = [];
+ $use_test_ca = false;
+ if (array_key_exists('use_test_ca', $args) &&
+ $args['use_test_ca'] != 'false') {
+ $use_test_ca = true;
+ }
-if ($use_tls) {
- if ($use_test_ca) {
- $ssl_credentials = Grpc\ChannelCredentials::createSsl(
- file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
+ $opts = [];
+
+ if ($use_tls) {
+ if ($use_test_ca) {
+ $ssl_credentials = Grpc\ChannelCredentials::createSsl(
+ file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
+ } else {
+ $ssl_credentials = Grpc\ChannelCredentials::createSsl();
+ }
+ $opts['credentials'] = $ssl_credentials;
+ $opts['grpc.ssl_target_name_override'] = $host_override;
} else {
- $ssl_credentials = Grpc\ChannelCredentials::createSsl();
+ $opts['credentials'] = Grpc\ChannelCredentials::createInsecure();
}
- $opts['credentials'] = $ssl_credentials;
- $opts['grpc.ssl_target_name_override'] = $host_override;
-} else {
- $opts['credentials'] = Grpc\ChannelCredentials::createInsecure();
-}
-if (in_array($test_case, ['service_account_creds',
- 'compute_engine_creds', 'jwt_token_creds', ])) {
- if ($test_case == 'jwt_token_creds') {
- $auth_credentials = ApplicationDefaultCredentials::getCredentials();
- } else {
+ if (in_array($test_case, ['service_account_creds',
+ 'compute_engine_creds', 'jwt_token_creds', ])) {
+ if ($test_case == 'jwt_token_creds') {
+ $auth_credentials = ApplicationDefaultCredentials::getCredentials();
+ } else {
+ $auth_credentials = ApplicationDefaultCredentials::getCredentials(
+ $args['oauth_scope']
+ );
+ }
+ $opts['update_metadata'] = $auth_credentials->getUpdateMetadataFunc();
+ }
+
+ if ($test_case == 'oauth2_auth_token') {
$auth_credentials = ApplicationDefaultCredentials::getCredentials(
$args['oauth_scope']
);
+ $token = $auth_credentials->fetchAuthToken();
+ $update_metadata =
+ function ($metadata,
+ $authUri = null,
+ ClientInterface $client = null) use ($token) {
+ $metadata_copy = $metadata;
+ $metadata_copy[CredentialsLoader::AUTH_METADATA_KEY] =
+ [sprintf('%s %s',
+ $token['token_type'],
+ $token['access_token'])];
+
+ return $metadata_copy;
+ };
+ $opts['update_metadata'] = $update_metadata;
}
- $opts['update_metadata'] = $auth_credentials->getUpdateMetadataFunc();
+
+ $stub = new grpc\testing\TestServiceClient($server_address, $opts);
+
+ return $stub;
}
-if ($test_case == 'oauth2_auth_token') {
- $auth_credentials = ApplicationDefaultCredentials::getCredentials(
- $args['oauth_scope']
- );
- $token = $auth_credentials->fetchAuthToken();
- $update_metadata =
- function ($metadata,
- $authUri = null,
- ClientInterface $client = null) use ($token) {
- $metadata_copy = $metadata;
- $metadata_copy[CredentialsLoader::AUTH_METADATA_KEY] =
- [sprintf('%s %s',
- $token['token_type'],
- $token['access_token'])];
-
- return $metadata_copy;
- };
- $opts['update_metadata'] = $update_metadata;
+function interop_main($args, $stub = false) {
+ if (!$stub) {
+ $stub = _makeStub($args);
+ }
+
+ $test_case = $args['test_case'];
+ echo "Running test case $test_case\n";
+
+ switch ($test_case) {
+ case 'empty_unary':
+ emptyUnary($stub);
+ break;
+ case 'large_unary':
+ largeUnary($stub);
+ break;
+ case 'client_streaming':
+ clientStreaming($stub);
+ break;
+ case 'server_streaming':
+ serverStreaming($stub);
+ break;
+ case 'ping_pong':
+ pingPong($stub);
+ break;
+ case 'empty_stream':
+ emptyStream($stub);
+ break;
+ case 'cancel_after_begin':
+ cancelAfterBegin($stub);
+ break;
+ case 'cancel_after_first_response':
+ cancelAfterFirstResponse($stub);
+ break;
+ case 'timeout_on_sleeping_server':
+ timeoutOnSleepingServer($stub);
+ break;
+ case 'service_account_creds':
+ serviceAccountCreds($stub, $args);
+ break;
+ case 'compute_engine_creds':
+ computeEngineCreds($stub, $args);
+ break;
+ case 'jwt_token_creds':
+ jwtTokenCreds($stub, $args);
+ break;
+ case 'oauth2_auth_token':
+ oauth2AuthToken($stub, $args);
+ break;
+ case 'per_rpc_creds':
+ perRpcCreds($stub, $args);
+ break;
+ default:
+ echo "Unsupported test case $test_case\n";
+ exit(1);
+ }
+
+ return $stub;
}
-$stub = new grpc\testing\TestServiceClient($server_address, $opts);
-
-echo "Connecting to $server_address\n";
-echo "Running test case $test_case\n";
-
-switch ($test_case) {
- case 'empty_unary':
- emptyUnary($stub);
- break;
- case 'large_unary':
- largeUnary($stub);
- break;
- case 'client_streaming':
- clientStreaming($stub);
- break;
- case 'server_streaming':
- serverStreaming($stub);
- break;
- case 'ping_pong':
- pingPong($stub);
- break;
- case 'empty_stream':
- emptyStream($stub);
- break;
- case 'cancel_after_begin':
- cancelAfterBegin($stub);
- break;
- case 'cancel_after_first_response':
- cancelAfterFirstResponse($stub);
- break;
- case 'timeout_on_sleeping_server':
- timeoutOnSleepingServer($stub);
- break;
- case 'service_account_creds':
- serviceAccountCreds($stub, $args);
- break;
- case 'compute_engine_creds':
- computeEngineCreds($stub, $args);
- break;
- case 'jwt_token_creds':
- jwtTokenCreds($stub, $args);
- break;
- case 'oauth2_auth_token':
- oauth2AuthToken($stub, $args);
- break;
- case 'per_rpc_creds':
- perRpcCreds($stub, $args);
- break;
- default:
- echo "Unsupported test case $test_case\n";
- exit(1);
+if (isset($_SERVER['PHP_SELF']) && preg_match('/interop_client/', $_SERVER['PHP_SELF'])) {
+ $args = getopt('', ['server_host:', 'server_port:', 'test_case:',
+ 'use_tls::', 'use_test_ca::',
+ 'server_host_override:', 'oauth_scope:',
+ 'default_service_account:', ]);
+ interop_main($args);
}
diff --git a/src/php/tests/interop/metrics_client.php b/src/php/tests/interop/metrics_client.php
new file mode 100644
index 0000000000..46f4212f77
--- /dev/null
+++ b/src/php/tests/interop/metrics_client.php
@@ -0,0 +1,49 @@
+<?php
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+$args = getopt('', ['metrics_server_address:', 'total_only::']);
+$parts = explode(':', $args['metrics_server_address']);
+$server_host = $parts[0];
+$server_port = (count($parts) == 2) ? $parts[1] : '';
+
+$socket = socket_create(AF_INET, SOCK_STREAM, 0);
+if (@!socket_connect($socket, $server_host, $server_port)) {
+ echo "Cannot connect to merics server...\n";
+ exit(1);
+}
+socket_write($socket, 'qps');
+while ($out = socket_read($socket, 1024)) {
+ echo "$out\n";
+}
+socket_close($socket);
diff --git a/src/php/tests/interop/stress_client.php b/src/php/tests/interop/stress_client.php
new file mode 100644
index 0000000000..2339f0d105
--- /dev/null
+++ b/src/php/tests/interop/stress_client.php
@@ -0,0 +1,116 @@
+<?php
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+include_once('interop_client.php');
+
+function stress_main($args) {
+ mt_srand();
+ set_time_limit(0);
+
+ // open socket to listen as metrics server
+ $socket = socket_create(AF_INET, SOCK_STREAM, 0);
+ socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
+ if (@!socket_bind($socket, 'localhost', $args['metrics_port'])) {
+ echo "Cannot create socket for metrics server...\n";
+ exit(1);
+ }
+ socket_listen($socket);
+ socket_set_nonblock($socket);
+
+ $start_time = microtime(true);
+ $count = 0;
+ $deadline = $args['test_duration_secs'] ?
+ ($start_time + $args['test_duration_secs']) : false;
+ $num_test_cases = count($args['test_cases']);
+ $stub = false;
+
+ while (true) {
+ $current_time = microtime(true);
+ if ($deadline && $current_time > $deadline) {
+ break;
+ }
+ if ($client_connection = socket_accept($socket)) {
+ // there is an incoming request, respond with qps metrics
+ $input = socket_read($client_connection, 1024);
+ $qps = round($count / ($current_time - $start_time));
+ socket_write($client_connection, "qps: $qps");
+ socket_close($client_connection);
+ } else {
+ // do actual work, run one interop test case
+ $args['test_case'] =
+ $args['test_cases'][mt_rand(0, $num_test_cases - 1)];
+ $stub = @interop_main($args, $stub);
+ $count++;
+ }
+ }
+ socket_close($socket);
+ echo "Number of interop tests run in $args[test_duration_secs] seconds: $count.\n";
+}
+
+// process command line arguments
+$raw_args = getopt('',
+ ['server_addresses::',
+ 'test_cases:',
+ 'metrics_port::',
+ 'test_duration_secs::',
+ 'num_channels_per_server::',
+ 'num_stubs_per_channel::']);
+
+$args = [];
+
+if (empty($raw_args['server_addresses'])) {
+ $args['server_host'] = 'localhost';
+ $args['server_port'] = '8080';
+} else {
+ $parts = explode(':', $raw_args['server_addresses']);
+ $args['server_host'] = $parts[0];
+ $args['server_port'] = (count($parts) == 2) ? $parts[1] : '';
+}
+
+$args['metrics_port'] = empty($raw_args['metrics_port']) ?
+ '8081' : $args['metrics_port'];
+
+$args['test_duration_secs'] = empty($raw_args['test_duration_secs']) ||
+ $raw_args['test_duration_secs'] == -1 ?
+ false : $raw_args['test_duration_secs'];
+
+$test_cases = [];
+$test_case_strs = explode(',', $raw_args['test_cases']);
+foreach ($test_case_strs as $test_case_str) {
+ $parts = explode(':', $test_case_str);
+ $test_cases = array_merge($test_cases, array_fill(0, $parts[1], $parts[0]));
+}
+$args['test_cases'] = $test_cases;
+
+stress_main($args);
diff --git a/src/proto/grpc/testing/compiler_test.proto b/src/proto/grpc/testing/compiler_test.proto
new file mode 100644
index 0000000000..085e8ae59f
--- /dev/null
+++ b/src/proto/grpc/testing/compiler_test.proto
@@ -0,0 +1,75 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// File detached comment 1
+
+// File detached comment 2
+
+// File leading comment 1
+syntax = "proto3";
+
+// Ignored detached comment
+
+// Ignored package leading comment
+package grpc.testing;
+
+message Request {
+}
+message Response {
+}
+
+// ServiceA detached comment 1
+
+// ServiceA detached comment 2
+
+// ServiceA leading comment 1
+service ServiceA {
+ // MethodA1 leading comment 1
+ rpc MethodA1(Request) returns (Response); // MethodA1 trailing comment 1
+
+ // MethodA2 detached leading comment 1
+
+ // Method A2 leading comment 1
+ // Method A2 leading comment 2
+ rpc MethodA2(stream Request) returns (Response);
+ // MethodA2 trailing comment 1
+}
+// Ignored ServiceA trailing comment 1
+
+// ServiceB leading comment 1
+service ServiceB {
+ // ServiceB trailing comment 1
+
+ // MethodB1 leading comment 1
+ rpc MethodB1(Request) returns (Response);
+ // MethodB1 trailing comment 1
+}
+// Ignored ServiceB trailing comment 2
+
+// Ignored file trailing comment
diff --git a/src/proto/grpc/testing/echo.proto b/src/proto/grpc/testing/echo.proto
index 0eef53a92a..c596aabfcc 100644
--- a/src/proto/grpc/testing/echo.proto
+++ b/src/proto/grpc/testing/echo.proto
@@ -45,3 +45,7 @@ service EchoTestService {
service UnimplementedService {
rpc Unimplemented(EchoRequest) returns (EchoResponse);
}
+
+// A service without any rpc defined to test coverage.
+service NoRpcService {
+}
diff --git a/src/python/.gitignore b/src/python/.gitignore
new file mode 100644
index 0000000000..f158efa4bf
--- /dev/null
+++ b/src/python/.gitignore
@@ -0,0 +1 @@
+gens/
diff --git a/src/python/grpcio/README.rst b/src/python/grpcio/README.rst
index 33a462b66f..afc4fe6a37 100644
--- a/src/python/grpcio/README.rst
+++ b/src/python/grpcio/README.rst
@@ -23,6 +23,16 @@ Else system wide (on Ubuntu)...
$ sudo pip install grpcio
+If you're on Windows make sure that you installed the :code:`pip.exe` component
+when you installed Python (if not go back and install it!) then invoke:
+
+::
+
+ $ pip.exe install grpcio
+
+Windows users may need to invoke :code:`pip.exe` from a command line ran as
+administrator.
+
n.b. On Windows and on Mac OS X one *must* have a recent release of :code:`pip`
to retrieve the proper wheel from PyPI. Be sure to upgrade to the latest
version!
@@ -38,11 +48,15 @@ package named :code:`python-dev`).
$ export REPO_ROOT=grpc # REPO_ROOT can be any directory of your choice
$ git clone https://github.com/grpc/grpc.git $REPO_ROOT
$ cd $REPO_ROOT
+ $ git submodule update --init
# For the next two commands do `sudo pip install` if you get permission-denied errors
$ pip install -rrequirements.txt
$ GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install .
+You cannot currently install Python from source on Windows. Things might work
+out for you in MSYS2 (follow the Linux instructions), but it isn't officially
+supported at the moment.
Troubleshooting
~~~~~~~~~~~~~~~
diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py
index 9e745701c1..295dab2d27 100644
--- a/src/python/grpcio/commands.py
+++ b/src/python/grpcio/commands.py
@@ -50,6 +50,9 @@ from setuptools.command import test
import support
PYTHON_STEM = os.path.dirname(os.path.abspath(__file__))
+GRPC_STEM = os.path.abspath(PYTHON_STEM + '../../../../')
+PROTO_STEM = os.path.join(GRPC_STEM, 'src', 'proto')
+PROTO_GEN_STEM = os.path.join(GRPC_STEM, 'src', 'python', 'gens')
CONF_PY_ADDENDUM = """
extensions.append('sphinx.ext.napoleon')
@@ -157,30 +160,45 @@ class BuildProtoModules(setuptools.Command):
if not self.grpc_python_plugin_command:
raise CommandError('could not find grpc_python_plugin '
'(protoc plugin for GRPC Python)')
+
+ if not os.path.exists(PROTO_GEN_STEM):
+ os.makedirs(PROTO_GEN_STEM)
+
include_regex = re.compile(self.include)
exclude_regex = re.compile(self.exclude) if self.exclude else None
paths = []
- root_directory = PYTHON_STEM
- for walk_root, directories, filenames in os.walk(root_directory):
+ for walk_root, directories, filenames in os.walk(PROTO_STEM):
for filename in filenames:
path = os.path.join(walk_root, filename)
if include_regex.match(path) and not (
exclude_regex and exclude_regex.match(path)):
paths.append(path)
- command = [
- self.protoc_command,
- '--plugin=protoc-gen-python-grpc={}'.format(
- self.grpc_python_plugin_command),
- '-I {}'.format(root_directory),
- '--python_out={}'.format(root_directory),
- '--python-grpc_out={}'.format(root_directory),
- ] + paths
- try:
- subprocess.check_output(' '.join(command), cwd=root_directory, shell=True,
- stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as e:
- raise CommandError('Command:\n{}\nMessage:\n{}\nOutput:\n{}'.format(
- command, e.message, e.output))
+
+ # TODO(kpayson): It would be nice to do this in a batch command,
+ # but we currently have name conflicts in src/proto
+ for path in paths:
+ command = [
+ self.protoc_command,
+ '--plugin=protoc-gen-python-grpc={}'.format(
+ self.grpc_python_plugin_command),
+ '-I {}'.format(GRPC_STEM),
+ '--python_out={}'.format(PROTO_GEN_STEM),
+ '--python-grpc_out={}'.format(PROTO_GEN_STEM),
+ ] + [path]
+ try:
+ subprocess.check_output(' '.join(command), cwd=PYTHON_STEM, shell=True,
+ stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ sys.stderr.write(
+ 'warning: Command:\n{}\nMessage:\n{}\nOutput:\n{}'.format(
+ command, e.message, e.output))
+
+ # Generated proto directories dont include __init__.py, but
+ # these are needed for python package resolution
+ for walk_root, _, _ in os.walk(PROTO_GEN_STEM):
+ if walk_root != PROTO_GEN_STEM:
+ path = os.path.join(walk_root, '__init__.py')
+ open(path, 'a').close()
class BuildProjectMetadata(setuptools.Command):
diff --git a/src/python/grpcio/grpc/__init__.py b/src/python/grpcio/grpc/__init__.py
index 7086519106..b844a14c48 100644
--- a/src/python/grpcio/grpc/__init__.py
+++ b/src/python/grpcio/grpc/__init__.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2015-2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,4 +27,5 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/src/python/grpcio/grpc/_adapter/fore.py b/src/python/grpcio/grpc/_adapter/fore.py
deleted file mode 100644
index acdd69c420..0000000000
--- a/src/python/grpcio/grpc/_adapter/fore.py
+++ /dev/null
@@ -1,363 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""The RPC-service-side bridge between RPC Framework and GRPC-on-the-wire."""
-
-import enum
-import logging
-import threading
-import time
-
-from grpc._adapter import _common
-from grpc._adapter import _intermediary_low as _low
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base import null
-from grpc.framework.foundation import activated
-from grpc.framework.foundation import logging_pool
-
-_THREAD_POOL_SIZE = 10
-
-
-@enum.unique
-class _LowWrite(enum.Enum):
- """The possible categories of low-level write state."""
-
- OPEN = 'OPEN'
- ACTIVE = 'ACTIVE'
- CLOSED = 'CLOSED'
-
-
-def _write(call, rpc_state, payload):
- serialized_payload = rpc_state.serializer(payload)
- if rpc_state.write.low is _LowWrite.OPEN:
- call.write(serialized_payload, call, 0)
- rpc_state.write.low = _LowWrite.ACTIVE
- else:
- rpc_state.write.pending.append(serialized_payload)
-
-
-def _status(call, rpc_state):
- call.status(_low.Status(_low.Code.OK, ''), call)
- rpc_state.write.low = _LowWrite.CLOSED
-
-
-class ForeLink(base_interfaces.ForeLink, activated.Activated):
- """A service-side bridge between RPC Framework and the C-ish _low code."""
-
- def __init__(
- self, pool, request_deserializers, response_serializers,
- root_certificates, key_chain_pairs, port=None):
- """Constructor.
-
- Args:
- pool: A thread pool.
- request_deserializers: A dict from RPC method names to request object
- deserializer behaviors.
- response_serializers: A dict from RPC method names to response object
- serializer behaviors.
- root_certificates: The PEM-encoded client root certificates as a
- bytestring or None.
- key_chain_pairs: A sequence of PEM-encoded private key-certificate chain
- pairs.
- port: The port on which to serve, or None to have a port selected
- automatically.
- """
- self._condition = threading.Condition()
- self._pool = pool
- self._request_deserializers = request_deserializers
- self._response_serializers = response_serializers
- self._root_certificates = root_certificates
- self._key_chain_pairs = key_chain_pairs
- self._requested_port = port
-
- self._rear_link = null.NULL_REAR_LINK
- self._completion_queue = None
- self._server = None
- self._rpc_states = {}
- self._spinning = False
- self._port = None
-
- def _on_stop_event(self):
- self._spinning = False
- self._condition.notify_all()
-
- def _on_service_acceptance_event(self, event, server):
- """Handle a service invocation event."""
- service_acceptance = event.service_acceptance
- if service_acceptance is None:
- return
-
- call = service_acceptance.call
- call.accept(self._completion_queue, call)
- # TODO(nathaniel): Metadata support.
- call.premetadata()
- call.read(call)
- method = service_acceptance.method
-
- self._rpc_states[call] = _common.CommonRPCState(
- _common.WriteState(_LowWrite.OPEN, _common.HighWrite.OPEN, []), 1,
- self._request_deserializers[method],
- self._response_serializers[method])
-
- ticket = base_interfaces.FrontToBackTicket(
- call, 0, base_interfaces.FrontToBackTicket.Kind.COMMENCEMENT, method,
- base_interfaces.ServicedSubscription.Kind.FULL, None, None,
- service_acceptance.deadline - time.time())
- self._rear_link.accept_front_to_back_ticket(ticket)
-
- server.service(None)
-
- def _on_read_event(self, event):
- """Handle data arriving during an RPC."""
- call = event.tag
- rpc_state = self._rpc_states.get(call, None)
- if rpc_state is None:
- return
-
- sequence_number = rpc_state.sequence_number
- rpc_state.sequence_number += 1
- if event.bytes is None:
- ticket = base_interfaces.FrontToBackTicket(
- call, sequence_number,
- base_interfaces.FrontToBackTicket.Kind.COMPLETION, None, None, None,
- None, None)
- else:
- call.read(call)
- ticket = base_interfaces.FrontToBackTicket(
- call, sequence_number,
- base_interfaces.FrontToBackTicket.Kind.CONTINUATION, None, None,
- None, rpc_state.deserializer(event.bytes), None)
-
- self._rear_link.accept_front_to_back_ticket(ticket)
-
- def _on_write_event(self, event):
- call = event.tag
- rpc_state = self._rpc_states.get(call, None)
- if rpc_state is None:
- return
-
- if rpc_state.write.pending:
- serialized_payload = rpc_state.write.pending.pop(0)
- call.write(serialized_payload, call, 0)
- elif rpc_state.write.high is _common.HighWrite.CLOSED:
- _status(call, rpc_state)
- else:
- rpc_state.write.low = _LowWrite.OPEN
-
- def _on_complete_event(self, event):
- if not event.complete_accepted:
- logging.error('Complete not accepted! %s', (event,))
- call = event.tag
- rpc_state = self._rpc_states.pop(call, None)
- if rpc_state is None:
- return
-
- sequence_number = rpc_state.sequence_number
- rpc_state.sequence_number += 1
- ticket = base_interfaces.FrontToBackTicket(
- call, sequence_number,
- base_interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE, None,
- None, None, None, None)
- self._rear_link.accept_front_to_back_ticket(ticket)
-
- def _on_finish_event(self, event):
- """Handle termination of an RPC."""
- call = event.tag
- rpc_state = self._rpc_states.pop(call, None)
- if rpc_state is None:
- return
-
- code = event.status.code
- if code is _low.Code.OK:
- return
-
- sequence_number = rpc_state.sequence_number
- rpc_state.sequence_number += 1
- if code is _low.Code.CANCELLED:
- ticket = base_interfaces.FrontToBackTicket(
- call, sequence_number,
- base_interfaces.FrontToBackTicket.Kind.CANCELLATION, None, None,
- None, None, None)
- elif code is _low.Code.DEADLINE_EXCEEDED:
- ticket = base_interfaces.FrontToBackTicket(
- call, sequence_number,
- base_interfaces.FrontToBackTicket.Kind.EXPIRATION, None, None, None,
- None, None)
- else:
- # TODO(nathaniel): Better mapping of codes to ticket-categories
- ticket = base_interfaces.FrontToBackTicket(
- call, sequence_number,
- base_interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE, None,
- None, None, None, None)
- self._rear_link.accept_front_to_back_ticket(ticket)
-
- def _spin(self, completion_queue, server):
- while True:
- event = completion_queue.get(None)
-
- with self._condition:
- if event.kind is _low.Event.Kind.STOP:
- self._on_stop_event()
- return
- elif self._server is None:
- continue
- elif event.kind is _low.Event.Kind.SERVICE_ACCEPTED:
- self._on_service_acceptance_event(event, server)
- elif event.kind is _low.Event.Kind.READ_ACCEPTED:
- self._on_read_event(event)
- elif event.kind is _low.Event.Kind.WRITE_ACCEPTED:
- self._on_write_event(event)
- elif event.kind is _low.Event.Kind.COMPLETE_ACCEPTED:
- self._on_complete_event(event)
- elif event.kind is _low.Event.Kind.FINISH:
- self._on_finish_event(event)
- else:
- logging.error('Illegal event! %s', (event,))
-
- def _continue(self, call, payload):
- rpc_state = self._rpc_states.get(call, None)
- if rpc_state is None:
- return
-
- _write(call, rpc_state, payload)
-
- def _complete(self, call, payload):
- """Handle completion of the writes of an RPC."""
- rpc_state = self._rpc_states.get(call, None)
- if rpc_state is None:
- return
-
- if rpc_state.write.low is _LowWrite.OPEN:
- if payload is None:
- _status(call, rpc_state)
- else:
- _write(call, rpc_state, payload)
- elif rpc_state.write.low is _LowWrite.ACTIVE:
- if payload is not None:
- rpc_state.write.pending.append(rpc_state.serializer(payload))
- else:
- raise ValueError('Called to complete after having already completed!')
- rpc_state.write.high = _common.HighWrite.CLOSED
-
- def _cancel(self, call):
- call.cancel()
- self._rpc_states.pop(call, None)
-
- def join_rear_link(self, rear_link):
- """See base_interfaces.ForeLink.join_rear_link for specification."""
- self._rear_link = null.NULL_REAR_LINK if rear_link is None else rear_link
-
- def _start(self):
- """Starts this ForeLink.
-
- This method must be called before attempting to exchange tickets with this
- object.
- """
- with self._condition:
- address = '[::]:%d' % (
- 0 if self._requested_port is None else self._requested_port)
- self._completion_queue = _low.CompletionQueue()
- if self._root_certificates is None and not self._key_chain_pairs:
- self._server = _low.Server(self._completion_queue)
- self._port = self._server.add_http2_addr(address)
- else:
- server_credentials = _low.ServerCredentials(
- self._root_certificates, self._key_chain_pairs, False)
- self._server = _low.Server(self._completion_queue)
- self._port = self._server.add_secure_http2_addr(
- address, server_credentials)
- self._server.start()
-
- self._server.service(None)
-
- self._pool.submit(self._spin, self._completion_queue, self._server)
- self._spinning = True
-
- return self
-
- # TODO(nathaniel): Expose graceful-shutdown semantics in which this object
- # enters a state in which it finishes ongoing RPCs but refuses new ones.
- def _stop(self):
- """Stops this ForeLink.
-
- This method must be called for proper termination of this object, and no
- attempts to exchange tickets with this object may be made after this method
- has been called.
- """
- with self._condition:
- self._server.stop()
- # TODO(nathaniel): Yep, this is weird. Deleting a server shouldn't have a
- # behaviorally significant side-effect.
- self._server = None
- self._completion_queue.stop()
-
- while self._spinning:
- self._condition.wait()
-
- self._port = None
-
- def __enter__(self):
- """See activated.Activated.__enter__ for specification."""
- return self._start()
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- """See activated.Activated.__exit__ for specification."""
- self._stop()
- return False
-
- def start(self):
- """See activated.Activated.start for specification."""
- return self._start()
-
- def stop(self):
- """See activated.Activated.stop for specification."""
- self._stop()
-
- def port(self):
- """Identifies the port on which this ForeLink is servicing RPCs.
-
- Returns:
- The number of the port on which this ForeLink is servicing RPCs, or None
- if this ForeLink is not currently activated and servicing RPCs.
- """
- with self._condition:
- return self._port
-
- def accept_back_to_front_ticket(self, ticket):
- """See base_interfaces.ForeLink.accept_back_to_front_ticket for spec."""
- with self._condition:
- if self._server is None:
- return
-
- if ticket.kind is base_interfaces.BackToFrontTicket.Kind.CONTINUATION:
- self._continue(ticket.operation_id, ticket.payload)
- elif ticket.kind is base_interfaces.BackToFrontTicket.Kind.COMPLETION:
- self._complete(ticket.operation_id, ticket.payload)
- else:
- self._cancel(ticket.operation_id)
diff --git a/src/python/grpcio/grpc/_adapter/rear.py b/src/python/grpcio/grpc/_adapter/rear.py
deleted file mode 100644
index 17fa47f746..0000000000
--- a/src/python/grpcio/grpc/_adapter/rear.py
+++ /dev/null
@@ -1,395 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""The RPC-invocation-side bridge between RPC Framework and GRPC-on-the-wire."""
-
-import enum
-import logging
-import threading
-import time
-
-from grpc._adapter import _common
-from grpc._adapter import _intermediary_low as _low
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base import null
-from grpc.framework.foundation import activated
-from grpc.framework.foundation import logging_pool
-
-_THREAD_POOL_SIZE = 10
-
-_INVOCATION_EVENT_KINDS = (
- _low.Event.Kind.METADATA_ACCEPTED,
- _low.Event.Kind.FINISH
-)
-
-
-@enum.unique
-class _LowWrite(enum.Enum):
- """The possible categories of low-level write state."""
-
- OPEN = 'OPEN'
- ACTIVE = 'ACTIVE'
- CLOSED = 'CLOSED'
-
-
-class _RPCState(object):
- """The full state of any tracked RPC.
-
- Attributes:
- call: The _low.Call object for the RPC.
- outstanding: The set of Event.Kind values describing expected future events
- for the RPC.
- active: A boolean indicating whether or not the RPC is active.
- common: An _common.RPCState describing additional state for the RPC.
- """
-
- def __init__(self, call, outstanding, active, common):
- self.call = call
- self.outstanding = outstanding
- self.active = active
- self.common = common
-
-
-def _write(operation_id, call, outstanding, write_state, serialized_payload):
- if write_state.low is _LowWrite.OPEN:
- call.write(serialized_payload, operation_id, 0)
- outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
- write_state.low = _LowWrite.ACTIVE
- elif write_state.low is _LowWrite.ACTIVE:
- write_state.pending.append(serialized_payload)
- else:
- raise ValueError('Write attempted after writes completed!')
-
-
-class RearLink(base_interfaces.RearLink, activated.Activated):
- """An invocation-side bridge between RPC Framework and the C-ish _low code."""
-
- def __init__(
- self, host, port, pool, request_serializers, response_deserializers,
- secure, root_certificates, private_key, certificate_chain,
- metadata_transformer=None, server_host_override=None):
- """Constructor.
-
- Args:
- host: The host to which to connect for RPC service.
- port: The port to which to connect for RPC service.
- pool: A thread pool.
- request_serializers: A dict from RPC method names to request object
- serializer behaviors.
- response_deserializers: A dict from RPC method names to response object
- deserializer behaviors.
- secure: A boolean indicating whether or not to use a secure connection.
- root_certificates: The PEM-encoded root certificates or None to ask for
- them to be retrieved from a default location.
- private_key: The PEM-encoded private key to use or None if no private
- key should be used.
- certificate_chain: The PEM-encoded certificate chain to use or None if
- no certificate chain should be used.
- metadata_transformer: A function that given a metadata object produces
- another metadata to be used in the underlying communication on the
- wire.
- server_host_override: (For testing only) the target name used for SSL
- host name checking.
- """
- self._condition = threading.Condition()
- self._host = host
- self._port = port
- self._pool = pool
- self._request_serializers = request_serializers
- self._response_deserializers = response_deserializers
-
- self._fore_link = null.NULL_FORE_LINK
- self._completion_queue = None
- self._channel = None
- self._rpc_states = {}
- self._spinning = False
- if secure:
- self._client_credentials = _low.ClientCredentials(
- root_certificates, private_key, certificate_chain)
- else:
- self._client_credentials = None
- self._root_certificates = root_certificates
- self._private_key = private_key
- self._certificate_chain = certificate_chain
- self._metadata_transformer = metadata_transformer
- self._server_host_override = server_host_override
-
- def _on_write_event(self, operation_id, event, rpc_state):
- if event.write_accepted:
- if rpc_state.common.write.pending:
- rpc_state.call.write(
- rpc_state.common.write.pending.pop(0), operation_id, 0)
- rpc_state.outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
- elif rpc_state.common.write.high is _common.HighWrite.CLOSED:
- rpc_state.call.complete(operation_id)
- rpc_state.outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
- rpc_state.common.write.low = _LowWrite.CLOSED
- else:
- rpc_state.common.write.low = _LowWrite.OPEN
- else:
- logging.error('RPC write not accepted! Event: %s', (event,))
- rpc_state.active = False
- ticket = base_interfaces.BackToFrontTicket(
- operation_id, rpc_state.common.sequence_number,
- base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
- rpc_state.common.sequence_number += 1
- self._fore_link.accept_back_to_front_ticket(ticket)
-
- def _on_read_event(self, operation_id, event, rpc_state):
- if event.bytes is not None:
- rpc_state.call.read(operation_id)
- rpc_state.outstanding.add(_low.Event.Kind.READ_ACCEPTED)
-
- ticket = base_interfaces.BackToFrontTicket(
- operation_id, rpc_state.common.sequence_number,
- base_interfaces.BackToFrontTicket.Kind.CONTINUATION,
- rpc_state.common.deserializer(event.bytes))
- rpc_state.common.sequence_number += 1
- self._fore_link.accept_back_to_front_ticket(ticket)
-
- def _on_complete_event(self, operation_id, event, rpc_state):
- if not event.complete_accepted:
- logging.error('RPC complete not accepted! Event: %s', (event,))
- rpc_state.active = False
- ticket = base_interfaces.BackToFrontTicket(
- operation_id, rpc_state.common.sequence_number,
- base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
- rpc_state.common.sequence_number += 1
- self._fore_link.accept_back_to_front_ticket(ticket)
-
- # TODO(nathaniel): Metadata support.
- def _on_metadata_event(self, operation_id, event, rpc_state): # pylint: disable=unused-argument
- rpc_state.call.read(operation_id)
- rpc_state.outstanding.add(_low.Event.Kind.READ_ACCEPTED)
-
- def _on_finish_event(self, operation_id, event, rpc_state):
- """Handle termination of an RPC."""
- # TODO(nathaniel): Cover all statuses.
- if event.status.code is _low.Code.OK:
- kind = base_interfaces.BackToFrontTicket.Kind.COMPLETION
- elif event.status.code is _low.Code.CANCELLED:
- kind = base_interfaces.BackToFrontTicket.Kind.CANCELLATION
- elif event.status.code is _low.Code.DEADLINE_EXCEEDED:
- kind = base_interfaces.BackToFrontTicket.Kind.EXPIRATION
- else:
- kind = base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE
- ticket = base_interfaces.BackToFrontTicket(
- operation_id, rpc_state.common.sequence_number, kind, None)
- rpc_state.common.sequence_number += 1
- self._fore_link.accept_back_to_front_ticket(ticket)
-
- def _spin(self, completion_queue):
- while True:
- event = completion_queue.get(None)
- operation_id = event.tag
-
- with self._condition:
- rpc_state = self._rpc_states[operation_id]
- rpc_state.outstanding.remove(event.kind)
- if rpc_state.active and self._completion_queue is not None:
- if event.kind is _low.Event.Kind.WRITE_ACCEPTED:
- self._on_write_event(operation_id, event, rpc_state)
- elif event.kind is _low.Event.Kind.METADATA_ACCEPTED:
- self._on_metadata_event(operation_id, event, rpc_state)
- elif event.kind is _low.Event.Kind.READ_ACCEPTED:
- self._on_read_event(operation_id, event, rpc_state)
- elif event.kind is _low.Event.Kind.COMPLETE_ACCEPTED:
- self._on_complete_event(operation_id, event, rpc_state)
- elif event.kind is _low.Event.Kind.FINISH:
- self._on_finish_event(operation_id, event, rpc_state)
- else:
- logging.error('Illegal RPC event! %s', (event,))
-
- if not rpc_state.outstanding:
- self._rpc_states.pop(operation_id)
- if not self._rpc_states:
- self._spinning = False
- self._condition.notify_all()
- return
-
- def _invoke(self, operation_id, name, high_state, payload, timeout):
- """Invoke an RPC.
-
- Args:
- operation_id: Any object to be used as an operation ID for the RPC.
- name: The RPC method name.
- high_state: A _common.HighWrite value representing the "high write state"
- of the RPC.
- payload: A payload object for the RPC or None if no payload was given at
- invocation-time.
- timeout: A duration of time in seconds to allow for the RPC.
- """
- request_serializer = self._request_serializers[name]
- call = _low.Call(self._channel, self._completion_queue, name, self._host, time.time() + timeout)
- if self._metadata_transformer is not None:
- metadata = self._metadata_transformer([])
- for metadata_key, metadata_value in metadata:
- call.add_metadata(metadata_key, metadata_value)
- call.invoke(self._completion_queue, operation_id, operation_id)
- outstanding = set(_INVOCATION_EVENT_KINDS)
-
- if payload is None:
- if high_state is _common.HighWrite.CLOSED:
- call.complete(operation_id)
- low_state = _LowWrite.CLOSED
- outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
- else:
- low_state = _LowWrite.OPEN
- else:
- serialized_payload = request_serializer(payload)
- call.write(serialized_payload, operation_id, 0)
- outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
- low_state = _LowWrite.ACTIVE
-
- write_state = _common.WriteState(low_state, high_state, [])
- common_state = _common.CommonRPCState(
- write_state, 0, self._response_deserializers[name], request_serializer)
- self._rpc_states[operation_id] = _RPCState(
- call, outstanding, True, common_state)
-
- if not self._spinning:
- self._pool.submit(self._spin, self._completion_queue)
- self._spinning = True
-
- def _commence(self, operation_id, name, payload, timeout):
- self._invoke(operation_id, name, _common.HighWrite.OPEN, payload, timeout)
-
- def _continue(self, operation_id, payload):
- rpc_state = self._rpc_states.get(operation_id, None)
- if rpc_state is None or not rpc_state.active:
- return
-
- _write(
- operation_id, rpc_state.call, rpc_state.outstanding,
- rpc_state.common.write, rpc_state.common.serializer(payload))
-
- def _complete(self, operation_id, payload):
- """Close writes associated with an ongoing RPC.
-
- Args:
- operation_id: Any object being use as an operation ID for the RPC.
- payload: A payload object for the RPC (and thus the last payload object
- for the RPC) or None if no payload was given along with the instruction
- to indicate the end of writes for the RPC.
- """
- rpc_state = self._rpc_states.get(operation_id, None)
- if rpc_state is None or not rpc_state.active:
- return
-
- write_state = rpc_state.common.write
- if payload is None:
- if write_state.low is _LowWrite.OPEN:
- rpc_state.call.complete(operation_id)
- rpc_state.outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
- write_state.low = _LowWrite.CLOSED
- else:
- _write(
- operation_id, rpc_state.call, rpc_state.outstanding, write_state,
- rpc_state.common.serializer(payload))
- write_state.high = _common.HighWrite.CLOSED
-
- def _entire(self, operation_id, name, payload, timeout):
- self._invoke(operation_id, name, _common.HighWrite.CLOSED, payload, timeout)
-
- def _cancel(self, operation_id):
- rpc_state = self._rpc_states.get(operation_id, None)
- if rpc_state is not None and rpc_state.active:
- rpc_state.call.cancel()
- rpc_state.active = False
-
- def join_fore_link(self, fore_link):
- """See base_interfaces.RearLink.join_fore_link for specification."""
- with self._condition:
- self._fore_link = null.NULL_FORE_LINK if fore_link is None else fore_link
-
- def _start(self):
- """Starts this RearLink.
-
- This method must be called before attempting to exchange tickets with this
- object.
- """
- with self._condition:
- self._completion_queue = _low.CompletionQueue()
- self._channel = _low.Channel(
- '%s:%d' % (self._host, self._port), self._client_credentials,
- server_host_override=self._server_host_override)
- return self
-
- def _stop(self):
- """Stops this RearLink.
-
- This method must be called for proper termination of this object, and no
- attempts to exchange tickets with this object may be made after this method
- has been called.
- """
- with self._condition:
- self._completion_queue.stop()
- self._completion_queue = None
-
- while self._spinning:
- self._condition.wait()
-
- def __enter__(self):
- """See activated.Activated.__enter__ for specification."""
- return self._start()
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- """See activated.Activated.__exit__ for specification."""
- self._stop()
- return False
-
- def start(self):
- """See activated.Activated.start for specification."""
- return self._start()
-
- def stop(self):
- """See activated.Activated.stop for specification."""
- self._stop()
-
- def accept_front_to_back_ticket(self, ticket):
- """See base_interfaces.RearLink.accept_front_to_back_ticket for spec."""
- with self._condition:
- if self._completion_queue is None:
- return
-
- if ticket.kind is base_interfaces.FrontToBackTicket.Kind.COMMENCEMENT:
- self._commence(
- ticket.operation_id, ticket.name, ticket.payload, ticket.timeout)
- elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.CONTINUATION:
- self._continue(ticket.operation_id, ticket.payload)
- elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.COMPLETION:
- self._complete(ticket.operation_id, ticket.payload)
- elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.ENTIRE:
- self._entire(
- ticket.operation_id, ticket.name, ticket.payload, ticket.timeout)
- elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.CANCELLATION:
- self._cancel(ticket.operation_id)
- else:
- # NOTE(nathaniel): All other categories are treated as cancellation.
- self._cancel(ticket.operation_id)
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index 9ab0696702..f0a40dbb35 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -124,6 +124,7 @@ grpc_tracer_set_enabled_type grpc_tracer_set_enabled_import;
grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
grpc_is_binary_header_type grpc_is_binary_header_import;
+grpc_call_error_to_string_type grpc_call_error_to_string_import;
grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -393,6 +394,7 @@ void pygrpc_load_imports(HMODULE library) {
grpc_header_key_is_legal_import = (grpc_header_key_is_legal_type) GetProcAddress(library, "grpc_header_key_is_legal");
grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
+ grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index e50051ddc7..d5e810b7cf 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -322,6 +322,9 @@ extern grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_
typedef int(*grpc_is_binary_header_type)(const char *key, size_t length);
extern grpc_is_binary_header_type grpc_is_binary_header_import;
#define grpc_is_binary_header grpc_is_binary_header_import
+typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
+extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
+#define grpc_call_error_to_string grpc_call_error_to_string_import
typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
#define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/python/grpcio/grpc/beta/implementations.py b/src/python/grpcio/grpc/beta/implementations.py
index 742e94dc65..822f593323 100644
--- a/src/python/grpcio/grpc/beta/implementations.py
+++ b/src/python/grpcio/grpc/beta/implementations.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2015-2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -188,12 +188,13 @@ def insecure_channel(host, port):
Args:
host: The name of the remote host to which to connect.
port: The port of the remote host to which to connect.
+ If None only the 'host' part will be used.
Returns:
A Channel to the remote host through which RPCs may be conducted.
"""
intermediary_low_channel = _intermediary_low.Channel(
- '%s:%d' % (host, port), None)
+ '%s:%d' % (host, port) if port else host, None)
return Channel(intermediary_low_channel._internal, intermediary_low_channel) # pylint: disable=protected-access
@@ -203,13 +204,15 @@ def secure_channel(host, port, channel_credentials):
Args:
host: The name of the remote host to which to connect.
port: The port of the remote host to which to connect.
+ If None only the 'host' part will be used.
channel_credentials: A ChannelCredentials.
Returns:
A secure Channel to the remote host through which RPCs may be conducted.
"""
intermediary_low_channel = _intermediary_low.Channel(
- '%s:%d' % (host, port), channel_credentials._low_credentials)
+ '%s:%d' % (host, port) if port else host,
+ channel_credentials._low_credentials)
return Channel(intermediary_low_channel._internal, intermediary_low_channel) # pylint: disable=protected-access
diff --git a/src/python/grpcio/grpc/early_adopter/__init__.py b/src/python/grpcio/grpc/early_adopter/__init__.py
deleted file mode 100644
index bff74be2c7..0000000000
--- a/src/python/grpcio/grpc/early_adopter/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import warnings
-
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
- 'unmaintained, and no longer tested. Please migrate to the beta '
- 'API.', DeprecationWarning, stacklevel=2)
diff --git a/src/python/grpcio/grpc/early_adopter/implementations.py b/src/python/grpcio/grpc/early_adopter/implementations.py
deleted file mode 100644
index 9c396aa7ad..0000000000
--- a/src/python/grpcio/grpc/early_adopter/implementations.py
+++ /dev/null
@@ -1,262 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Entry points into GRPC."""
-
-import threading
-
-from grpc._adapter import fore as _fore
-from grpc._adapter import rear as _rear
-from grpc.framework.alpha import _face_utilities
-from grpc.framework.alpha import _reexport
-from grpc.framework.alpha import interfaces
-from grpc.framework.base import implementations as _base_implementations
-from grpc.framework.base import util as _base_utilities
-from grpc.framework.face import implementations as _face_implementations
-from grpc.framework.foundation import logging_pool
-
-_DEFAULT_THREAD_POOL_SIZE = 8
-_ONE_DAY_IN_SECONDS = 24 * 60 * 60
-
-
-class _Server(interfaces.Server):
-
- def __init__(
- self, breakdown, port, private_key, certificate_chain,
- thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
- self._lock = threading.Lock()
- self._breakdown = breakdown
- self._port = port
- if private_key is None or certificate_chain is None:
- self._key_chain_pairs = ()
- else:
- self._key_chain_pairs = ((private_key, certificate_chain),)
-
- self._pool_size = thread_pool_size
- self._pool = None
- self._back = None
- self._fore_link = None
-
- def _start(self):
- with self._lock:
- if self._pool is None:
- self._pool = logging_pool.pool(self._pool_size)
- servicer = _face_implementations.servicer(
- self._pool, self._breakdown.implementations, None)
- self._back = _base_implementations.back_link(
- servicer, self._pool, self._pool, self._pool, _ONE_DAY_IN_SECONDS,
- _ONE_DAY_IN_SECONDS)
- self._fore_link = _fore.ForeLink(
- self._pool, self._breakdown.request_deserializers,
- self._breakdown.response_serializers, None, self._key_chain_pairs,
- port=self._port)
- self._back.join_fore_link(self._fore_link)
- self._fore_link.join_rear_link(self._back)
- self._fore_link.start()
- else:
- raise ValueError('Server currently running!')
-
- def _stop(self):
- with self._lock:
- if self._pool is None:
- raise ValueError('Server not running!')
- else:
- self._fore_link.stop()
- _base_utilities.wait_for_idle(self._back)
- self._pool.shutdown(wait=True)
- self._fore_link = None
- self._back = None
- self._pool = None
-
- def __enter__(self):
- self._start()
- return self
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- self._stop()
- return False
-
- def start(self):
- self._start()
-
- def stop(self):
- self._stop()
-
- def port(self):
- with self._lock:
- return self._fore_link.port()
-
-
-class _Stub(interfaces.Stub):
-
- def __init__(
- self, breakdown, host, port, secure, root_certificates, private_key,
- certificate_chain, metadata_transformer=None, server_host_override=None,
- thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
- self._lock = threading.Lock()
- self._breakdown = breakdown
- self._host = host
- self._port = port
- self._secure = secure
- self._root_certificates = root_certificates
- self._private_key = private_key
- self._certificate_chain = certificate_chain
- self._metadata_transformer = metadata_transformer
- self._server_host_override = server_host_override
-
- self._pool_size = thread_pool_size
- self._pool = None
- self._front = None
- self._rear_link = None
- self._understub = None
-
- def __enter__(self):
- with self._lock:
- if self._pool is None:
- self._pool = logging_pool.pool(self._pool_size)
- self._front = _base_implementations.front_link(
- self._pool, self._pool, self._pool)
- self._rear_link = _rear.RearLink(
- self._host, self._port, self._pool,
- self._breakdown.request_serializers,
- self._breakdown.response_deserializers, self._secure,
- self._root_certificates, self._private_key, self._certificate_chain,
- metadata_transformer=self._metadata_transformer,
- server_host_override=self._server_host_override)
- self._front.join_rear_link(self._rear_link)
- self._rear_link.join_fore_link(self._front)
- self._rear_link.start()
- self._understub = _face_implementations.dynamic_stub(
- self._breakdown.face_cardinalities, self._front, self._pool, '')
- else:
- raise ValueError('Tried to __enter__ already-__enter__ed Stub!')
- return self
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- with self._lock:
- if self._pool is None:
- raise ValueError('Tried to __exit__ non-__enter__ed Stub!')
- else:
- self._rear_link.stop()
- _base_utilities.wait_for_idle(self._front)
- self._pool.shutdown(wait=True)
- self._rear_link = None
- self._front = None
- self._pool = None
- self._understub = None
- return False
-
- def __getattr__(self, attr):
- with self._lock:
- if self._pool is None:
- raise ValueError('Tried to __getattr__ non-__enter__ed Stub!')
- else:
- method_cardinality = self._breakdown.cardinalities.get(attr)
- underlying_attr = getattr(
- self._understub, self._breakdown.qualified_names.get(attr), None)
- if method_cardinality is interfaces.Cardinality.UNARY_UNARY:
- return _reexport.unary_unary_sync_async(underlying_attr)
- elif method_cardinality is interfaces.Cardinality.UNARY_STREAM:
- return lambda request, timeout: _reexport.cancellable_iterator(
- underlying_attr(request, timeout))
- elif method_cardinality is interfaces.Cardinality.STREAM_UNARY:
- return _reexport.stream_unary_sync_async(underlying_attr)
- elif method_cardinality is interfaces.Cardinality.STREAM_STREAM:
- return lambda request_iterator, timeout: (
- _reexport.cancellable_iterator(underlying_attr(
- request_iterator, timeout)))
- else:
- raise AttributeError(attr)
-
-
-def stub(
- service_name, methods, host, port, metadata_transformer=None, secure=False,
- root_certificates=None, private_key=None, certificate_chain=None,
- server_host_override=None, thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
- """Constructs an interfaces.Stub.
-
- Args:
- service_name: The package-qualified full name of the service.
- methods: A dictionary from RPC method name to
- interfaces.RpcMethodInvocationDescription describing the RPCs to be
- supported by the created stub. The RPC method names in the dictionary are
- not qualified by the service name or decorated in any other way.
- host: The host to which to connect for RPC service.
- port: The port to which to connect for RPC service.
- metadata_transformer: A callable that given a metadata object produces
- another metadata object to be used in the underlying communication on the
- wire.
- secure: Whether or not to construct the stub with a secure connection.
- root_certificates: The PEM-encoded root certificates or None to ask for
- them to be retrieved from a default location.
- private_key: The PEM-encoded private key to use or None if no private key
- should be used.
- certificate_chain: The PEM-encoded certificate chain to use or None if no
- certificate chain should be used.
- server_host_override: (For testing only) the target name used for SSL
- host name checking.
- thread_pool_size: The maximum number of threads to allow in the backing
- thread pool.
-
- Returns:
- An interfaces.Stub affording RPC invocation.
- """
- breakdown = _face_utilities.break_down_invocation(service_name, methods)
- return _Stub(
- breakdown, host, port, secure, root_certificates, private_key,
- certificate_chain, server_host_override=server_host_override,
- metadata_transformer=metadata_transformer,
- thread_pool_size=thread_pool_size)
-
-
-def server(
- service_name, methods, port, private_key=None, certificate_chain=None,
- thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
- """Constructs an interfaces.Server.
-
- Args:
- service_name: The package-qualified full name of the service.
- methods: A dictionary from RPC method name to
- interfaces.RpcMethodServiceDescription describing the RPCs to
- be serviced by the created server. The RPC method names in the dictionary
- are not qualified by the service name or decorated in any other way.
- port: The port on which to serve or zero to ask for a port to be
- automatically selected.
- private_key: A pem-encoded private key, or None for an insecure server.
- certificate_chain: A pem-encoded certificate chain, or None for an insecure
- server.
- thread_pool_size: The maximum number of threads to allow in the backing
- thread pool.
-
- Returns:
- An interfaces.Server that will serve secure traffic.
- """
- breakdown = _face_utilities.break_down_service(service_name, methods)
- return _Server(breakdown, port, private_key, certificate_chain,
- thread_pool_size=thread_pool_size)
diff --git a/src/python/grpcio/grpc/framework/alpha/_face_utilities.py b/src/python/grpcio/grpc/framework/alpha/_face_utilities.py
deleted file mode 100644
index 15c47d5c92..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/_face_utilities.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import abc
-import collections
-
-import six
-
-# face_interfaces is referenced from specification in this module.
-from grpc.framework.common import cardinality
-from grpc.framework.face import interfaces as face_interfaces # pylint: disable=unused-import
-from grpc.framework.face import utilities as face_utilities
-from grpc.framework.alpha import _reexport
-from grpc.framework.alpha import interfaces
-
-
-def _qualified_name(service_name, method_name):
- return '/%s/%s' % (service_name, method_name)
-
-
-# TODO(nathaniel): This structure is getting bloated; it could be shrunk if
-# implementations._Stub used a generic rather than a dynamic underlying
-# face-layer stub.
-class InvocationBreakdown(six.with_metaclass(abc.ABCMeta)):
- """An intermediate representation of invocation-side views of RPC methods.
-
- Attributes:
- cardinalities: A dictionary from RPC method name to interfaces.Cardinality
- value.
- qualified_names: A dictionary from unqualified RPC method name to
- service-qualified RPC method name.
- face_cardinalities: A dictionary from service-qualified RPC method name to
- to cardinality.Cardinality value.
- request_serializers: A dictionary from service-qualified RPC method name to
- callable behavior to be used serializing request values for the RPC.
- response_deserializers: A dictionary from service-qualified RPC method name
- to callable behavior to be used deserializing response values for the
- RPC.
- """
-
-
-class _EasyInvocationBreakdown(
- InvocationBreakdown,
- collections.namedtuple(
- '_EasyInvocationBreakdown',
- ('cardinalities', 'qualified_names', 'face_cardinalities',
- 'request_serializers', 'response_deserializers'))):
- pass
-
-
-class ServiceBreakdown(six.with_metaclass(abc.ABCMeta)):
- """An intermediate representation of service-side views of RPC methods.
-
- Attributes:
- implementations: A dictionary from service-qualified RPC method name to
- face_interfaces.MethodImplementation implementing the RPC method.
- request_deserializers: A dictionary from service-qualified RPC method name
- to callable behavior to be used deserializing request values for the RPC.
- response_serializers: A dictionary from service-qualified RPC method name
- to callable behavior to be used serializing response values for the RPC.
- """
-
-
-class _EasyServiceBreakdown(
- ServiceBreakdown,
- collections.namedtuple(
- '_EasyServiceBreakdown',
- ('implementations', 'request_deserializers', 'response_serializers'))):
- pass
-
-
-def break_down_invocation(service_name, method_descriptions):
- """Derives an InvocationBreakdown from several RPC method descriptions.
-
- Args:
- service_name: The package-qualified full name of the service.
- method_descriptions: A dictionary from RPC method name to
- interfaces.RpcMethodInvocationDescription describing the RPCs.
-
- Returns:
- An InvocationBreakdown corresponding to the given method descriptions.
- """
- cardinalities = {}
- qualified_names = {}
- face_cardinalities = {}
- request_serializers = {}
- response_deserializers = {}
- for name, method_description in six.iteritems(method_descriptions):
- qualified_name = _qualified_name(service_name, name)
- method_cardinality = method_description.cardinality()
- cardinalities[name] = method_description.cardinality()
- qualified_names[name] = qualified_name
- face_cardinalities[qualified_name] = _reexport.common_cardinality(
- method_cardinality)
- request_serializers[qualified_name] = method_description.serialize_request
- response_deserializers[qualified_name] = (
- method_description.deserialize_response)
- return _EasyInvocationBreakdown(
- cardinalities, qualified_names, face_cardinalities, request_serializers,
- response_deserializers)
-
-
-def break_down_service(service_name, method_descriptions):
- """Derives a ServiceBreakdown from several RPC method descriptions.
-
- Args:
- method_descriptions: A dictionary from RPC method name to
- interfaces.RpcMethodServiceDescription describing the RPCs.
-
- Returns:
- A ServiceBreakdown corresponding to the given method descriptions.
- """
- implementations = {}
- request_deserializers = {}
- response_serializers = {}
- for name, method_description in six.iteritems(method_descriptions):
- qualified_name = _qualified_name(service_name, name)
- method_cardinality = method_description.cardinality()
- if method_cardinality is interfaces.Cardinality.UNARY_UNARY:
- def service(
- request, face_rpc_context,
- service_behavior=method_description.service_unary_unary):
- return service_behavior(
- request, _reexport.rpc_context(face_rpc_context))
- implementations[qualified_name] = face_utilities.unary_unary_inline(
- service)
- elif method_cardinality is interfaces.Cardinality.UNARY_STREAM:
- def service(
- request, face_rpc_context,
- service_behavior=method_description.service_unary_stream):
- return service_behavior(
- request, _reexport.rpc_context(face_rpc_context))
- implementations[qualified_name] = face_utilities.unary_stream_inline(
- service)
- elif method_cardinality is interfaces.Cardinality.STREAM_UNARY:
- def service(
- request_iterator, face_rpc_context,
- service_behavior=method_description.service_stream_unary):
- return service_behavior(
- request_iterator, _reexport.rpc_context(face_rpc_context))
- implementations[qualified_name] = face_utilities.stream_unary_inline(
- service)
- elif method_cardinality is interfaces.Cardinality.STREAM_STREAM:
- def service(
- request_iterator, face_rpc_context,
- service_behavior=method_description.service_stream_stream):
- return service_behavior(
- request_iterator, _reexport.rpc_context(face_rpc_context))
- implementations[qualified_name] = face_utilities.stream_stream_inline(
- service)
- request_deserializers[qualified_name] = (
- method_description.deserialize_request)
- response_serializers[qualified_name] = (
- method_description.serialize_response)
-
- return _EasyServiceBreakdown(
- implementations, request_deserializers, response_serializers)
diff --git a/src/python/grpcio/grpc/framework/alpha/_reexport.py b/src/python/grpcio/grpc/framework/alpha/_reexport.py
deleted file mode 100644
index e027077a77..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/_reexport.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import six
-
-from grpc.framework.common import cardinality
-from grpc.framework.face import exceptions as face_exceptions
-from grpc.framework.face import interfaces as face_interfaces
-from grpc.framework.foundation import future
-from grpc.framework.alpha import exceptions
-from grpc.framework.alpha import interfaces
-
-_EARLY_ADOPTER_CARDINALITY_TO_COMMON_CARDINALITY = {
- interfaces.Cardinality.UNARY_UNARY: cardinality.Cardinality.UNARY_UNARY,
- interfaces.Cardinality.UNARY_STREAM: cardinality.Cardinality.UNARY_STREAM,
- interfaces.Cardinality.STREAM_UNARY: cardinality.Cardinality.STREAM_UNARY,
- interfaces.Cardinality.STREAM_STREAM: cardinality.Cardinality.STREAM_STREAM,
-}
-
-_ABORTION_REEXPORT = {
- face_interfaces.Abortion.CANCELLED: interfaces.Abortion.CANCELLED,
- face_interfaces.Abortion.EXPIRED: interfaces.Abortion.EXPIRED,
- face_interfaces.Abortion.NETWORK_FAILURE:
- interfaces.Abortion.NETWORK_FAILURE,
- face_interfaces.Abortion.SERVICED_FAILURE:
- interfaces.Abortion.SERVICED_FAILURE,
- face_interfaces.Abortion.SERVICER_FAILURE:
- interfaces.Abortion.SERVICER_FAILURE,
-}
-
-
-class _RpcError(exceptions.RpcError):
- pass
-
-
-def _reexport_error(face_rpc_error):
- if isinstance(face_rpc_error, face_exceptions.CancellationError):
- return exceptions.CancellationError()
- elif isinstance(face_rpc_error, face_exceptions.ExpirationError):
- return exceptions.ExpirationError()
- else:
- return _RpcError()
-
-
-def _as_face_abortion_callback(abortion_callback):
- def face_abortion_callback(face_abortion):
- abortion_callback(_ABORTION_REEXPORT[face_abortion])
- return face_abortion_callback
-
-
-class _ReexportedFuture(future.Future):
-
- def __init__(self, face_future):
- self._face_future = face_future
-
- def cancel(self):
- return self._face_future.cancel()
-
- def cancelled(self):
- return self._face_future.cancelled()
-
- def running(self):
- return self._face_future.running()
-
- def done(self):
- return self._face_future.done()
-
- def result(self, timeout=None):
- try:
- return self._face_future.result(timeout=timeout)
- except face_exceptions.RpcError as e:
- raise _reexport_error(e)
-
- def exception(self, timeout=None):
- face_error = self._face_future.exception(timeout=timeout)
- return None if face_error is None else _reexport_error(face_error)
-
- def traceback(self, timeout=None):
- return self._face_future.traceback(timeout=timeout)
-
- def add_done_callback(self, fn):
- self._face_future.add_done_callback(lambda unused_face_future: fn(self))
-
-
-def _call_reexporting_errors(behavior, *args, **kwargs):
- try:
- return behavior(*args, **kwargs)
- except face_exceptions.RpcError as e:
- raise _reexport_error(e)
-
-
-def _reexported_future(face_future):
- return _ReexportedFuture(face_future)
-
-
-class _CancellableIterator(interfaces.CancellableIterator):
-
- def __init__(self, face_cancellable_iterator):
- self._face_cancellable_iterator = face_cancellable_iterator
-
- def __iter__(self):
- return self
-
- def next(self):
- return _call_reexporting_errors(self._face_cancellable_iterator.next)
-
- def cancel(self):
- self._face_cancellable_iterator.cancel()
-
-
-class _RpcContext(interfaces.RpcContext):
-
- def __init__(self, face_rpc_context):
- self._face_rpc_context = face_rpc_context
-
- def is_active(self):
- return self._face_rpc_context.is_active()
-
- def time_remaining(self):
- return self._face_rpc_context.time_remaining()
-
- def add_abortion_callback(self, abortion_callback):
- self._face_rpc_context.add_abortion_callback(
- _as_face_abortion_callback(abortion_callback))
-
-
-class _UnaryUnarySyncAsync(interfaces.UnaryUnarySyncAsync):
-
- def __init__(self, face_unary_unary_multi_callable):
- self._underlying = face_unary_unary_multi_callable
-
- def __call__(self, request, timeout):
- return _call_reexporting_errors(
- self._underlying, request, timeout)
-
- def async(self, request, timeout):
- return _ReexportedFuture(self._underlying.future(request, timeout))
-
-
-class _StreamUnarySyncAsync(interfaces.StreamUnarySyncAsync):
-
- def __init__(self, face_stream_unary_multi_callable):
- self._underlying = face_stream_unary_multi_callable
-
- def __call__(self, request_iterator, timeout):
- return _call_reexporting_errors(
- self._underlying, request_iterator, timeout)
-
- def async(self, request_iterator, timeout):
- return _ReexportedFuture(self._underlying.future(request_iterator, timeout))
-
-
-def common_cardinality(early_adopter_cardinality):
- return _EARLY_ADOPTER_CARDINALITY_TO_COMMON_CARDINALITY[
- early_adopter_cardinality]
-
-
-def common_cardinalities(early_adopter_cardinalities):
- common_cardinalities = {}
- for name, early_adopter_cardinality in six.iteritems(early_adopter_cardinalities):
- common_cardinalities[name] = _EARLY_ADOPTER_CARDINALITY_TO_COMMON_CARDINALITY[
- early_adopter_cardinality]
- return common_cardinalities
-
-
-def rpc_context(face_rpc_context):
- return _RpcContext(face_rpc_context)
-
-
-def cancellable_iterator(face_cancellable_iterator):
- return _CancellableIterator(face_cancellable_iterator)
-
-
-def unary_unary_sync_async(face_unary_unary_multi_callable):
- return _UnaryUnarySyncAsync(face_unary_unary_multi_callable)
-
-
-def stream_unary_sync_async(face_stream_unary_multi_callable):
- return _StreamUnarySyncAsync(face_stream_unary_multi_callable)
diff --git a/src/python/grpcio/grpc/framework/alpha/interfaces.py b/src/python/grpcio/grpc/framework/alpha/interfaces.py
deleted file mode 100644
index 48f144f614..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/interfaces.py
+++ /dev/null
@@ -1,384 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces of GRPC."""
-
-import abc
-import enum
-
-import six
-
-# exceptions is referenced from specification in this module.
-from grpc.framework.alpha import exceptions # pylint: disable=unused-import
-from grpc.framework.foundation import activated
-from grpc.framework.foundation import future
-
-
-@enum.unique
-class Cardinality(enum.Enum):
- """Constants for the four cardinalities of RPC."""
-
- UNARY_UNARY = 'request-unary/response-unary'
- UNARY_STREAM = 'request-unary/response-streaming'
- STREAM_UNARY = 'request-streaming/response-unary'
- STREAM_STREAM = 'request-streaming/response-streaming'
-
-
-@enum.unique
-class Abortion(enum.Enum):
- """Categories of RPC abortion."""
-
- CANCELLED = 'cancelled'
- EXPIRED = 'expired'
- NETWORK_FAILURE = 'network failure'
- SERVICED_FAILURE = 'serviced failure'
- SERVICER_FAILURE = 'servicer failure'
-
-
-class CancellableIterator(six.with_metaclass(abc.ABCMeta)):
- """Implements the Iterator protocol and affords a cancel method."""
-
- @abc.abstractmethod
- def __iter__(self):
- """Returns the self object in accordance with the Iterator protocol."""
- raise NotImplementedError()
-
- def __next__(self):
- return self.next()
-
- @abc.abstractmethod
- def next(self):
- """Returns a value or raises StopIteration per the Iterator protocol."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def cancel(self):
- """Requests cancellation of whatever computation underlies this iterator."""
- raise NotImplementedError()
-
-
-class RpcContext(six.with_metaclass(abc.ABCMeta)):
- """Provides RPC-related information and action."""
-
- @abc.abstractmethod
- def is_active(self):
- """Describes whether the RPC is active or has terminated."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def time_remaining(self):
- """Describes the length of allowed time remaining for the RPC.
- Returns:
- A nonnegative float indicating the length of allowed time in seconds
- remaining for the RPC to complete before it is considered to have timed
- out.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def add_abortion_callback(self, abortion_callback):
- """Registers a callback to be called if the RPC is aborted.
- Args:
- abortion_callback: A callable to be called and passed an Abortion value
- in the event of RPC abortion.
- """
- raise NotImplementedError()
-
-
-class UnaryUnarySyncAsync(six.with_metaclass(abc.ABCMeta)):
- """Affords invoking a unary-unary RPC synchronously or asynchronously.
- Values implementing this interface are directly callable and present an
- "async" method. Both calls take a request value and a numeric timeout.
- Direct invocation of a value of this type invokes its associated RPC and
- blocks until the RPC's response is available. Calling the "async" method
- of a value of this type invokes its associated RPC and immediately returns a
- future.Future bound to the asynchronous execution of the RPC.
- """
-
- @abc.abstractmethod
- def __call__(self, request, timeout):
- """Synchronously invokes the underlying RPC.
- Args:
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
- Returns:
- The response value for the RPC.
- Raises:
- exceptions.RpcError: Indicating that the RPC was aborted.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def async(self, request, timeout):
- """Asynchronously invokes the underlying RPC.
- Args:
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
- Returns:
- A future.Future representing the RPC. In the event of RPC completion, the
- returned Future's result value will be the response value of the RPC.
- In the event of RPC abortion, the returned Future's exception value
- will be an exceptions.RpcError.
- """
- raise NotImplementedError()
-
-
-class StreamUnarySyncAsync(six.with_metaclass(abc.ABCMeta)):
- """Affords invoking a stream-unary RPC synchronously or asynchronously.
- Values implementing this interface are directly callable and present an
- "async" method. Both calls take an iterator of request values and a numeric
- timeout. Direct invocation of a value of this type invokes its associated RPC
- and blocks until the RPC's response is available. Calling the "async" method
- of a value of this type invokes its associated RPC and immediately returns a
- future.Future bound to the asynchronous execution of the RPC.
- """
-
- @abc.abstractmethod
- def __call__(self, request_iterator, timeout):
- """Synchronously invokes the underlying RPC.
-
- Args:
- request_iterator: An iterator that yields request values for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- The response value for the RPC.
-
- Raises:
- exceptions.RpcError: Indicating that the RPC was aborted.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def async(self, request_iterator, timeout):
- """Asynchronously invokes the underlying RPC.
-
- Args:
- request_iterator: An iterator that yields request values for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A future.Future representing the RPC. In the event of RPC completion, the
- returned Future's result value will be the response value of the RPC.
- In the event of RPC abortion, the returned Future's exception value
- will be an exceptions.RpcError.
- """
- raise NotImplementedError()
-
-
-class RpcMethodDescription(six.with_metaclass(abc.ABCMeta)):
- """A type for the common aspects of RPC method descriptions."""
-
- @abc.abstractmethod
- def cardinality(self):
- """Identifies the cardinality of this RpcMethodDescription.
-
- Returns:
- A Cardinality value identifying whether or not this
- RpcMethodDescription is request-unary or request-streaming and
- whether or not it is response-unary or response-streaming.
- """
- raise NotImplementedError()
-
-
-class RpcMethodInvocationDescription(six.with_metaclass(abc.ABCMeta, RpcMethodDescription)):
- """Invocation-side description of an RPC method."""
-
- @abc.abstractmethod
- def serialize_request(self, request):
- """Serializes a request value.
-
- Args:
- request: A request value appropriate for the RPC method described by this
- RpcMethodInvocationDescription.
-
- Returns:
- The serialization of the given request value as a
- bytestring.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def deserialize_response(self, serialized_response):
- """Deserializes a response value.
-
- Args:
- serialized_response: A bytestring that is the serialization of a response
- value appropriate for the RPC method described by this
- RpcMethodInvocationDescription.
-
- Returns:
- A response value corresponding to the given bytestring.
- """
- raise NotImplementedError()
-
-
-class RpcMethodServiceDescription(six.with_metaclass(abc.ABCMeta, RpcMethodDescription)):
- """Service-side description of an RPC method."""
-
- @abc.abstractmethod
- def deserialize_request(self, serialized_request):
- """Deserializes a request value.
-
- Args:
- serialized_request: A bytestring that is the serialization of a request
- value appropriate for the RPC method described by this
- RpcMethodServiceDescription.
-
- Returns:
- A request value corresponding to the given bytestring.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def serialize_response(self, response):
- """Serializes a response value.
-
- Args:
- response: A response value appropriate for the RPC method described by
- this RpcMethodServiceDescription.
-
- Returns:
- The serialization of the given response value as a
- bytestring.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def service_unary_unary(self, request, context):
- """Carries out this RPC.
-
- This method may only be called if the cardinality of this
- RpcMethodServiceDescription is Cardinality.UNARY_UNARY.
-
- Args:
- request: A request value appropriate for the RPC method described by this
- RpcMethodServiceDescription.
- context: An RpcContext object for the RPC.
-
- Returns:
- A response value appropriate for the RPC method described by this
- RpcMethodServiceDescription.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def service_unary_stream(self, request, context):
- """Carries out this RPC.
-
- This method may only be called if the cardinality of this
- RpcMethodServiceDescription is Cardinality.UNARY_STREAM.
-
- Args:
- request: A request value appropriate for the RPC method described by this
- RpcMethodServiceDescription.
- context: An RpcContext object for the RPC.
-
- Yields:
- Zero or more response values appropriate for the RPC method described by
- this RpcMethodServiceDescription.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def service_stream_unary(self, request_iterator, context):
- """Carries out this RPC.
-
- This method may only be called if the cardinality of this
- RpcMethodServiceDescription is Cardinality.STREAM_UNARY.
-
- Args:
- request_iterator: An iterator of request values appropriate for the RPC
- method described by this RpcMethodServiceDescription.
- context: An RpcContext object for the RPC.
-
- Returns:
- A response value appropriate for the RPC method described by this
- RpcMethodServiceDescription.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def service_stream_stream(self, request_iterator, context):
- """Carries out this RPC.
-
- This method may only be called if the cardinality of this
- RpcMethodServiceDescription is Cardinality.STREAM_STREAM.
-
- Args:
- request_iterator: An iterator of request values appropriate for the RPC
- method described by this RpcMethodServiceDescription.
- context: An RpcContext object for the RPC.
-
- Yields:
- Zero or more response values appropriate for the RPC method described by
- this RpcMethodServiceDescription.
- """
- raise NotImplementedError()
-
-
-class Stub(six.with_metaclass(abc.ABCMeta)):
- """A stub with callable RPC method names for attributes.
-
- Instances of this type are context managers and only afford RPC invocation
- when used in context.
-
- Instances of this type, when used in context, respond to attribute access
- as follows: if the requested attribute is the name of a unary-unary RPC
- method, the value of the attribute will be a UnaryUnarySyncAsync with which
- to invoke the RPC method. If the requested attribute is the name of a
- unary-stream RPC method, the value of the attribute will be a callable taking
- a request object and a timeout parameter and returning a CancellableIterator
- that yields the response values of the RPC. If the requested attribute is the
- name of a stream-unary RPC method, the value of the attribute will be a
- StreamUnarySyncAsync with which to invoke the RPC method. If the requested
- attribute is the name of a stream-stream RPC method, the value of the
- attribute will be a callable taking an iterator of request objects and a
- timeout and returning a CancellableIterator that yields the response values
- of the RPC.
-
- In all cases indication of abortion is indicated by raising of
- exceptions.RpcError, exceptions.CancellationError,
- and exceptions.ExpirationError.
- """
-
-
-class Server(six.with_metaclass(abc.ABCMeta, activated.Activated)):
- """A GRPC Server."""
-
- @abc.abstractmethod
- def port(self):
- """Reports the port on which the server is serving.
-
- This method may only be called while the server is activated.
-
- Returns:
- The port on which the server is serving.
- """
- raise NotImplementedError()
diff --git a/src/python/grpcio/grpc/framework/alpha/utilities.py b/src/python/grpcio/grpc/framework/alpha/utilities.py
deleted file mode 100644
index 7d7f78f5e4..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/utilities.py
+++ /dev/null
@@ -1,269 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities for use with GRPC."""
-
-from grpc.framework.alpha import interfaces
-
-
-class _RpcMethodDescription(
- interfaces.RpcMethodInvocationDescription,
- interfaces.RpcMethodServiceDescription):
-
- def __init__(
- self, cardinality, unary_unary, unary_stream, stream_unary,
- stream_stream, request_serializer, request_deserializer,
- response_serializer, response_deserializer):
- self._cardinality = cardinality
- self._unary_unary = unary_unary
- self._unary_stream = unary_stream
- self._stream_unary = stream_unary
- self._stream_stream = stream_stream
- self._request_serializer = request_serializer
- self._request_deserializer = request_deserializer
- self._response_serializer = response_serializer
- self._response_deserializer = response_deserializer
-
- def cardinality(self):
- """See interfaces.RpcMethodDescription.cardinality for specification."""
- return self._cardinality
-
- def serialize_request(self, request):
- """See interfaces.RpcMethodInvocationDescription.serialize_request."""
- return self._request_serializer(request)
-
- def deserialize_request(self, serialized_request):
- """See interfaces.RpcMethodServiceDescription.deserialize_request."""
- return self._request_deserializer(serialized_request)
-
- def serialize_response(self, response):
- """See interfaces.RpcMethodServiceDescription.serialize_response."""
- return self._response_serializer(response)
-
- def deserialize_response(self, serialized_response):
- """See interfaces.RpcMethodInvocationDescription.deserialize_response."""
- return self._response_deserializer(serialized_response)
-
- def service_unary_unary(self, request, context):
- """See interfaces.RpcMethodServiceDescription.service_unary_unary."""
- return self._unary_unary(request, context)
-
- def service_unary_stream(self, request, context):
- """See interfaces.RpcMethodServiceDescription.service_unary_stream."""
- return self._unary_stream(request, context)
-
- def service_stream_unary(self, request_iterator, context):
- """See interfaces.RpcMethodServiceDescription.service_stream_unary."""
- return self._stream_unary(request_iterator, context)
-
- def service_stream_stream(self, request_iterator, context):
- """See interfaces.RpcMethodServiceDescription.service_stream_stream."""
- return self._stream_stream(request_iterator, context)
-
-
-def unary_unary_invocation_description(
- request_serializer, response_deserializer):
- """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
- Args:
- request_serializer: A callable that when called on a request
- value returns a bytestring corresponding to that value.
- response_deserializer: A callable that when called on a
- bytestring returns the response value corresponding to
- that bytestring.
-
- Returns:
- An interfaces.RpcMethodInvocationDescription constructed from the given
- arguments representing a unary-request/unary-response RPC method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.UNARY_UNARY, None, None, None, None,
- request_serializer, None, None, response_deserializer)
-
-
-def unary_stream_invocation_description(
- request_serializer, response_deserializer):
- """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
- Args:
- request_serializer: A callable that when called on a request
- value returns a bytestring corresponding to that value.
- response_deserializer: A callable that when called on a
- bytestring returns the response value corresponding to
- that bytestring.
-
- Returns:
- An interfaces.RpcMethodInvocationDescription constructed from the given
- arguments representing a unary-request/streaming-response RPC method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.UNARY_STREAM, None, None, None, None,
- request_serializer, None, None, response_deserializer)
-
-
-def stream_unary_invocation_description(
- request_serializer, response_deserializer):
- """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
- Args:
- request_serializer: A callable that when called on a request
- value returns a bytestring corresponding to that value.
- response_deserializer: A callable that when called on a
- bytestring returns the response value corresponding to
- that bytestring.
-
- Returns:
- An interfaces.RpcMethodInvocationDescription constructed from the given
- arguments representing a streaming-request/unary-response RPC method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.STREAM_UNARY, None, None, None, None,
- request_serializer, None, None, response_deserializer)
-
-
-def stream_stream_invocation_description(
- request_serializer, response_deserializer):
- """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
- Args:
- request_serializer: A callable that when called on a request
- value returns a bytestring corresponding to that value.
- response_deserializer: A callable that when called on a
- bytestring returns the response value corresponding to
- that bytestring.
-
- Returns:
- An interfaces.RpcMethodInvocationDescription constructed from the given
- arguments representing a streaming-request/streaming-response RPC
- method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.STREAM_STREAM, None, None, None, None,
- request_serializer, None, None, response_deserializer)
-
-
-def unary_unary_service_description(
- behavior, request_deserializer, response_serializer):
- """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
- Args:
- behavior: A callable that implements a unary-unary RPC
- method that accepts a single request and an interfaces.RpcContext and
- returns a single response.
- request_deserializer: A callable that when called on a
- bytestring returns the request value corresponding to that
- bytestring.
- response_serializer: A callable that when called on a
- response value returns the bytestring corresponding to
- that value.
-
- Returns:
- An interfaces.RpcMethodServiceDescription constructed from the given
- arguments representing a unary-request/unary-response RPC
- method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.UNARY_UNARY, behavior, None, None, None,
- None, request_deserializer, response_serializer, None)
-
-
-def unary_stream_service_description(
- behavior, request_deserializer, response_serializer):
- """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
- Args:
- behavior: A callable that implements a unary-stream RPC
- method that accepts a single request and an interfaces.RpcContext
- and returns an iterator of zero or more responses.
- request_deserializer: A callable that when called on a
- bytestring returns the request value corresponding to that
- bytestring.
- response_serializer: A callable that when called on a
- response value returns the bytestring corresponding to
- that value.
-
- Returns:
- An interfaces.RpcMethodServiceDescription constructed from the given
- arguments representing a unary-request/streaming-response
- RPC method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.UNARY_STREAM, None, behavior, None, None,
- None, request_deserializer, response_serializer, None)
-
-
-def stream_unary_service_description(
- behavior, request_deserializer, response_serializer):
- """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
- Args:
- behavior: A callable that implements a stream-unary RPC
- method that accepts an iterator of zero or more requests
- and an interfaces.RpcContext and returns a single response.
- request_deserializer: A callable that when called on a
- bytestring returns the request value corresponding to that
- bytestring.
- response_serializer: A callable that when called on a
- response value returns the bytestring corresponding to
- that value.
-
- Returns:
- An interfaces.RpcMethodServiceDescription constructed from the given
- arguments representing a streaming-request/unary-response
- RPC method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.STREAM_UNARY, None, None, behavior, None,
- None, request_deserializer, response_serializer, None)
-
-
-def stream_stream_service_description(
- behavior, request_deserializer, response_serializer):
- """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
- Args:
- behavior: A callable that implements a stream-stream RPC
- method that accepts an iterator of zero or more requests
- and an interfaces.RpcContext and returns an iterator of
- zero or more responses.
- request_deserializer: A callable that when called on a
- bytestring returns the request value corresponding to that
- bytestring.
- response_serializer: A callable that when called on a
- response value returns the bytestring corresponding to
- that value.
-
- Returns:
- An interfaces.RpcMethodServiceDescription constructed from the given
- arguments representing a
- streaming-request/streaming-response RPC method.
- """
- return _RpcMethodDescription(
- interfaces.Cardinality.STREAM_STREAM, None, None, None, behavior,
- None, request_deserializer, response_serializer, None)
diff --git a/src/python/grpcio/grpc/framework/base/_context.py b/src/python/grpcio/grpc/framework/base/_context.py
deleted file mode 100644
index d84871d639..0000000000
--- a/src/python/grpcio/grpc/framework/base/_context.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation context."""
-
-import time
-
-# _interfaces is referenced from specification in this module.
-from grpc.framework.base import interfaces
-from grpc.framework.base import _interfaces # pylint: disable=unused-import
-
-
-class OperationContext(interfaces.OperationContext):
- """An implementation of interfaces.OperationContext."""
-
- def __init__(
- self, lock, operation_id, local_failure, termination_manager,
- transmission_manager):
- """Constructor.
-
- Args:
- lock: The operation-wide lock.
- operation_id: An object identifying the operation.
- local_failure: Whichever one of interfaces.Outcome.SERVICED_FAILURE or
- interfaces.Outcome.SERVICER_FAILURE describes local failure of
- customer code.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- """
- self._lock = lock
- self._local_failure = local_failure
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._ingestion_manager = None
- self._expiration_manager = None
-
- self.operation_id = operation_id
-
- def set_ingestion_and_expiration_managers(
- self, ingestion_manager, expiration_manager):
- """Sets managers with which this OperationContext cooperates.
-
- Args:
- ingestion_manager: The _interfaces.IngestionManager for the operation.
- expiration_manager: The _interfaces.ExpirationManager for the operation.
- """
- self._ingestion_manager = ingestion_manager
- self._expiration_manager = expiration_manager
-
- def is_active(self):
- """See interfaces.OperationContext.is_active for specification."""
- with self._lock:
- return self._termination_manager.is_active()
-
- def add_termination_callback(self, callback):
- """See interfaces.OperationContext.add_termination_callback."""
- with self._lock:
- self._termination_manager.add_callback(callback)
-
- def time_remaining(self):
- """See interfaces.OperationContext.time_remaining for specification."""
- with self._lock:
- deadline = self._expiration_manager.deadline()
- return max(0.0, deadline - time.time())
-
- def fail(self, exception):
- """See interfaces.OperationContext.fail for specification."""
- with self._lock:
- self._termination_manager.abort(self._local_failure)
- self._transmission_manager.abort(self._local_failure)
- self._ingestion_manager.abort()
- self._expiration_manager.abort()
diff --git a/src/python/grpcio/grpc/framework/base/_emission.py b/src/python/grpcio/grpc/framework/base/_emission.py
deleted file mode 100644
index 1829669a72..0000000000
--- a/src/python/grpcio/grpc/framework/base/_emission.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for handling emitted values."""
-
-from grpc.framework.base import interfaces
-from grpc.framework.base import _interfaces
-
-
-class _EmissionManager(_interfaces.EmissionManager):
- """An implementation of _interfaces.EmissionManager."""
-
- def __init__(
- self, lock, failure_outcome, termination_manager, transmission_manager):
- """Constructor.
-
- Args:
- lock: The operation-wide lock.
- failure_outcome: Whichever one of interfaces.Outcome.SERVICED_FAILURE or
- interfaces.Outcome.SERVICER_FAILURE describes this object's methods
- being called inappropriately by customer code.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- """
- self._lock = lock
- self._failure_outcome = failure_outcome
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._ingestion_manager = None
- self._expiration_manager = None
-
- self._emission_complete = False
-
- def set_ingestion_manager_and_expiration_manager(
- self, ingestion_manager, expiration_manager):
- self._ingestion_manager = ingestion_manager
- self._expiration_manager = expiration_manager
-
- def _abort(self):
- self._termination_manager.abort(self._failure_outcome)
- self._transmission_manager.abort(self._failure_outcome)
- self._ingestion_manager.abort()
- self._expiration_manager.abort()
-
- def consume(self, value):
- with self._lock:
- if self._emission_complete:
- self._abort()
- else:
- self._transmission_manager.inmit(value, False)
-
- def terminate(self):
- with self._lock:
- if not self._emission_complete:
- self._termination_manager.emission_complete()
- self._transmission_manager.inmit(None, True)
- self._emission_complete = True
-
- def consume_and_terminate(self, value):
- with self._lock:
- if self._emission_complete:
- self._abort()
- else:
- self._termination_manager.emission_complete()
- self._transmission_manager.inmit(value, True)
- self._emission_complete = True
-
-
-def front_emission_manager(lock, termination_manager, transmission_manager):
- """Creates an _interfaces.EmissionManager appropriate for front-side use.
-
- Args:
- lock: The operation-wide lock.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the operation.
-
- Returns:
- An _interfaces.EmissionManager appropriate for front-side use.
- """
- return _EmissionManager(
- lock, interfaces.Outcome.SERVICED_FAILURE, termination_manager,
- transmission_manager)
-
-
-def back_emission_manager(lock, termination_manager, transmission_manager):
- """Creates an _interfaces.EmissionManager appropriate for back-side use.
-
- Args:
- lock: The operation-wide lock.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the operation.
-
- Returns:
- An _interfaces.EmissionManager appropriate for back-side use.
- """
- return _EmissionManager(
- lock, interfaces.Outcome.SERVICER_FAILURE, termination_manager,
- transmission_manager)
diff --git a/src/python/grpcio/grpc/framework/base/_ends.py b/src/python/grpcio/grpc/framework/base/_ends.py
deleted file mode 100644
index 176f3ac06e..0000000000
--- a/src/python/grpcio/grpc/framework/base/_ends.py
+++ /dev/null
@@ -1,399 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Implementations of FrontLinks and BackLinks."""
-
-import collections
-import threading
-import uuid
-
-# _interfaces is referenced from specification in this module.
-from grpc.framework.base import _cancellation
-from grpc.framework.base import _context
-from grpc.framework.base import _emission
-from grpc.framework.base import _expiration
-from grpc.framework.base import _ingestion
-from grpc.framework.base import _interfaces # pylint: disable=unused-import
-from grpc.framework.base import _reception
-from grpc.framework.base import _termination
-from grpc.framework.base import _transmission
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-_IDLE_ACTION_EXCEPTION_LOG_MESSAGE = 'Exception calling idle action!'
-
-
-class _EasyOperation(interfaces.Operation):
- """A trivial implementation of interfaces.Operation."""
-
- def __init__(self, emission_manager, context, cancellation_manager):
- """Constructor.
-
- Args:
- emission_manager: The _interfaces.EmissionManager for the operation that
- will accept values emitted by customer code.
- context: The interfaces.OperationContext for use by the customer
- during the operation.
- cancellation_manager: The _interfaces.CancellationManager for the
- operation.
- """
- self.consumer = emission_manager
- self.context = context
- self._cancellation_manager = cancellation_manager
-
- def cancel(self):
- self._cancellation_manager.cancel()
-
-
-class _Endlette(object):
- """Utility for stateful behavior common to Fronts and Backs."""
-
- def __init__(self, pool):
- """Constructor.
-
- Args:
- pool: A thread pool to use when calling registered idle actions.
- """
- self._lock = threading.Lock()
- self._pool = pool
- # Dictionary from operation IDs to ReceptionManager-or-None. A None value
- # indicates an in-progress fire-and-forget operation for which the customer
- # has chosen to ignore results.
- self._operations = {}
- self._stats = {outcome: 0 for outcome in interfaces.Outcome}
- self._idle_actions = []
-
- def terminal_action(self, operation_id):
- """Constructs the termination action for a single operation.
-
- Args:
- operation_id: An operation ID.
-
- Returns:
- A callable that takes an operation outcome for an argument to be used as
- the termination action for the operation associated with the given
- operation ID.
- """
- def termination_action(outcome):
- with self._lock:
- self._stats[outcome] += 1
- self._operations.pop(operation_id, None)
- if not self._operations:
- for action in self._idle_actions:
- self._pool.submit(callable_util.with_exceptions_logged(
- action, _IDLE_ACTION_EXCEPTION_LOG_MESSAGE))
- self._idle_actions = []
- return termination_action
-
- def __enter__(self):
- self._lock.acquire()
-
- def __exit__(self, exc_type, exc_val, exc_tb):
- self._lock.release()
-
- def get_operation(self, operation_id):
- return self._operations.get(operation_id, None)
-
- def add_operation(self, operation_id, operation_reception_manager):
- self._operations[operation_id] = operation_reception_manager
-
- def operation_stats(self):
- with self._lock:
- return dict(self._stats)
-
- def add_idle_action(self, action):
- with self._lock:
- if self._operations:
- self._idle_actions.append(action)
- else:
- self._pool.submit(callable_util.with_exceptions_logged(
- action, _IDLE_ACTION_EXCEPTION_LOG_MESSAGE))
-
-
-class _FrontManagement(
- collections.namedtuple(
- '_FrontManagement',
- ('reception', 'emission', 'operation', 'cancellation'))):
- """Just a trivial helper class to bundle four fellow-traveling objects."""
-
-
-def _front_operate(
- callback, work_pool, transmission_pool, utility_pool,
- termination_action, operation_id, name, payload, complete, timeout,
- subscription, trace_id):
- """Constructs objects necessary for front-side operation management.
-
- Args:
- callback: A callable that accepts interfaces.FrontToBackTickets and
- delivers them to the other side of the operation. Execution of this
- callable may take any arbitrary length of time.
- work_pool: A thread pool in which to execute customer code.
- transmission_pool: A thread pool to use for transmitting to the other side
- of the operation.
- utility_pool: A thread pool for utility tasks.
- termination_action: A no-arg behavior to be called upon operation
- completion.
- operation_id: An object identifying the operation.
- name: The name of the method being called during the operation.
- payload: The first customer-significant value to be transmitted to the other
- side. May be None if there is no such value or if the customer chose not
- to pass it at operation invocation.
- complete: A boolean indicating whether or not additional payloads will be
- supplied by the customer.
- timeout: A length of time in seconds to allow for the operation.
- subscription: A interfaces.ServicedSubscription describing the
- customer's interest in the results of the operation.
- trace_id: A uuid.UUID identifying a set of related operations to which this
- operation belongs. May be None.
-
- Returns:
- A _FrontManagement object bundling together the
- _interfaces.ReceptionManager, _interfaces.EmissionManager,
- _context.OperationContext, and _interfaces.CancellationManager for the
- operation.
- """
- lock = threading.Lock()
- with lock:
- termination_manager = _termination.front_termination_manager(
- work_pool, utility_pool, termination_action, subscription.kind)
- transmission_manager = _transmission.front_transmission_manager(
- lock, transmission_pool, callback, operation_id, name,
- subscription.kind, trace_id, timeout, termination_manager)
- operation_context = _context.OperationContext(
- lock, operation_id, interfaces.Outcome.SERVICED_FAILURE,
- termination_manager, transmission_manager)
- emission_manager = _emission.front_emission_manager(
- lock, termination_manager, transmission_manager)
- ingestion_manager = _ingestion.front_ingestion_manager(
- lock, work_pool, subscription, termination_manager,
- transmission_manager, operation_context)
- expiration_manager = _expiration.front_expiration_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- timeout)
- reception_manager = _reception.front_reception_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager)
- cancellation_manager = _cancellation.CancellationManager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager)
-
- termination_manager.set_expiration_manager(expiration_manager)
- transmission_manager.set_ingestion_and_expiration_managers(
- ingestion_manager, expiration_manager)
- operation_context.set_ingestion_and_expiration_managers(
- ingestion_manager, expiration_manager)
- emission_manager.set_ingestion_manager_and_expiration_manager(
- ingestion_manager, expiration_manager)
- ingestion_manager.set_expiration_manager(expiration_manager)
-
- transmission_manager.inmit(payload, complete)
-
- if subscription.kind is interfaces.ServicedSubscription.Kind.NONE:
- returned_reception_manager = None
- else:
- returned_reception_manager = reception_manager
-
- return _FrontManagement(
- returned_reception_manager, emission_manager, operation_context,
- cancellation_manager)
-
-
-class FrontLink(interfaces.FrontLink):
- """An implementation of interfaces.FrontLink."""
-
- def __init__(self, work_pool, transmission_pool, utility_pool):
- """Constructor.
-
- Args:
- work_pool: A thread pool to be used for executing customer code.
- transmission_pool: A thread pool to be used for transmitting values to
- the other side of the operation.
- utility_pool: A thread pool to be used for utility tasks.
- """
- self._endlette = _Endlette(utility_pool)
- self._work_pool = work_pool
- self._transmission_pool = transmission_pool
- self._utility_pool = utility_pool
- self._callback = None
-
- self._operations = {}
-
- def join_rear_link(self, rear_link):
- """See interfaces.ForeLink.join_rear_link for specification."""
- with self._endlette:
- self._callback = rear_link.accept_front_to_back_ticket
-
- def operation_stats(self):
- """See interfaces.End.operation_stats for specification."""
- return self._endlette.operation_stats()
-
- def add_idle_action(self, action):
- """See interfaces.End.add_idle_action for specification."""
- self._endlette.add_idle_action(action)
-
- def operate(
- self, name, payload, complete, timeout, subscription, trace_id):
- """See interfaces.Front.operate for specification."""
- operation_id = uuid.uuid4()
- with self._endlette:
- management = _front_operate(
- self._callback, self._work_pool, self._transmission_pool,
- self._utility_pool, self._endlette.terminal_action(operation_id),
- operation_id, name, payload, complete, timeout, subscription,
- trace_id)
- self._endlette.add_operation(operation_id, management.reception)
- return _EasyOperation(
- management.emission, management.operation, management.cancellation)
-
- def accept_back_to_front_ticket(self, ticket):
- """See interfaces.End.act for specification."""
- with self._endlette:
- reception_manager = self._endlette.get_operation(ticket.operation_id)
- if reception_manager:
- reception_manager.receive_ticket(ticket)
-
-
-def _back_operate(
- servicer, callback, work_pool, transmission_pool, utility_pool,
- termination_action, ticket, default_timeout, maximum_timeout):
- """Constructs objects necessary for back-side operation management.
-
- Also begins back-side operation by feeding the first received ticket into the
- constructed _interfaces.ReceptionManager.
-
- Args:
- servicer: An interfaces.Servicer for servicing operations.
- callback: A callable that accepts interfaces.BackToFrontTickets and
- delivers them to the other side of the operation. Execution of this
- callable may take any arbitrary length of time.
- work_pool: A thread pool in which to execute customer code.
- transmission_pool: A thread pool to use for transmitting to the other side
- of the operation.
- utility_pool: A thread pool for utility tasks.
- termination_action: A no-arg behavior to be called upon operation
- completion.
- ticket: The first interfaces.FrontToBackTicket received for the operation.
- default_timeout: A length of time in seconds to be used as the default
- time alloted for a single operation.
- maximum_timeout: A length of time in seconds to be used as the maximum
- time alloted for a single operation.
-
- Returns:
- The _interfaces.ReceptionManager to be used for the operation.
- """
- lock = threading.Lock()
- with lock:
- termination_manager = _termination.back_termination_manager(
- work_pool, utility_pool, termination_action, ticket.subscription)
- transmission_manager = _transmission.back_transmission_manager(
- lock, transmission_pool, callback, ticket.operation_id,
- termination_manager, ticket.subscription)
- operation_context = _context.OperationContext(
- lock, ticket.operation_id, interfaces.Outcome.SERVICER_FAILURE,
- termination_manager, transmission_manager)
- emission_manager = _emission.back_emission_manager(
- lock, termination_manager, transmission_manager)
- ingestion_manager = _ingestion.back_ingestion_manager(
- lock, work_pool, servicer, termination_manager,
- transmission_manager, operation_context, emission_manager)
- expiration_manager = _expiration.back_expiration_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- ticket.timeout, default_timeout, maximum_timeout)
- reception_manager = _reception.back_reception_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager)
-
- termination_manager.set_expiration_manager(expiration_manager)
- transmission_manager.set_ingestion_and_expiration_managers(
- ingestion_manager, expiration_manager)
- operation_context.set_ingestion_and_expiration_managers(
- ingestion_manager, expiration_manager)
- emission_manager.set_ingestion_manager_and_expiration_manager(
- ingestion_manager, expiration_manager)
- ingestion_manager.set_expiration_manager(expiration_manager)
-
- reception_manager.receive_ticket(ticket)
-
- return reception_manager
-
-
-class BackLink(interfaces.BackLink):
- """An implementation of interfaces.BackLink."""
-
- def __init__(
- self, servicer, work_pool, transmission_pool, utility_pool,
- default_timeout, maximum_timeout):
- """Constructor.
-
- Args:
- servicer: An interfaces.Servicer for servicing operations.
- work_pool: A thread pool in which to execute customer code.
- transmission_pool: A thread pool to use for transmitting to the other side
- of the operation.
- utility_pool: A thread pool for utility tasks.
- default_timeout: A length of time in seconds to be used as the default
- time alloted for a single operation.
- maximum_timeout: A length of time in seconds to be used as the maximum
- time alloted for a single operation.
- """
- self._endlette = _Endlette(utility_pool)
- self._servicer = servicer
- self._work_pool = work_pool
- self._transmission_pool = transmission_pool
- self._utility_pool = utility_pool
- self._default_timeout = default_timeout
- self._maximum_timeout = maximum_timeout
- self._callback = None
-
- def join_fore_link(self, fore_link):
- """See interfaces.RearLink.join_fore_link for specification."""
- with self._endlette:
- self._callback = fore_link.accept_back_to_front_ticket
-
- def accept_front_to_back_ticket(self, ticket):
- """See interfaces.RearLink.accept_front_to_back_ticket for specification."""
- with self._endlette:
- reception_manager = self._endlette.get_operation(ticket.operation_id)
- if reception_manager is None:
- reception_manager = _back_operate(
- self._servicer, self._callback, self._work_pool,
- self._transmission_pool, self._utility_pool,
- self._endlette.terminal_action(ticket.operation_id), ticket,
- self._default_timeout, self._maximum_timeout)
- self._endlette.add_operation(ticket.operation_id, reception_manager)
- else:
- reception_manager.receive_ticket(ticket)
-
- def operation_stats(self):
- """See interfaces.End.operation_stats for specification."""
- return self._endlette.operation_stats()
-
- def add_idle_action(self, action):
- """See interfaces.End.add_idle_action for specification."""
- self._endlette.add_idle_action(action)
diff --git a/src/python/grpcio/grpc/framework/base/_expiration.py b/src/python/grpcio/grpc/framework/base/_expiration.py
deleted file mode 100644
index 17acbef4c1..0000000000
--- a/src/python/grpcio/grpc/framework/base/_expiration.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation expiration."""
-
-import time
-
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import later
-
-
-class _ExpirationManager(_interfaces.ExpirationManager):
- """An implementation of _interfaces.ExpirationManager."""
-
- def __init__(
- self, lock, termination_manager, transmission_manager, ingestion_manager,
- commencement, timeout, maximum_timeout):
- """Constructor.
-
- Args:
- lock: The operation-wide lock.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- ingestion_manager: The _interfaces.IngestionManager for the operation.
- commencement: The time in seconds since the epoch at which the operation
- began.
- timeout: A length of time in seconds to allow for the operation to run.
- maximum_timeout: The maximum length of time in seconds to allow for the
- operation to run despite what is requested via this object's
- change_timout method.
- """
- self._lock = lock
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._ingestion_manager = ingestion_manager
- self._commencement = commencement
- self._maximum_timeout = maximum_timeout
-
- self._timeout = timeout
- self._deadline = commencement + timeout
- self._index = None
- self._future = None
-
- def _expire(self, index):
- with self._lock:
- if self._future is not None and index == self._index:
- self._future = None
- self._termination_manager.abort(interfaces.Outcome.EXPIRED)
- self._transmission_manager.abort(interfaces.Outcome.EXPIRED)
- self._ingestion_manager.abort()
-
- def start(self):
- self._index = 0
- self._future = later.later(self._timeout, lambda: self._expire(0))
-
- def change_timeout(self, timeout):
- if self._future is not None and timeout != self._timeout:
- self._future.cancel()
- new_timeout = min(timeout, self._maximum_timeout)
- new_index = self._index + 1
- self._timeout = new_timeout
- self._deadline = self._commencement + new_timeout
- self._index = new_index
- delay = self._deadline - time.time()
- self._future = later.later(
- delay, lambda: self._expire(new_index))
-
- def deadline(self):
- return self._deadline
-
- def abort(self):
- if self._future:
- self._future.cancel()
- self._future = None
- self._deadline_index = None
-
-
-def front_expiration_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- timeout):
- """Creates an _interfaces.ExpirationManager appropriate for front-side use.
-
- Args:
- lock: The operation-wide lock.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- ingestion_manager: The _interfaces.IngestionManager for the operation.
- timeout: A length of time in seconds to allow for the operation to run.
-
- Returns:
- An _interfaces.ExpirationManager appropriate for front-side use.
- """
- commencement = time.time()
- expiration_manager = _ExpirationManager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- commencement, timeout, timeout)
- expiration_manager.start()
- return expiration_manager
-
-
-def back_expiration_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- timeout, default_timeout, maximum_timeout):
- """Creates an _interfaces.ExpirationManager appropriate for back-side use.
-
- Args:
- lock: The operation-wide lock.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- ingestion_manager: The _interfaces.IngestionManager for the operation.
- timeout: A length of time in seconds to allow for the operation to run. May
- be None in which case default_timeout will be used.
- default_timeout: The default length of time in seconds to allow for the
- operation to run if the front-side customer has not specified such a value
- (or if the value they specified is not yet known).
- maximum_timeout: The maximum length of time in seconds to allow for the
- operation to run.
-
- Returns:
- An _interfaces.ExpirationManager appropriate for back-side use.
- """
- commencement = time.time()
- expiration_manager = _ExpirationManager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- commencement, default_timeout if timeout is None else timeout,
- maximum_timeout)
- expiration_manager.start()
- return expiration_manager
diff --git a/src/python/grpcio/grpc/framework/base/_ingestion.py b/src/python/grpcio/grpc/framework/base/_ingestion.py
deleted file mode 100644
index c9b10acb77..0000000000
--- a/src/python/grpcio/grpc/framework/base/_ingestion.py
+++ /dev/null
@@ -1,443 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for ingestion during an operation."""
-
-import abc
-import collections
-
-import six
-
-from grpc.framework.base import _constants
-from grpc.framework.base import _interfaces
-from grpc.framework.base import exceptions
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import callable_util
-from grpc.framework.foundation import stream
-
-_CREATE_CONSUMER_EXCEPTION_LOG_MESSAGE = 'Exception initializing ingestion!'
-_CONSUME_EXCEPTION_LOG_MESSAGE = 'Exception during ingestion!'
-
-
-class _ConsumerCreation(collections.namedtuple(
- '_ConsumerCreation', ('consumer', 'remote_error', 'abandoned'))):
- """A sum type for the outcome of ingestion initialization.
-
- Either consumer will be non-None, remote_error will be True, or abandoned will
- be True.
-
- Attributes:
- consumer: A stream.Consumer for ingesting payloads.
- remote_error: A boolean indicating that the consumer could not be created
- due to an error on the remote side of the operation.
- abandoned: A boolean indicating that the consumer creation was abandoned.
- """
-
-
-class _EmptyConsumer(stream.Consumer):
- """A no-operative stream.Consumer that ignores all inputs and calls."""
-
- def consume(self, value):
- """See stream.Consumer.consume for specification."""
-
- def terminate(self):
- """See stream.Consumer.terminate for specification."""
-
- def consume_and_terminate(self, value):
- """See stream.Consumer.consume_and_terminate for specification."""
-
-
-class _ConsumerCreator(six.with_metaclass(abc.ABCMeta)):
- """Common specification of different consumer-creating behavior."""
-
- @abc.abstractmethod
- def create_consumer(self, requirement):
- """Creates the stream.Consumer to which customer payloads will be delivered.
-
- Any exceptions raised by this method should be attributed to and treated as
- defects in the serviced or servicer code called by this method.
-
- Args:
- requirement: A value required by this _ConsumerCreator for consumer
- creation.
-
- Returns:
- A _ConsumerCreation describing the result of consumer creation.
- """
- raise NotImplementedError()
-
-
-class _FrontConsumerCreator(_ConsumerCreator):
- """A _ConsumerCreator appropriate for front-side use."""
-
- def __init__(self, subscription, operation_context):
- """Constructor.
-
- Args:
- subscription: The serviced's interfaces.ServicedSubscription for the
- operation.
- operation_context: The interfaces.OperationContext object for the
- operation.
- """
- self._subscription = subscription
- self._operation_context = operation_context
-
- def create_consumer(self, requirement):
- """See _ConsumerCreator.create_consumer for specification."""
- if self._subscription.kind is interfaces.ServicedSubscription.Kind.FULL:
- try:
- return _ConsumerCreation(
- self._subscription.ingestor.consumer(self._operation_context),
- False, False)
- except abandonment.Abandoned:
- return _ConsumerCreation(None, False, True)
- else:
- return _ConsumerCreation(_EmptyConsumer(), False, False)
-
-
-class _BackConsumerCreator(_ConsumerCreator):
- """A _ConsumerCreator appropriate for back-side use."""
-
- def __init__(self, servicer, operation_context, emission_consumer):
- """Constructor.
-
- Args:
- servicer: The interfaces.Servicer that will service the operation.
- operation_context: The interfaces.OperationContext object for the
- operation.
- emission_consumer: The stream.Consumer object to which payloads emitted
- from the operation will be passed.
- """
- self._servicer = servicer
- self._operation_context = operation_context
- self._emission_consumer = emission_consumer
-
- def create_consumer(self, requirement):
- """See _ConsumerCreator.create_consumer for full specification.
-
- Args:
- requirement: The name of the Servicer method to be called during this
- operation.
-
- Returns:
- A _ConsumerCreation describing the result of consumer creation.
- """
- try:
- return _ConsumerCreation(
- self._servicer.service(
- requirement, self._operation_context, self._emission_consumer),
- False, False)
- except exceptions.NoSuchMethodError:
- return _ConsumerCreation(None, True, False)
- except abandonment.Abandoned:
- return _ConsumerCreation(None, False, True)
-
-
-class _WrappedConsumer(object):
- """Wraps a consumer to catch the exceptions that it is allowed to throw."""
-
- def __init__(self, consumer):
- """Constructor.
-
- Args:
- consumer: A stream.Consumer that may raise abandonment.Abandoned from any
- of its methods.
- """
- self._consumer = consumer
-
- def moar(self, payload, complete):
- """Makes progress with the wrapped consumer.
-
- This method catches all exceptions allowed to be thrown by the wrapped
- consumer. Any exceptions raised by this method should be blamed on the
- customer-supplied consumer.
-
- Args:
- payload: A customer-significant payload object. May be None only if
- complete is True.
- complete: Whether or not the end of the payload sequence has been reached.
- Must be True if payload is None.
-
- Returns:
- True if the wrapped consumer made progress or False if the wrapped
- consumer raised abandonment.Abandoned to indicate its abandonment of
- progress.
- """
- try:
- if payload is None:
- self._consumer.terminate()
- elif complete:
- self._consumer.consume_and_terminate(payload)
- else:
- self._consumer.consume(payload)
- return True
- except abandonment.Abandoned:
- return False
-
-
-class _IngestionManager(_interfaces.IngestionManager):
- """An implementation of _interfaces.IngestionManager."""
-
- def __init__(
- self, lock, pool, consumer_creator, failure_outcome, termination_manager,
- transmission_manager):
- """Constructor.
-
- Args:
- lock: The operation-wide lock.
- pool: A thread pool in which to execute customer code.
- consumer_creator: A _ConsumerCreator wrapping the portion of customer code
- that when called returns the stream.Consumer with which the customer
- code will ingest payload values.
- failure_outcome: Whichever one of
- interfaces.Outcome.SERVICED_FAILURE or
- interfaces.Outcome.SERVICER_FAILURE describes local failure of
- customer code.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- """
- self._lock = lock
- self._pool = pool
- self._consumer_creator = consumer_creator
- self._failure_outcome = failure_outcome
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._expiration_manager = None
-
- self._wrapped_ingestion_consumer = None
- self._pending_ingestion = []
- self._ingestion_complete = False
- self._processing = False
-
- def set_expiration_manager(self, expiration_manager):
- self._expiration_manager = expiration_manager
-
- def _abort_internal_only(self):
- self._wrapped_ingestion_consumer = None
- self._pending_ingestion = None
-
- def _abort_and_notify(self, outcome):
- self._abort_internal_only()
- self._termination_manager.abort(outcome)
- self._transmission_manager.abort(outcome)
- self._expiration_manager.abort()
-
- def _next(self):
- """Computes the next step for ingestion.
-
- Returns:
- A payload, complete, continue triplet indicating what payload (if any) is
- available to feed into customer code, whether or not the sequence of
- payloads has terminated, and whether or not there is anything
- immediately actionable to call customer code to do.
- """
- if self._pending_ingestion is None:
- return None, False, False
- elif self._pending_ingestion:
- payload = self._pending_ingestion.pop(0)
- complete = self._ingestion_complete and not self._pending_ingestion
- return payload, complete, True
- elif self._ingestion_complete:
- return None, True, True
- else:
- return None, False, False
-
- def _process(self, wrapped_ingestion_consumer, payload, complete):
- """A method to call to execute customer code.
-
- This object's lock must *not* be held when calling this method.
-
- Args:
- wrapped_ingestion_consumer: The _WrappedConsumer with which to pass
- payloads to customer code.
- payload: A customer payload. May be None only if complete is True.
- complete: Whether or not the sequence of payloads to pass to the customer
- has concluded.
- """
- while True:
- consumption_outcome = callable_util.call_logging_exceptions(
- wrapped_ingestion_consumer.moar, _CONSUME_EXCEPTION_LOG_MESSAGE,
- payload, complete)
- if consumption_outcome.exception is None:
- if consumption_outcome.return_value:
- with self._lock:
- if complete:
- self._pending_ingestion = None
- self._termination_manager.ingestion_complete()
- return
- else:
- payload, complete, moar = self._next()
- if not moar:
- self._processing = False
- return
- else:
- with self._lock:
- if self._pending_ingestion is not None:
- self._abort_and_notify(self._failure_outcome)
- self._processing = False
- return
- else:
- with self._lock:
- self._abort_and_notify(self._failure_outcome)
- self._processing = False
- return
-
- def start(self, requirement):
- if self._pending_ingestion is not None:
- def initialize():
- consumer_creation_outcome = callable_util.call_logging_exceptions(
- self._consumer_creator.create_consumer,
- _CREATE_CONSUMER_EXCEPTION_LOG_MESSAGE, requirement)
- if consumer_creation_outcome.return_value is None:
- with self._lock:
- self._abort_and_notify(self._failure_outcome)
- self._processing = False
- elif consumer_creation_outcome.return_value.remote_error:
- with self._lock:
- self._abort_and_notify(interfaces.Outcome.RECEPTION_FAILURE)
- self._processing = False
- elif consumer_creation_outcome.return_value.abandoned:
- with self._lock:
- if self._pending_ingestion is not None:
- self._abort_and_notify(self._failure_outcome)
- self._processing = False
- else:
- wrapped_ingestion_consumer = _WrappedConsumer(
- consumer_creation_outcome.return_value.consumer)
- with self._lock:
- self._wrapped_ingestion_consumer = wrapped_ingestion_consumer
- payload, complete, moar = self._next()
- if not moar:
- self._processing = False
- return
-
- self._process(wrapped_ingestion_consumer, payload, complete)
-
- self._pool.submit(
- callable_util.with_exceptions_logged(
- initialize, _constants.INTERNAL_ERROR_LOG_MESSAGE))
- self._processing = True
-
- def consume(self, payload):
- if self._ingestion_complete:
- self._abort_and_notify(self._failure_outcome)
- elif self._pending_ingestion is not None:
- if self._processing:
- self._pending_ingestion.append(payload)
- else:
- self._pool.submit(
- callable_util.with_exceptions_logged(
- self._process, _constants.INTERNAL_ERROR_LOG_MESSAGE),
- self._wrapped_ingestion_consumer, payload, False)
- self._processing = True
-
- def terminate(self):
- if self._ingestion_complete:
- self._abort_and_notify(self._failure_outcome)
- else:
- self._ingestion_complete = True
- if self._pending_ingestion is not None and not self._processing:
- self._pool.submit(
- callable_util.with_exceptions_logged(
- self._process, _constants.INTERNAL_ERROR_LOG_MESSAGE),
- self._wrapped_ingestion_consumer, None, True)
- self._processing = True
-
- def consume_and_terminate(self, payload):
- if self._ingestion_complete:
- self._abort_and_notify(self._failure_outcome)
- else:
- self._ingestion_complete = True
- if self._pending_ingestion is not None:
- if self._processing:
- self._pending_ingestion.append(payload)
- else:
- self._pool.submit(
- callable_util.with_exceptions_logged(
- self._process, _constants.INTERNAL_ERROR_LOG_MESSAGE),
- self._wrapped_ingestion_consumer, payload, True)
- self._processing = True
-
- def abort(self):
- """See _interfaces.IngestionManager.abort for specification."""
- self._abort_internal_only()
-
-
-def front_ingestion_manager(
- lock, pool, subscription, termination_manager, transmission_manager,
- operation_context):
- """Creates an IngestionManager appropriate for front-side use.
-
- Args:
- lock: The operation-wide lock.
- pool: A thread pool in which to execute customer code.
- subscription: A interfaces.ServicedSubscription indicating the
- customer's interest in the results of the operation.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- operation_context: A interfaces.OperationContext for the operation.
-
- Returns:
- An IngestionManager appropriate for front-side use.
- """
- ingestion_manager = _IngestionManager(
- lock, pool, _FrontConsumerCreator(subscription, operation_context),
- interfaces.Outcome.SERVICED_FAILURE, termination_manager,
- transmission_manager)
- ingestion_manager.start(None)
- return ingestion_manager
-
-
-def back_ingestion_manager(
- lock, pool, servicer, termination_manager, transmission_manager,
- operation_context, emission_consumer):
- """Creates an IngestionManager appropriate for back-side use.
-
- Args:
- lock: The operation-wide lock.
- pool: A thread pool in which to execute customer code.
- servicer: A interfaces.Servicer for servicing the operation.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- operation_context: A interfaces.OperationContext for the operation.
- emission_consumer: The _interfaces.EmissionConsumer for the operation.
-
- Returns:
- An IngestionManager appropriate for back-side use.
- """
- ingestion_manager = _IngestionManager(
- lock, pool, _BackConsumerCreator(
- servicer, operation_context, emission_consumer),
- interfaces.Outcome.SERVICER_FAILURE, termination_manager,
- transmission_manager)
- return ingestion_manager
diff --git a/src/python/grpcio/grpc/framework/base/_interfaces.py b/src/python/grpcio/grpc/framework/base/_interfaces.py
deleted file mode 100644
index 6bb9837c4a..0000000000
--- a/src/python/grpcio/grpc/framework/base/_interfaces.py
+++ /dev/null
@@ -1,266 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Package-internal interfaces."""
-
-import abc
-
-import six
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.base import interfaces # pylint: disable=unused-import
-from grpc.framework.foundation import stream
-
-
-class TerminationManager(six.with_metaclass(abc.ABCMeta)):
- """An object responsible for handling the termination of an operation."""
-
- @abc.abstractmethod
- def set_expiration_manager(self, expiration_manager):
- """Sets the ExpirationManager with which this object will cooperate."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def is_active(self):
- """Reports whether or not the operation is active.
-
- Returns:
- True if the operation is active or False if the operation has terminated.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def add_callback(self, callback):
- """Registers a callback to be called on operation termination.
-
- If the operation has already terminated, the callback will be called
- immediately.
-
- Args:
- callback: A callable that will be passed an interfaces.Outcome value.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def emission_complete(self):
- """Indicates that emissions from customer code have completed."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def transmission_complete(self):
- """Indicates that transmissions to the remote end are complete."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def ingestion_complete(self):
- """Indicates that customer code ingestion of received values is complete."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def abort(self, outcome):
- """Indicates that the operation must abort for the indicated reason.
-
- Args:
- outcome: An interfaces.Outcome indicating operation abortion.
- """
- raise NotImplementedError()
-
-
-class TransmissionManager(six.with_metaclass(abc.ABCMeta)):
- """A manager responsible for transmitting to the other end of an operation."""
-
- @abc.abstractmethod
- def inmit(self, emission, complete):
- """Accepts a value for transmission to the other end of the operation.
-
- Args:
- emission: A value of some significance to the customer to be transmitted
- to the other end of the operation. May be None only if complete is True.
- complete: A boolean that if True indicates that customer code has emitted
- all values it intends to emit.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def abort(self, outcome):
- """Indicates that the operation has aborted for the indicated reason.
-
- Args:
- outcome: An interfaces.Outcome indicating operation abortion.
- """
- raise NotImplementedError()
-
-
-class EmissionManager(six.with_metaclass(abc.ABCMeta, stream.Consumer)):
- """A manager of values emitted by customer code."""
-
- @abc.abstractmethod
- def set_ingestion_manager_and_expiration_manager(
- self, ingestion_manager, expiration_manager):
- """Sets two other objects with which this EmissionManager will cooperate.
-
- Args:
- ingestion_manager: The IngestionManager for the operation.
- expiration_manager: The ExpirationManager for the operation.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def consume(self, value):
- """Accepts a value emitted by customer code.
-
- This method should only be called by customer code.
-
- Args:
- value: Any value of significance to the customer.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def terminate(self):
- """Indicates that no more values will be emitted by customer code.
-
- This method should only be called by customer code.
-
- Implementations of this method may be idempotent and forgive customer code
- calling this method more than once.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def consume_and_terminate(self, value):
- """Accepts the last value emitted by customer code.
-
- This method should only be called by customer code.
-
- Args:
- value: Any value of significance to the customer.
- """
- raise NotImplementedError()
-
-
-class IngestionManager(six.with_metaclass(abc.ABCMeta, stream.Consumer)):
- """A manager responsible for executing customer code."""
-
- @abc.abstractmethod
- def set_expiration_manager(self, expiration_manager):
- """Sets the ExpirationManager with which this object will cooperate."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def start(self, requirement):
- """Commences execution of customer code.
-
- Args:
- requirement: Some value unavailable at the time of this object's
- construction that is required to begin executing customer code.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def consume(self, payload):
- """Accepts a customer-significant value to be supplied to customer code.
-
- Args:
- payload: Some customer-significant value.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def terminate(self):
- """Indicates the end of values to be supplied to customer code."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def consume_and_terminate(self, payload):
- """Accepts the last value to be supplied to customer code.
-
- Args:
- payload: Some customer-significant value (and the last such value).
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def abort(self):
- """Indicates to this manager that the operation has aborted."""
- raise NotImplementedError()
-
-
-class ExpirationManager(six.with_metaclass(abc.ABCMeta)):
- """A manager responsible for aborting the operation if it runs out of time."""
-
- @abc.abstractmethod
- def change_timeout(self, timeout):
- """Changes the timeout allotted for the operation.
-
- Operation duration is always measure from the beginning of the operation;
- calling this method changes the operation's allotted time to timeout total
- seconds, not timeout seconds from the time of this method call.
-
- Args:
- timeout: A length of time in seconds to allow for the operation.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def deadline(self):
- """Returns the time until which the operation is allowed to run.
-
- Returns:
- The time (seconds since the epoch) at which the operation will expire.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def abort(self):
- """Indicates to this manager that the operation has aborted."""
- raise NotImplementedError()
-
-
-class ReceptionManager(six.with_metaclass(abc.ABCMeta)):
- """A manager responsible for receiving tickets from the other end."""
-
- @abc.abstractmethod
- def receive_ticket(self, ticket):
- """Handle a ticket from the other side of the operation.
-
- Args:
- ticket: An interfaces.BackToFrontTicket or interfaces.FrontToBackTicket
- appropriate to this end of the operation and this object.
- """
- raise NotImplementedError()
-
-
-class CancellationManager(six.with_metaclass(abc.ABCMeta)):
- """A manager of operation cancellation."""
-
- @abc.abstractmethod
- def cancel(self):
- """Cancels the operation."""
- raise NotImplementedError()
diff --git a/src/python/grpcio/grpc/framework/base/_reception.py b/src/python/grpcio/grpc/framework/base/_reception.py
deleted file mode 100644
index a59c5165f9..0000000000
--- a/src/python/grpcio/grpc/framework/base/_reception.py
+++ /dev/null
@@ -1,400 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for ticket reception."""
-
-import abc
-
-import six
-
-from grpc.framework.base import interfaces
-from grpc.framework.base import _interfaces
-
-_INITIAL_FRONT_TO_BACK_TICKET_KINDS = (
- interfaces.FrontToBackTicket.Kind.COMMENCEMENT,
- interfaces.FrontToBackTicket.Kind.ENTIRE,
-)
-
-
-class _Receiver(six.with_metaclass(abc.ABCMeta)):
- """Common specification of different ticket-handling behavior."""
-
- @abc.abstractmethod
- def abort_if_abortive(self, ticket):
- """Aborts the operation if the ticket is abortive.
-
- Args:
- ticket: A just-arrived ticket.
-
- Returns:
- A boolean indicating whether or not this Receiver aborted the operation
- based on the ticket.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def receive(self, ticket):
- """Handles a just-arrived ticket.
-
- Args:
- ticket: A just-arrived ticket.
-
- Returns:
- A boolean indicating whether or not the ticket was terminal (i.e. whether
- or not non-abortive tickets are legal after this one).
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def reception_failure(self):
- """Aborts the operation with an indication of reception failure."""
- raise NotImplementedError()
-
-
-def _abort(
- outcome, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Indicates abortion with the given outcome to the given managers."""
- termination_manager.abort(outcome)
- transmission_manager.abort(outcome)
- ingestion_manager.abort()
- expiration_manager.abort()
-
-
-def _abort_if_abortive(
- ticket, abortive, termination_manager, transmission_manager,
- ingestion_manager, expiration_manager):
- """Determines a ticket's being abortive and if so aborts the operation.
-
- Args:
- ticket: A just-arrived ticket.
- abortive: A callable that takes a ticket and returns an interfaces.Outcome
- indicating that the operation should be aborted or None indicating that
- the operation should not be aborted.
- termination_manager: The operation's _interfaces.TerminationManager.
- transmission_manager: The operation's _interfaces.TransmissionManager.
- ingestion_manager: The operation's _interfaces.IngestionManager.
- expiration_manager: The operation's _interfaces.ExpirationManager.
-
- Returns:
- True if the operation was aborted; False otherwise.
- """
- abortion_outcome = abortive(ticket)
- if abortion_outcome is None:
- return False
- else:
- _abort(
- abortion_outcome, termination_manager, transmission_manager,
- ingestion_manager, expiration_manager)
- return True
-
-
-def _reception_failure(
- termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Aborts the operation with an indication of reception failure."""
- _abort(
- interfaces.Outcome.RECEPTION_FAILURE, termination_manager,
- transmission_manager, ingestion_manager, expiration_manager)
-
-
-class _BackReceiver(_Receiver):
- """Ticket-handling specific to the back side of an operation."""
-
- def __init__(
- self, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Constructor.
-
- Args:
- termination_manager: The operation's _interfaces.TerminationManager.
- transmission_manager: The operation's _interfaces.TransmissionManager.
- ingestion_manager: The operation's _interfaces.IngestionManager.
- expiration_manager: The operation's _interfaces.ExpirationManager.
- """
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._ingestion_manager = ingestion_manager
- self._expiration_manager = expiration_manager
-
- self._first_ticket_seen = False
- self._last_ticket_seen = False
-
- def _abortive(self, ticket):
- """Determines whether or not (and if so, how) a ticket is abortive.
-
- Args:
- ticket: A just-arrived ticket.
-
- Returns:
- An interfaces.Outcome value describing operation abortion if the
- ticket is abortive or None if the ticket is not abortive.
- """
- if ticket.kind is interfaces.FrontToBackTicket.Kind.CANCELLATION:
- return interfaces.Outcome.CANCELLED
- elif ticket.kind is interfaces.FrontToBackTicket.Kind.EXPIRATION:
- return interfaces.Outcome.EXPIRED
- elif ticket.kind is interfaces.FrontToBackTicket.Kind.SERVICED_FAILURE:
- return interfaces.Outcome.SERVICED_FAILURE
- elif ticket.kind is interfaces.FrontToBackTicket.Kind.RECEPTION_FAILURE:
- return interfaces.Outcome.SERVICED_FAILURE
- elif (ticket.kind in _INITIAL_FRONT_TO_BACK_TICKET_KINDS and
- self._first_ticket_seen):
- return interfaces.Outcome.RECEPTION_FAILURE
- elif self._last_ticket_seen:
- return interfaces.Outcome.RECEPTION_FAILURE
- else:
- return None
-
- def abort_if_abortive(self, ticket):
- """See _Receiver.abort_if_abortive for specification."""
- return _abort_if_abortive(
- ticket, self._abortive, self._termination_manager,
- self._transmission_manager, self._ingestion_manager,
- self._expiration_manager)
-
- def receive(self, ticket):
- """See _Receiver.receive for specification."""
- if ticket.timeout is not None:
- self._expiration_manager.change_timeout(ticket.timeout)
-
- if ticket.kind is interfaces.FrontToBackTicket.Kind.COMMENCEMENT:
- self._first_ticket_seen = True
- self._ingestion_manager.start(ticket.name)
- if ticket.payload is not None:
- self._ingestion_manager.consume(ticket.payload)
- elif ticket.kind is interfaces.FrontToBackTicket.Kind.CONTINUATION:
- self._ingestion_manager.consume(ticket.payload)
- elif ticket.kind is interfaces.FrontToBackTicket.Kind.COMPLETION:
- self._last_ticket_seen = True
- if ticket.payload is None:
- self._ingestion_manager.terminate()
- else:
- self._ingestion_manager.consume_and_terminate(ticket.payload)
- else:
- self._first_ticket_seen = True
- self._last_ticket_seen = True
- self._ingestion_manager.start(ticket.name)
- if ticket.payload is None:
- self._ingestion_manager.terminate()
- else:
- self._ingestion_manager.consume_and_terminate(ticket.payload)
-
- def reception_failure(self):
- """See _Receiver.reception_failure for specification."""
- _reception_failure(
- self._termination_manager, self._transmission_manager,
- self._ingestion_manager, self._expiration_manager)
-
-
-class _FrontReceiver(_Receiver):
- """Ticket-handling specific to the front side of an operation."""
-
- def __init__(
- self, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Constructor.
-
- Args:
- termination_manager: The operation's _interfaces.TerminationManager.
- transmission_manager: The operation's _interfaces.TransmissionManager.
- ingestion_manager: The operation's _interfaces.IngestionManager.
- expiration_manager: The operation's _interfaces.ExpirationManager.
- """
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._ingestion_manager = ingestion_manager
- self._expiration_manager = expiration_manager
-
- self._last_ticket_seen = False
-
- def _abortive(self, ticket):
- """Determines whether or not (and if so, how) a ticket is abortive.
-
- Args:
- ticket: A just-arrived ticket.
-
- Returns:
- An interfaces.Outcome value describing operation abortion if the ticket
- is abortive or None if the ticket is not abortive.
- """
- if ticket.kind is interfaces.BackToFrontTicket.Kind.CANCELLATION:
- return interfaces.Outcome.CANCELLED
- elif ticket.kind is interfaces.BackToFrontTicket.Kind.EXPIRATION:
- return interfaces.Outcome.EXPIRED
- elif ticket.kind is interfaces.BackToFrontTicket.Kind.SERVICER_FAILURE:
- return interfaces.Outcome.SERVICER_FAILURE
- elif ticket.kind is interfaces.BackToFrontTicket.Kind.RECEPTION_FAILURE:
- return interfaces.Outcome.SERVICER_FAILURE
- elif self._last_ticket_seen:
- return interfaces.Outcome.RECEPTION_FAILURE
- else:
- return None
-
- def abort_if_abortive(self, ticket):
- """See _Receiver.abort_if_abortive for specification."""
- return _abort_if_abortive(
- ticket, self._abortive, self._termination_manager,
- self._transmission_manager, self._ingestion_manager,
- self._expiration_manager)
-
- def receive(self, ticket):
- """See _Receiver.receive for specification."""
- if ticket.kind is interfaces.BackToFrontTicket.Kind.CONTINUATION:
- self._ingestion_manager.consume(ticket.payload)
- elif ticket.kind is interfaces.BackToFrontTicket.Kind.COMPLETION:
- self._last_ticket_seen = True
- if ticket.payload is None:
- self._ingestion_manager.terminate()
- else:
- self._ingestion_manager.consume_and_terminate(ticket.payload)
-
- def reception_failure(self):
- """See _Receiver.reception_failure for specification."""
- _reception_failure(
- self._termination_manager, self._transmission_manager,
- self._ingestion_manager, self._expiration_manager)
-
-
-class _ReceptionManager(_interfaces.ReceptionManager):
- """A ReceptionManager based around a _Receiver passed to it."""
-
- def __init__(self, lock, receiver):
- """Constructor.
-
- Args:
- lock: The operation-servicing-wide lock object.
- receiver: A _Receiver responsible for handling received tickets.
- """
- self._lock = lock
- self._receiver = receiver
-
- self._lowest_unseen_sequence_number = 0
- self._out_of_sequence_tickets = {}
- self._completed_sequence_number = None
- self._aborted = False
-
- def _sequence_failure(self, ticket):
- """Determines a just-arrived ticket's sequential legitimacy.
-
- Args:
- ticket: A just-arrived ticket.
-
- Returns:
- True if the ticket is sequentially legitimate; False otherwise.
- """
- if ticket.sequence_number < self._lowest_unseen_sequence_number:
- return True
- elif ticket.sequence_number in self._out_of_sequence_tickets:
- return True
- elif (self._completed_sequence_number is not None and
- self._completed_sequence_number <= ticket.sequence_number):
- return True
- else:
- return False
-
- def _process(self, ticket):
- """Process those tickets ready to be processed.
-
- Args:
- ticket: A just-arrived ticket the sequence number of which matches this
- _ReceptionManager's _lowest_unseen_sequence_number field.
- """
- while True:
- completed = self._receiver.receive(ticket)
- if completed:
- self._out_of_sequence_tickets.clear()
- self._completed_sequence_number = ticket.sequence_number
- self._lowest_unseen_sequence_number = ticket.sequence_number + 1
- return
- else:
- next_ticket = self._out_of_sequence_tickets.pop(
- ticket.sequence_number + 1, None)
- if next_ticket is None:
- self._lowest_unseen_sequence_number = ticket.sequence_number + 1
- return
- else:
- ticket = next_ticket
-
- def receive_ticket(self, ticket):
- """See _interfaces.ReceptionManager.receive_ticket for specification."""
- with self._lock:
- if self._aborted:
- return
- elif self._sequence_failure(ticket):
- self._receiver.reception_failure()
- self._aborted = True
- elif self._receiver.abort_if_abortive(ticket):
- self._aborted = True
- elif ticket.sequence_number == self._lowest_unseen_sequence_number:
- self._process(ticket)
- else:
- self._out_of_sequence_tickets[ticket.sequence_number] = ticket
-
-
-def front_reception_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Creates a _interfaces.ReceptionManager for front-side use.
-
- Args:
- lock: The operation-servicing-wide lock object.
- termination_manager: The operation's _interfaces.TerminationManager.
- transmission_manager: The operation's _interfaces.TransmissionManager.
- ingestion_manager: The operation's _interfaces.IngestionManager.
- expiration_manager: The operation's _interfaces.ExpirationManager.
-
- Returns:
- A _interfaces.ReceptionManager appropriate for front-side use.
- """
- return _ReceptionManager(
- lock, _FrontReceiver(
- termination_manager, transmission_manager, ingestion_manager,
- expiration_manager))
-
-
-def back_reception_manager(
- lock, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Creates a _interfaces.ReceptionManager for back-side use.
-
- Args:
- lock: The operation-servicing-wide lock object.
- termination_manager: The operation's _interfaces.TerminationManager.
- transmission_manager: The operation's _interfaces.TransmissionManager.
- ingestion_manager: The operation's _interfaces.IngestionManager.
- expiration_manager: The operation's _interfaces.ExpirationManager.
-
- Returns:
- A _interfaces.ReceptionManager appropriate for back-side use.
- """
- return _ReceptionManager(
- lock, _BackReceiver(
- termination_manager, transmission_manager, ingestion_manager,
- expiration_manager))
diff --git a/src/python/grpcio/grpc/framework/base/_termination.py b/src/python/grpcio/grpc/framework/base/_termination.py
deleted file mode 100644
index ddcbc60293..0000000000
--- a/src/python/grpcio/grpc/framework/base/_termination.py
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation termination."""
-
-import enum
-
-from grpc.framework.base import _constants
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-_CALLBACK_EXCEPTION_LOG_MESSAGE = 'Exception calling termination callback!'
-
-
-@enum.unique
-class _Requirement(enum.Enum):
- """Symbols indicating events required for termination."""
-
- EMISSION = 'emission'
- TRANSMISSION = 'transmission'
- INGESTION = 'ingestion'
-
-_FRONT_NOT_LISTENING_REQUIREMENTS = (_Requirement.TRANSMISSION,)
-_BACK_NOT_LISTENING_REQUIREMENTS = (
- _Requirement.EMISSION, _Requirement.INGESTION,)
-_LISTENING_REQUIREMENTS = (
- _Requirement.TRANSMISSION, _Requirement.INGESTION,)
-
-
-class _TerminationManager(_interfaces.TerminationManager):
- """An implementation of _interfaces.TerminationManager."""
-
- def __init__(
- self, work_pool, utility_pool, action, requirements, local_failure):
- """Constructor.
-
- Args:
- work_pool: A thread pool in which customer work will be done.
- utility_pool: A thread pool in which work utility work will be done.
- action: An action to call on operation termination.
- requirements: A combination of _Requirement values identifying what
- must finish for the operation to be considered completed.
- local_failure: An interfaces.Outcome specifying what constitutes local
- failure of customer work.
- """
- self._work_pool = work_pool
- self._utility_pool = utility_pool
- self._action = action
- self._local_failure = local_failure
- self._has_locally_failed = False
- self._expiration_manager = None
-
- self._outstanding_requirements = set(requirements)
- self._outcome = None
- self._callbacks = []
-
- def set_expiration_manager(self, expiration_manager):
- self._expiration_manager = expiration_manager
-
- def _terminate(self, outcome):
- """Terminates the operation.
-
- Args:
- outcome: An interfaces.Outcome describing the outcome of the operation.
- """
- self._expiration_manager.abort()
- self._outstanding_requirements = None
- callbacks = list(self._callbacks)
- self._callbacks = None
- self._outcome = outcome
-
- act = callable_util.with_exceptions_logged(
- self._action, _constants.INTERNAL_ERROR_LOG_MESSAGE)
-
- if self._has_locally_failed:
- self._utility_pool.submit(act, outcome)
- else:
- def call_callbacks_and_act(callbacks, outcome):
- for callback in callbacks:
- callback_outcome = callable_util.call_logging_exceptions(
- callback, _CALLBACK_EXCEPTION_LOG_MESSAGE, outcome)
- if callback_outcome.exception is not None:
- outcome = self._local_failure
- break
- self._utility_pool.submit(act, outcome)
-
- self._work_pool.submit(callable_util.with_exceptions_logged(
- call_callbacks_and_act,
- _constants.INTERNAL_ERROR_LOG_MESSAGE),
- callbacks, outcome)
-
- def is_active(self):
- """See _interfaces.TerminationManager.is_active for specification."""
- return self._outstanding_requirements is not None
-
- def add_callback(self, callback):
- """See _interfaces.TerminationManager.add_callback for specification."""
- if not self._has_locally_failed:
- if self._outstanding_requirements is None:
- self._work_pool.submit(
- callable_util.with_exceptions_logged(
- callback, _CALLBACK_EXCEPTION_LOG_MESSAGE), self._outcome)
- else:
- self._callbacks.append(callback)
-
- def emission_complete(self):
- """See superclass method for specification."""
- if self._outstanding_requirements is not None:
- self._outstanding_requirements.discard(_Requirement.EMISSION)
- if not self._outstanding_requirements:
- self._terminate(interfaces.Outcome.COMPLETED)
-
- def transmission_complete(self):
- """See superclass method for specification."""
- if self._outstanding_requirements is not None:
- self._outstanding_requirements.discard(_Requirement.TRANSMISSION)
- if not self._outstanding_requirements:
- self._terminate(interfaces.Outcome.COMPLETED)
-
- def ingestion_complete(self):
- """See superclass method for specification."""
- if self._outstanding_requirements is not None:
- self._outstanding_requirements.discard(_Requirement.INGESTION)
- if not self._outstanding_requirements:
- self._terminate(interfaces.Outcome.COMPLETED)
-
- def abort(self, outcome):
- """See _interfaces.TerminationManager.abort for specification."""
- if outcome is self._local_failure:
- self._has_failed_locally = True
- if self._outstanding_requirements is not None:
- self._terminate(outcome)
-
-
-def front_termination_manager(
- work_pool, utility_pool, action, subscription_kind):
- """Creates a TerminationManager appropriate for front-side use.
-
- Args:
- work_pool: A thread pool in which customer work will be done.
- utility_pool: A thread pool in which work utility work will be done.
- action: An action to call on operation termination.
- subscription_kind: An interfaces.ServicedSubscription.Kind value.
-
- Returns:
- A TerminationManager appropriate for front-side use.
- """
- if subscription_kind is interfaces.ServicedSubscription.Kind.NONE:
- requirements = _FRONT_NOT_LISTENING_REQUIREMENTS
- else:
- requirements = _LISTENING_REQUIREMENTS
-
- return _TerminationManager(
- work_pool, utility_pool, action, requirements,
- interfaces.Outcome.SERVICED_FAILURE)
-
-
-def back_termination_manager(work_pool, utility_pool, action, subscription_kind):
- """Creates a TerminationManager appropriate for back-side use.
-
- Args:
- work_pool: A thread pool in which customer work will be done.
- utility_pool: A thread pool in which work utility work will be done.
- action: An action to call on operation termination.
- subscription_kind: An interfaces.ServicedSubscription.Kind value.
-
- Returns:
- A TerminationManager appropriate for back-side use.
- """
- if subscription_kind is interfaces.ServicedSubscription.Kind.NONE:
- requirements = _BACK_NOT_LISTENING_REQUIREMENTS
- else:
- requirements = _LISTENING_REQUIREMENTS
-
- return _TerminationManager(
- work_pool, utility_pool, action, requirements,
- interfaces.Outcome.SERVICER_FAILURE)
diff --git a/src/python/grpcio/grpc/framework/base/_transmission.py b/src/python/grpcio/grpc/framework/base/_transmission.py
deleted file mode 100644
index e2a25626f1..0000000000
--- a/src/python/grpcio/grpc/framework/base/_transmission.py
+++ /dev/null
@@ -1,429 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for ticket transmission during an operation."""
-
-import abc
-
-import six
-
-from grpc.framework.base import _constants
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-_TRANSMISSION_EXCEPTION_LOG_MESSAGE = 'Exception during transmission!'
-
-_FRONT_TO_BACK_NO_TRANSMISSION_OUTCOMES = (
- interfaces.Outcome.SERVICER_FAILURE,
- )
-_BACK_TO_FRONT_NO_TRANSMISSION_OUTCOMES = (
- interfaces.Outcome.CANCELLED,
- interfaces.Outcome.SERVICED_FAILURE,
- )
-
-_ABORTION_OUTCOME_TO_FRONT_TO_BACK_TICKET_KIND = {
- interfaces.Outcome.CANCELLED:
- interfaces.FrontToBackTicket.Kind.CANCELLATION,
- interfaces.Outcome.EXPIRED:
- interfaces.FrontToBackTicket.Kind.EXPIRATION,
- interfaces.Outcome.RECEPTION_FAILURE:
- interfaces.FrontToBackTicket.Kind.RECEPTION_FAILURE,
- interfaces.Outcome.TRANSMISSION_FAILURE:
- interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE,
- interfaces.Outcome.SERVICED_FAILURE:
- interfaces.FrontToBackTicket.Kind.SERVICED_FAILURE,
- interfaces.Outcome.SERVICER_FAILURE:
- interfaces.FrontToBackTicket.Kind.SERVICER_FAILURE,
-}
-
-_ABORTION_OUTCOME_TO_BACK_TO_FRONT_TICKET_KIND = {
- interfaces.Outcome.CANCELLED:
- interfaces.BackToFrontTicket.Kind.CANCELLATION,
- interfaces.Outcome.EXPIRED:
- interfaces.BackToFrontTicket.Kind.EXPIRATION,
- interfaces.Outcome.RECEPTION_FAILURE:
- interfaces.BackToFrontTicket.Kind.RECEPTION_FAILURE,
- interfaces.Outcome.TRANSMISSION_FAILURE:
- interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE,
- interfaces.Outcome.SERVICED_FAILURE:
- interfaces.BackToFrontTicket.Kind.SERVICED_FAILURE,
- interfaces.Outcome.SERVICER_FAILURE:
- interfaces.BackToFrontTicket.Kind.SERVICER_FAILURE,
-}
-
-
-class _Ticketizer(six.with_metaclass(abc.ABCMeta)):
- """Common specification of different ticket-creating behavior."""
-
- @abc.abstractmethod
- def ticketize(self, operation_id, sequence_number, payload, complete):
- """Creates a ticket indicating ordinary operation progress.
-
- Args:
- operation_id: The operation ID for the current operation.
- sequence_number: A sequence number for the ticket.
- payload: A customer payload object. May be None if sequence_number is
- zero or complete is true.
- complete: A boolean indicating whether or not the ticket should describe
- itself as (but for a later indication of operation abortion) the last
- ticket to be sent.
-
- Returns:
- An object of an appropriate type suitable for transmission to the other
- side of the operation.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def ticketize_abortion(self, operation_id, sequence_number, outcome):
- """Creates a ticket indicating that the operation is aborted.
-
- Args:
- operation_id: The operation ID for the current operation.
- sequence_number: A sequence number for the ticket.
- outcome: An interfaces.Outcome value describing the operation abortion.
-
- Returns:
- An object of an appropriate type suitable for transmission to the other
- side of the operation, or None if transmission is not appropriate for
- the given outcome.
- """
- raise NotImplementedError()
-
-
-class _FrontTicketizer(_Ticketizer):
- """Front-side ticket-creating behavior."""
-
- def __init__(self, name, subscription_kind, trace_id, timeout):
- """Constructor.
-
- Args:
- name: The name of the operation.
- subscription_kind: An interfaces.ServicedSubscription.Kind value
- describing the interest the front has in tickets sent from the back.
- trace_id: A uuid.UUID identifying a set of related operations to which
- this operation belongs.
- timeout: A length of time in seconds to allow for the entire operation.
- """
- self._name = name
- self._subscription_kind = subscription_kind
- self._trace_id = trace_id
- self._timeout = timeout
-
- def ticketize(self, operation_id, sequence_number, payload, complete):
- """See _Ticketizer.ticketize for specification."""
- if sequence_number:
- if complete:
- kind = interfaces.FrontToBackTicket.Kind.COMPLETION
- else:
- kind = interfaces.FrontToBackTicket.Kind.CONTINUATION
- return interfaces.FrontToBackTicket(
- operation_id, sequence_number, kind, self._name,
- self._subscription_kind, self._trace_id, payload, self._timeout)
- else:
- if complete:
- kind = interfaces.FrontToBackTicket.Kind.ENTIRE
- else:
- kind = interfaces.FrontToBackTicket.Kind.COMMENCEMENT
- return interfaces.FrontToBackTicket(
- operation_id, 0, kind, self._name, self._subscription_kind,
- self._trace_id, payload, self._timeout)
-
- def ticketize_abortion(self, operation_id, sequence_number, outcome):
- """See _Ticketizer.ticketize_abortion for specification."""
- if outcome in _FRONT_TO_BACK_NO_TRANSMISSION_OUTCOMES:
- return None
- else:
- kind = _ABORTION_OUTCOME_TO_FRONT_TO_BACK_TICKET_KIND[outcome]
- return interfaces.FrontToBackTicket(
- operation_id, sequence_number, kind, None, None, None, None, None)
-
-
-class _BackTicketizer(_Ticketizer):
- """Back-side ticket-creating behavior."""
-
- def ticketize(self, operation_id, sequence_number, payload, complete):
- """See _Ticketizer.ticketize for specification."""
- if complete:
- kind = interfaces.BackToFrontTicket.Kind.COMPLETION
- else:
- kind = interfaces.BackToFrontTicket.Kind.CONTINUATION
- return interfaces.BackToFrontTicket(
- operation_id, sequence_number, kind, payload)
-
- def ticketize_abortion(self, operation_id, sequence_number, outcome):
- """See _Ticketizer.ticketize_abortion for specification."""
- if outcome in _BACK_TO_FRONT_NO_TRANSMISSION_OUTCOMES:
- return None
- else:
- kind = _ABORTION_OUTCOME_TO_BACK_TO_FRONT_TICKET_KIND[outcome]
- return interfaces.BackToFrontTicket(
- operation_id, sequence_number, kind, None)
-
-
-class TransmissionManager(six.with_metaclass(abc.ABCMeta, _interfaces.TransmissionManager)):
- """A _interfaces.TransmissionManager on which other managers may be set."""
-
- @abc.abstractmethod
- def set_ingestion_and_expiration_managers(
- self, ingestion_manager, expiration_manager):
- """Sets two of the other managers with which this manager may interact.
-
- Args:
- ingestion_manager: The _interfaces.IngestionManager associated with the
- current operation.
- expiration_manager: The _interfaces.ExpirationManager associated with the
- current operation.
- """
- raise NotImplementedError()
-
-
-class _EmptyTransmissionManager(TransmissionManager):
- """A completely no-operative _interfaces.TransmissionManager."""
-
- def set_ingestion_and_expiration_managers(
- self, ingestion_manager, expiration_manager):
- """See overriden method for specification."""
-
- def inmit(self, emission, complete):
- """See _interfaces.TransmissionManager.inmit for specification."""
-
- def abort(self, outcome):
- """See _interfaces.TransmissionManager.abort for specification."""
-
-
-class _TransmittingTransmissionManager(TransmissionManager):
- """A TransmissionManager implementation that sends tickets."""
-
- def __init__(
- self, lock, pool, callback, operation_id, ticketizer,
- termination_manager):
- """Constructor.
-
- Args:
- lock: The operation-servicing-wide lock object.
- pool: A thread pool in which the work of transmitting tickets will be
- performed.
- callback: A callable that accepts tickets and sends them to the other side
- of the operation.
- operation_id: The operation's ID.
- ticketizer: A _Ticketizer for ticket creation.
- termination_manager: The _interfaces.TerminationManager associated with
- this operation.
- """
- self._lock = lock
- self._pool = pool
- self._callback = callback
- self._operation_id = operation_id
- self._ticketizer = ticketizer
- self._termination_manager = termination_manager
- self._ingestion_manager = None
- self._expiration_manager = None
-
- self._emissions = []
- self._emission_complete = False
- self._outcome = None
- self._lowest_unused_sequence_number = 0
- self._transmitting = False
-
- def set_ingestion_and_expiration_managers(
- self, ingestion_manager, expiration_manager):
- """See overridden method for specification."""
- self._ingestion_manager = ingestion_manager
- self._expiration_manager = expiration_manager
-
- def _lead_ticket(self, emission, complete):
- """Creates a ticket suitable for leading off the transmission loop.
-
- Args:
- emission: A customer payload object to be sent to the other side of the
- operation.
- complete: Whether or not the sequence of customer payloads ends with
- the passed object.
-
- Returns:
- A ticket with which to lead off the transmission loop.
- """
- sequence_number = self._lowest_unused_sequence_number
- self._lowest_unused_sequence_number += 1
- return self._ticketizer.ticketize(
- self._operation_id, sequence_number, emission, complete)
-
- def _abortive_response_ticket(self, outcome):
- """Creates a ticket indicating operation abortion.
-
- Args:
- outcome: An interfaces.Outcome value describing operation abortion.
-
- Returns:
- A ticket indicating operation abortion.
- """
- ticket = self._ticketizer.ticketize_abortion(
- self._operation_id, self._lowest_unused_sequence_number, outcome)
- if ticket is None:
- return None
- else:
- self._lowest_unused_sequence_number += 1
- return ticket
-
- def _next_ticket(self):
- """Creates the next ticket to be sent to the other side of the operation.
-
- Returns:
- A (completed, ticket) tuple comprised of a boolean indicating whether or
- not the sequence of tickets has completed normally and a ticket to send
- to the other side if the sequence of tickets hasn't completed. The tuple
- will never have both a True first element and a non-None second element.
- """
- if self._emissions is None:
- return False, None
- elif self._outcome is None:
- if self._emissions:
- payload = self._emissions.pop(0)
- complete = self._emission_complete and not self._emissions
- sequence_number = self._lowest_unused_sequence_number
- self._lowest_unused_sequence_number += 1
- return complete, self._ticketizer.ticketize(
- self._operation_id, sequence_number, payload, complete)
- else:
- return self._emission_complete, None
- else:
- ticket = self._abortive_response_ticket(self._outcome)
- self._emissions = None
- return False, None if ticket is None else ticket
-
- def _transmit(self, ticket):
- """Commences the transmission loop sending tickets.
-
- Args:
- ticket: A ticket to be sent to the other side of the operation.
- """
- def transmit(ticket):
- while True:
- transmission_outcome = callable_util.call_logging_exceptions(
- self._callback, _TRANSMISSION_EXCEPTION_LOG_MESSAGE, ticket)
- if transmission_outcome.exception is None:
- with self._lock:
- complete, ticket = self._next_ticket()
- if ticket is None:
- if complete:
- self._termination_manager.transmission_complete()
- self._transmitting = False
- return
- else:
- with self._lock:
- self._emissions = None
- self._termination_manager.abort(
- interfaces.Outcome.TRANSMISSION_FAILURE)
- self._ingestion_manager.abort()
- self._expiration_manager.abort()
- self._transmitting = False
- return
-
- self._pool.submit(callable_util.with_exceptions_logged(
- transmit, _constants.INTERNAL_ERROR_LOG_MESSAGE), ticket)
- self._transmitting = True
-
- def inmit(self, emission, complete):
- """See _interfaces.TransmissionManager.inmit for specification."""
- if self._emissions is not None and self._outcome is None:
- self._emission_complete = complete
- if self._transmitting:
- self._emissions.append(emission)
- else:
- self._transmit(self._lead_ticket(emission, complete))
-
- def abort(self, outcome):
- """See _interfaces.TransmissionManager.abort for specification."""
- if self._emissions is not None and self._outcome is None:
- self._outcome = outcome
- if not self._transmitting:
- ticket = self._abortive_response_ticket(outcome)
- self._emissions = None
- if ticket is not None:
- self._transmit(ticket)
-
-
-def front_transmission_manager(
- lock, pool, callback, operation_id, name, subscription_kind, trace_id,
- timeout, termination_manager):
- """Creates a TransmissionManager appropriate for front-side use.
-
- Args:
- lock: The operation-servicing-wide lock object.
- pool: A thread pool in which the work of transmitting tickets will be
- performed.
- callback: A callable that accepts tickets and sends them to the other side
- of the operation.
- operation_id: The operation's ID.
- name: The name of the operation.
- subscription_kind: An interfaces.ServicedSubscription.Kind value
- describing the interest the front has in tickets sent from the back.
- trace_id: A uuid.UUID identifying a set of related operations to which
- this operation belongs.
- timeout: A length of time in seconds to allow for the entire operation.
- termination_manager: The _interfaces.TerminationManager associated with
- this operation.
-
- Returns:
- A TransmissionManager appropriate for front-side use.
- """
- return _TransmittingTransmissionManager(
- lock, pool, callback, operation_id, _FrontTicketizer(
- name, subscription_kind, trace_id, timeout),
- termination_manager)
-
-
-def back_transmission_manager(
- lock, pool, callback, operation_id, termination_manager,
- subscription_kind):
- """Creates a TransmissionManager appropriate for back-side use.
-
- Args:
- lock: The operation-servicing-wide lock object.
- pool: A thread pool in which the work of transmitting tickets will be
- performed.
- callback: A callable that accepts tickets and sends them to the other side
- of the operation.
- operation_id: The operation's ID.
- termination_manager: The _interfaces.TerminationManager associated with
- this operation.
- subscription_kind: An interfaces.ServicedSubscription.Kind value
- describing the interest the front has in tickets sent from the back.
-
- Returns:
- A TransmissionManager appropriate for back-side use.
- """
- if subscription_kind is interfaces.ServicedSubscription.Kind.NONE:
- return _EmptyTransmissionManager()
- else:
- return _TransmittingTransmissionManager(
- lock, pool, callback, operation_id, _BackTicketizer(),
- termination_manager)
diff --git a/src/python/grpcio/grpc/framework/base/implementations.py b/src/python/grpcio/grpc/framework/base/implementations.py
deleted file mode 100644
index 5656f9f981..0000000000
--- a/src/python/grpcio/grpc/framework/base/implementations.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Entry points into the ticket-exchange-based base layer implementation."""
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.base import _ends
-from grpc.framework.base import interfaces # pylint: disable=unused-import
-
-
-def front_link(work_pool, transmission_pool, utility_pool):
- """Factory function for creating interfaces.FrontLinks.
-
- Args:
- work_pool: A thread pool to be used for doing work within the created
- FrontLink object.
- transmission_pool: A thread pool to be used within the created FrontLink
- object for transmitting values to a joined RearLink object.
- utility_pool: A thread pool to be used within the created FrontLink object
- for utility tasks.
-
- Returns:
- An interfaces.FrontLink.
- """
- return _ends.FrontLink(work_pool, transmission_pool, utility_pool)
-
-
-def back_link(
- servicer, work_pool, transmission_pool, utility_pool, default_timeout,
- maximum_timeout):
- """Factory function for creating interfaces.BackLinks.
-
- Args:
- servicer: An interfaces.Servicer for servicing operations.
- work_pool: A thread pool to be used for doing work within the created
- BackLink object.
- transmission_pool: A thread pool to be used within the created BackLink
- object for transmitting values to a joined ForeLink object.
- utility_pool: A thread pool to be used within the created BackLink object
- for utility tasks.
- default_timeout: A length of time in seconds to be used as the default
- time alloted for a single operation.
- maximum_timeout: A length of time in seconds to be used as the maximum
- time alloted for a single operation.
-
- Returns:
- An interfaces.BackLink.
- """
- return _ends.BackLink(
- servicer, work_pool, transmission_pool, utility_pool, default_timeout,
- maximum_timeout)
diff --git a/src/python/grpcio/grpc/framework/base/in_memory.py b/src/python/grpcio/grpc/framework/base/in_memory.py
deleted file mode 100644
index c92d0bc663..0000000000
--- a/src/python/grpcio/grpc/framework/base/in_memory.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""In-memory implementations of base layer interfaces."""
-
-import threading
-
-from grpc.framework.base import _constants
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-
-class _Serializer(object):
- """A utility for serializing values that may arrive concurrently."""
-
- def __init__(self, pool):
- self._lock = threading.Lock()
- self._pool = pool
- self._sink = None
- self._spinning = False
- self._values = []
-
- def _spin(self, sink, value):
- while True:
- sink(value)
- with self._lock:
- if self._sink is None or not self._values:
- self._spinning = False
- return
- else:
- sink, value = self._sink, self._values.pop(0)
-
- def set_sink(self, sink):
- with self._lock:
- self._sink = sink
- if sink is not None and self._values and not self._spinning:
- self._spinning = True
- self._pool.submit(
- callable_util.with_exceptions_logged(
- self._spin, _constants.INTERNAL_ERROR_LOG_MESSAGE),
- sink, self._values.pop(0))
-
- def add_value(self, value):
- with self._lock:
- if self._sink and not self._spinning:
- self._spinning = True
- self._pool.submit(
- callable_util.with_exceptions_logged(
- self._spin, _constants.INTERNAL_ERROR_LOG_MESSAGE),
- self._sink, value)
- else:
- self._values.append(value)
-
-
-class Link(interfaces.ForeLink, interfaces.RearLink):
- """A trivial implementation of interfaces.ForeLink and interfaces.RearLink."""
-
- def __init__(self, pool):
- """Constructor.
-
- Args:
- pool: A thread pool to be used for serializing ticket exchange in each
- direction.
- """
- self._front_to_back = _Serializer(pool)
- self._back_to_front = _Serializer(pool)
-
- def join_fore_link(self, fore_link):
- """See interfaces.RearLink.join_fore_link for specification."""
- self._back_to_front.set_sink(fore_link.accept_back_to_front_ticket)
-
- def join_rear_link(self, rear_link):
- """See interfaces.ForeLink.join_rear_link for specification."""
- self._front_to_back.set_sink(rear_link.accept_front_to_back_ticket)
-
- def accept_front_to_back_ticket(self, ticket):
- """See interfaces.ForeLink.accept_front_to_back_ticket for specification."""
- self._front_to_back.add_value(ticket)
-
- def accept_back_to_front_ticket(self, ticket):
- """See interfaces.RearLink.accept_back_to_front_ticket for specification."""
- self._back_to_front.add_value(ticket)
diff --git a/src/python/grpcio/grpc/framework/base/interfaces.py b/src/python/grpcio/grpc/framework/base/interfaces.py
deleted file mode 100644
index 995b51cd5b..0000000000
--- a/src/python/grpcio/grpc/framework/base/interfaces.py
+++ /dev/null
@@ -1,353 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces defined and used by the base layer of RPC Framework."""
-
-import abc
-import collections
-import enum
-
-import six
-
-# stream is referenced from specification in this module.
-from grpc.framework.foundation import stream # pylint: disable=unused-import
-
-
-@enum.unique
-class Outcome(enum.Enum):
- """Operation outcomes."""
-
- COMPLETED = 'completed'
- CANCELLED = 'cancelled'
- EXPIRED = 'expired'
- RECEPTION_FAILURE = 'reception failure'
- TRANSMISSION_FAILURE = 'transmission failure'
- SERVICER_FAILURE = 'servicer failure'
- SERVICED_FAILURE = 'serviced failure'
-
-
-class OperationContext(six.with_metaclass(abc.ABCMeta)):
- """Provides operation-related information and action.
-
- Attributes:
- trace_id: A uuid.UUID identifying a particular set of related operations.
- """
-
- @abc.abstractmethod
- def is_active(self):
- """Describes whether the operation is active or has terminated."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def add_termination_callback(self, callback):
- """Adds a function to be called upon operation termination.
-
- Args:
- callback: A callable that will be passed an Outcome value.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def time_remaining(self):
- """Describes the length of allowed time remaining for the operation.
-
- Returns:
- A nonnegative float indicating the length of allowed time in seconds
- remaining for the operation to complete before it is considered to have
- timed out.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def fail(self, exception):
- """Indicates that the operation has failed.
-
- Args:
- exception: An exception germane to the operation failure. May be None.
- """
- raise NotImplementedError()
-
-
-class Servicer(six.with_metaclass(abc.ABCMeta)):
- """Interface for service implementations."""
-
- @abc.abstractmethod
- def service(self, name, context, output_consumer):
- """Services an operation.
-
- Args:
- name: The name of the operation.
- context: A ServicerContext object affording contextual information and
- actions.
- output_consumer: A stream.Consumer that will accept output values of
- the operation.
-
- Returns:
- A stream.Consumer that will accept input values for the operation.
-
- Raises:
- exceptions.NoSuchMethodError: If this Servicer affords no method with the
- given name.
- abandonment.Abandoned: If the operation has been aborted and there no
- longer is any reason to service the operation.
- """
- raise NotImplementedError()
-
-
-class Operation(six.with_metaclass(abc.ABCMeta)):
- """Representation of an in-progress operation.
-
- Attributes:
- consumer: A stream.Consumer into which payloads constituting the operation's
- input may be passed.
- context: An OperationContext affording information and action about the
- operation.
- """
-
- @abc.abstractmethod
- def cancel(self):
- """Cancels this operation."""
- raise NotImplementedError()
-
-
-class ServicedIngestor(six.with_metaclass(abc.ABCMeta)):
- """Responsible for accepting the result of an operation."""
-
- @abc.abstractmethod
- def consumer(self, operation_context):
- """Affords a consumer to which operation results will be passed.
-
- Args:
- operation_context: An OperationContext object for the current operation.
-
- Returns:
- A stream.Consumer to which the results of the current operation will be
- passed.
-
- Raises:
- abandonment.Abandoned: If the operation has been aborted and there no
- longer is any reason to service the operation.
- """
- raise NotImplementedError()
-
-
-class ServicedSubscription(six.with_metaclass(abc.ABCMeta)):
- """A sum type representing a serviced's interest in an operation.
-
- Attributes:
- kind: A Kind value.
- ingestor: A ServicedIngestor. Must be present if kind is Kind.FULL. Must
- be None if kind is Kind.TERMINATION_ONLY or Kind.NONE.
- """
-
- @enum.unique
- class Kind(enum.Enum):
- """Kinds of subscription."""
-
- FULL = 'full'
- TERMINATION_ONLY = 'termination only'
- NONE = 'none'
-
-
-class End(six.with_metaclass(abc.ABCMeta)):
- """Common type for entry-point objects on both sides of an operation."""
-
- @abc.abstractmethod
- def operation_stats(self):
- """Reports the number of terminated operations broken down by outcome.
-
- Returns:
- A dictionary from Outcome value to an integer identifying the number
- of operations that terminated with that outcome.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def add_idle_action(self, action):
- """Adds an action to be called when this End has no ongoing operations.
-
- Args:
- action: A callable that accepts no arguments.
- """
- raise NotImplementedError()
-
-
-class Front(six.with_metaclass(abc.ABCMeta, End)):
- """Clientish objects that afford the invocation of operations."""
-
- @abc.abstractmethod
- def operate(
- self, name, payload, complete, timeout, subscription, trace_id):
- """Commences an operation.
-
- Args:
- name: The name of the method invoked for the operation.
- payload: An initial payload for the operation. May be None.
- complete: A boolean indicating whether or not additional payloads to be
- sent to the servicer may be supplied after this call.
- timeout: A length of time in seconds to allow for the operation.
- subscription: A ServicedSubscription for the operation.
- trace_id: A uuid.UUID identifying a set of related operations to which
- this operation belongs.
-
- Returns:
- An Operation object affording information and action about the operation
- in progress.
- """
- raise NotImplementedError()
-
-
-class Back(six.with_metaclass(abc.ABCMeta, End)):
- """Serverish objects that perform the work of operations."""
-
-
-class FrontToBackTicket(
- collections.namedtuple(
- 'FrontToBackTicket',
- ['operation_id', 'sequence_number', 'kind', 'name', 'subscription',
- 'trace_id', 'payload', 'timeout'])):
- """A sum type for all values sent from a front to a back.
-
- Attributes:
- operation_id: A unique-with-respect-to-equality hashable object identifying
- a particular operation.
- sequence_number: A zero-indexed integer sequence number identifying the
- ticket's place among all the tickets sent from front to back for this
- particular operation. Must be zero if kind is Kind.COMMENCEMENT or
- Kind.ENTIRE. Must be positive for any other kind.
- kind: A Kind value describing the overall kind of ticket.
- name: The name of an operation. Must be present if kind is Kind.COMMENCEMENT
- or Kind.ENTIRE. Must be None for any other kind.
- subscription: An ServicedSubscription.Kind value describing the interest
- the front has in tickets sent from the back. Must be present if
- kind is Kind.COMMENCEMENT or Kind.ENTIRE. Must be None for any other kind.
- trace_id: A uuid.UUID identifying a set of related operations to which this
- operation belongs. May be None.
- payload: A customer payload object. Must be present if kind is
- Kind.CONTINUATION. Must be None if kind is Kind.CANCELLATION. May be None
- for any other kind.
- timeout: An optional length of time (measured from the beginning of the
- operation) to allow for the entire operation. If None, a default value on
- the back will be used. If present and excessively large, the back may
- limit the operation to a smaller duration of its choice. May be present
- for any ticket kind; setting a value on a later ticket allows fronts
- to request time extensions (or even time reductions!) on in-progress
- operations.
- """
-
- @enum.unique
- class Kind(enum.Enum):
- """Identifies the overall kind of a FrontToBackTicket."""
-
- COMMENCEMENT = 'commencement'
- CONTINUATION = 'continuation'
- COMPLETION = 'completion'
- ENTIRE = 'entire'
- CANCELLATION = 'cancellation'
- EXPIRATION = 'expiration'
- SERVICER_FAILURE = 'servicer failure'
- SERVICED_FAILURE = 'serviced failure'
- RECEPTION_FAILURE = 'reception failure'
- TRANSMISSION_FAILURE = 'transmission failure'
-
-
-class BackToFrontTicket(
- collections.namedtuple(
- 'BackToFrontTicket',
- ['operation_id', 'sequence_number', 'kind', 'payload'])):
- """A sum type for all values sent from a back to a front.
-
- Attributes:
- operation_id: A unique-with-respect-to-equality hashable object identifying
- a particular operation.
- sequence_number: A zero-indexed integer sequence number identifying the
- ticket's place among all the tickets sent from back to front for this
- particular operation.
- kind: A Kind value describing the overall kind of ticket.
- payload: A customer payload object. Must be present if kind is
- Kind.CONTINUATION. May be None if kind is Kind.COMPLETION. Must be None
- otherwise.
- """
-
- @enum.unique
- class Kind(enum.Enum):
- """Identifies the overall kind of a BackToFrontTicket."""
-
- CONTINUATION = 'continuation'
- COMPLETION = 'completion'
- CANCELLATION = 'cancellation'
- EXPIRATION = 'expiration'
- SERVICER_FAILURE = 'servicer failure'
- SERVICED_FAILURE = 'serviced failure'
- RECEPTION_FAILURE = 'reception failure'
- TRANSMISSION_FAILURE = 'transmission failure'
-
-
-class ForeLink(six.with_metaclass(abc.ABCMeta)):
- """Accepts back-to-front tickets and emits front-to-back tickets."""
-
- @abc.abstractmethod
- def accept_back_to_front_ticket(self, ticket):
- """Accept a BackToFrontTicket.
-
- Args:
- ticket: Any BackToFrontTicket.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def join_rear_link(self, rear_link):
- """Mates this object with a peer with which it will exchange tickets."""
- raise NotImplementedError()
-
-
-class RearLink(six.with_metaclass(abc.ABCMeta)):
- """Accepts front-to-back tickets and emits back-to-front tickets."""
-
- @abc.abstractmethod
- def accept_front_to_back_ticket(self, ticket):
- """Accepts a FrontToBackTicket.
-
- Args:
- ticket: Any FrontToBackTicket.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def join_fore_link(self, fore_link):
- """Mates this object with a peer with which it will exchange tickets."""
- raise NotImplementedError()
-
-
-class FrontLink(six.with_metaclass(abc.ABCMeta, Front, ForeLink)):
- """Clientish objects that operate by sending and receiving tickets."""
-
-
-class BackLink(six.with_metaclass(abc.ABCMeta, Back, RearLink)):
- """Serverish objects that operate by sending and receiving tickets."""
diff --git a/src/python/grpcio/grpc/framework/base/util.py b/src/python/grpcio/grpc/framework/base/util.py
deleted file mode 100644
index c832c826cf..0000000000
--- a/src/python/grpcio/grpc/framework/base/util.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities helpful for working with the base layer of RPC Framework."""
-
-import collections
-import threading
-
-from grpc.framework.base import interfaces
-
-
-class _ServicedSubscription(
- collections.namedtuple('_ServicedSubscription', ['kind', 'ingestor']),
- interfaces.ServicedSubscription):
- """See interfaces.ServicedSubscription for specification."""
-
-_NONE_SUBSCRIPTION = _ServicedSubscription(
- interfaces.ServicedSubscription.Kind.NONE, None)
-_TERMINATION_ONLY_SUBSCRIPTION = _ServicedSubscription(
- interfaces.ServicedSubscription.Kind.TERMINATION_ONLY, None)
-
-
-def none_serviced_subscription():
- """Creates a "none" interfaces.ServicedSubscription object.
-
- Returns:
- An interfaces.ServicedSubscription indicating no subscription to an
- operation's results (such as would be the case for a fire-and-forget
- operation invocation).
- """
- return _NONE_SUBSCRIPTION
-
-
-def termination_only_serviced_subscription():
- """Creates a "termination only" interfaces.ServicedSubscription object.
-
- Returns:
- An interfaces.ServicedSubscription indicating that the front-side customer
- is interested only in the overall termination outcome of the operation
- (such as completion or expiration) and would ignore the actual results of
- the operation.
- """
- return _TERMINATION_ONLY_SUBSCRIPTION
-
-
-def full_serviced_subscription(ingestor):
- """Creates a "full" interfaces.ServicedSubscription object.
-
- Args:
- ingestor: An interfaces.ServicedIngestor.
-
- Returns:
- An interfaces.ServicedSubscription object indicating a full
- subscription.
- """
- return _ServicedSubscription(
- interfaces.ServicedSubscription.Kind.FULL, ingestor)
-
-
-def wait_for_idle(end):
- """Waits for an interfaces.End to complete all operations.
-
- Args:
- end: Any interfaces.End.
- """
- event = threading.Event()
- end.add_idle_action(event.set)
- event.wait()
diff --git a/src/python/grpcio/grpc/framework/face/__init__.py b/src/python/grpcio/grpc/framework/face/__init__.py
deleted file mode 100644
index bff74be2c7..0000000000
--- a/src/python/grpcio/grpc/framework/face/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import warnings
-
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
- 'unmaintained, and no longer tested. Please migrate to the beta '
- 'API.', DeprecationWarning, stacklevel=2)
diff --git a/src/python/grpcio/grpc/framework/face/_calls.py b/src/python/grpcio/grpc/framework/face/_calls.py
deleted file mode 100644
index 87edeb0f0e..0000000000
--- a/src/python/grpcio/grpc/framework/face/_calls.py
+++ /dev/null
@@ -1,422 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utility functions for invoking RPCs."""
-
-import sys
-import threading
-
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base import util as base_util
-from grpc.framework.face import _control
-from grpc.framework.face import interfaces
-from grpc.framework.foundation import callable_util
-from grpc.framework.foundation import future
-
-_ITERATOR_EXCEPTION_LOG_MESSAGE = 'Exception iterating over requests!'
-_DONE_CALLBACK_LOG_MESSAGE = 'Exception calling Future "done" callback!'
-
-
-class _RendezvousServicedIngestor(base_interfaces.ServicedIngestor):
-
- def __init__(self, rendezvous):
- self._rendezvous = rendezvous
-
- def consumer(self, operation_context):
- return self._rendezvous
-
-
-class _EventServicedIngestor(base_interfaces.ServicedIngestor):
-
- def __init__(self, result_consumer, abortion_callback):
- self._result_consumer = result_consumer
- self._abortion_callback = abortion_callback
-
- def consumer(self, operation_context):
- operation_context.add_termination_callback(
- _control.as_operation_termination_callback(self._abortion_callback))
- return self._result_consumer
-
-
-def _rendezvous_subscription(rendezvous):
- return base_util.full_serviced_subscription(
- _RendezvousServicedIngestor(rendezvous))
-
-
-def _unary_event_subscription(completion_callback, abortion_callback):
- return base_util.full_serviced_subscription(
- _EventServicedIngestor(
- _control.UnaryConsumer(completion_callback), abortion_callback))
-
-
-def _stream_event_subscription(result_consumer, abortion_callback):
- return base_util.full_serviced_subscription(
- _EventServicedIngestor(result_consumer, abortion_callback))
-
-
-# NOTE(nathaniel): This class has some extremely special semantics around
-# cancellation that allow it to be used by both "blocking" APIs and "futures"
-# APIs.
-#
-# Since futures.Future defines its own exception for cancellation, we want these
-# objects, when returned by methods of a returning-Futures-from-other-methods
-# object, to raise the same exception for cancellation. But that's weird in a
-# blocking API - why should this object, also returned by methods of blocking
-# APIs, raise exceptions from the "future" module? Should we do something like
-# have this class be parameterized by the type of exception that it raises in
-# cancellation circumstances?
-#
-# We don't have to take such a dramatic step: since blocking APIs define no
-# cancellation semantics whatsoever, there is no supported way for
-# blocking-API-users of these objects to cancel RPCs, and thus no supported way
-# for them to see an exception the type of which would be weird to them.
-#
-# Bonus: in both blocking and futures APIs, this object still properly raises
-# exceptions.CancellationError for any *server-side cancellation* of an RPC.
-class _OperationCancellableIterator(interfaces.CancellableIterator):
- """An interfaces.CancellableIterator for response-streaming operations."""
-
- def __init__(self, rendezvous, operation):
- self._lock = threading.Lock()
- self._rendezvous = rendezvous
- self._operation = operation
- self._cancelled = False
-
- def __iter__(self):
- return self
-
- def next(self):
- with self._lock:
- if self._cancelled:
- raise future.CancelledError()
- return next(self._rendezvous)
-
- def cancel(self):
- with self._lock:
- self._cancelled = True
- self._operation.cancel()
- self._rendezvous.set_outcome(base_interfaces.Outcome.CANCELLED)
-
-
-class _OperationFuture(future.Future):
- """A future.Future interface to an operation."""
-
- def __init__(self, rendezvous, operation):
- self._condition = threading.Condition()
- self._rendezvous = rendezvous
- self._operation = operation
-
- self._cancelled = False
- self._computed = False
- self._payload = None
- self._exception = None
- self._traceback = None
- self._callbacks = []
-
- def cancel(self):
- """See future.Future.cancel for specification."""
- with self._condition:
- if not self._cancelled and not self._computed:
- self._operation.cancel()
- self._cancelled = True
- self._condition.notify_all()
- return False
-
- def cancelled(self):
- """See future.Future.cancelled for specification."""
- with self._condition:
- return self._cancelled
-
- def running(self):
- """See future.Future.running for specification."""
- with self._condition:
- return not self._cancelled and not self._computed
-
- def done(self):
- """See future.Future.done for specification."""
- with self._condition:
- return self._cancelled or self._computed
-
- def result(self, timeout=None):
- """See future.Future.result for specification."""
- with self._condition:
- if self._cancelled:
- raise future.CancelledError()
- if self._computed:
- if self._payload is None:
- raise self._exception # pylint: disable=raising-bad-type
- else:
- return self._payload
-
- condition = threading.Condition()
- def notify_condition(unused_future):
- with condition:
- condition.notify()
- self._callbacks.append(notify_condition)
-
- with condition:
- condition.wait(timeout=timeout)
-
- with self._condition:
- if self._cancelled:
- raise future.CancelledError()
- elif self._computed:
- if self._payload is None:
- raise self._exception # pylint: disable=raising-bad-type
- else:
- return self._payload
- else:
- raise future.TimeoutError()
-
- def exception(self, timeout=None):
- """See future.Future.exception for specification."""
- with self._condition:
- if self._cancelled:
- raise future.CancelledError()
- if self._computed:
- return self._exception
-
- condition = threading.Condition()
- def notify_condition(unused_future):
- with condition:
- condition.notify()
- self._callbacks.append(notify_condition)
-
- with condition:
- condition.wait(timeout=timeout)
-
- with self._condition:
- if self._cancelled:
- raise future.CancelledError()
- elif self._computed:
- return self._exception
- else:
- raise future.TimeoutError()
-
- def traceback(self, timeout=None):
- """See future.Future.traceback for specification."""
- with self._condition:
- if self._cancelled:
- raise future.CancelledError()
- if self._computed:
- return self._traceback
-
- condition = threading.Condition()
- def notify_condition(unused_future):
- with condition:
- condition.notify()
- self._callbacks.append(notify_condition)
-
- with condition:
- condition.wait(timeout=timeout)
-
- with self._condition:
- if self._cancelled:
- raise future.CancelledError()
- elif self._computed:
- return self._traceback
- else:
- raise future.TimeoutError()
-
- def add_done_callback(self, fn):
- """See future.Future.add_done_callback for specification."""
- with self._condition:
- if self._callbacks is not None:
- self._callbacks.append(fn)
- return
-
- callable_util.call_logging_exceptions(fn, _DONE_CALLBACK_LOG_MESSAGE, self)
-
- def on_operation_termination(self, operation_outcome):
- """Indicates to this object that the operation has terminated.
-
- Args:
- operation_outcome: A base_interfaces.Outcome value indicating the
- outcome of the operation.
- """
- with self._condition:
- cancelled = self._cancelled
- if cancelled:
- callbacks = list(self._callbacks)
- self._callbacks = None
- else:
- rendezvous = self._rendezvous
-
- if not cancelled:
- payload = None
- exception = None
- traceback = None
- if operation_outcome == base_interfaces.Outcome.COMPLETED:
- try:
- payload = next(rendezvous)
- except Exception as e: # pylint: disable=broad-except
- exception = e
- traceback = sys.exc_info()[2]
- else:
- try:
- # We raise and then immediately catch in order to create a traceback.
- raise _control.abortion_outcome_to_exception(operation_outcome)
- except Exception as e: # pylint: disable=broad-except
- exception = e
- traceback = sys.exc_info()[2]
- with self._condition:
- if not self._cancelled:
- self._computed = True
- self._payload = payload
- self._exception = exception
- self._traceback = traceback
- callbacks = list(self._callbacks)
- self._callbacks = None
-
- for callback in callbacks:
- callable_util.call_logging_exceptions(
- callback, _DONE_CALLBACK_LOG_MESSAGE, self)
-
-
-class _Call(interfaces.Call):
-
- def __init__(self, operation):
- self._operation = operation
- self.context = _control.RpcContext(operation.context)
-
- def cancel(self):
- self._operation.cancel()
-
-
-def blocking_value_in_value_out(front, name, payload, timeout, trace_id):
- """Services in a blocking fashion a value-in value-out servicer method."""
- rendezvous = _control.Rendezvous()
- subscription = _rendezvous_subscription(rendezvous)
- operation = front.operate(
- name, payload, True, timeout, subscription, trace_id)
- operation.context.add_termination_callback(rendezvous.set_outcome)
- return next(rendezvous)
-
-
-def future_value_in_value_out(front, name, payload, timeout, trace_id):
- """Services a value-in value-out servicer method by returning a Future."""
- rendezvous = _control.Rendezvous()
- subscription = _rendezvous_subscription(rendezvous)
- operation = front.operate(
- name, payload, True, timeout, subscription, trace_id)
- operation.context.add_termination_callback(rendezvous.set_outcome)
- operation_future = _OperationFuture(rendezvous, operation)
- operation.context.add_termination_callback(
- operation_future.on_operation_termination)
- return operation_future
-
-
-def inline_value_in_stream_out(front, name, payload, timeout, trace_id):
- """Services a value-in stream-out servicer method."""
- rendezvous = _control.Rendezvous()
- subscription = _rendezvous_subscription(rendezvous)
- operation = front.operate(
- name, payload, True, timeout, subscription, trace_id)
- operation.context.add_termination_callback(rendezvous.set_outcome)
- return _OperationCancellableIterator(rendezvous, operation)
-
-
-def blocking_stream_in_value_out(
- front, name, payload_iterator, timeout, trace_id):
- """Services in a blocking fashion a stream-in value-out servicer method."""
- rendezvous = _control.Rendezvous()
- subscription = _rendezvous_subscription(rendezvous)
- operation = front.operate(name, None, False, timeout, subscription, trace_id)
- operation.context.add_termination_callback(rendezvous.set_outcome)
- for payload in payload_iterator:
- operation.consumer.consume(payload)
- operation.consumer.terminate()
- return next(rendezvous)
-
-
-def future_stream_in_value_out(
- front, name, payload_iterator, timeout, trace_id, pool):
- """Services a stream-in value-out servicer method by returning a Future."""
- rendezvous = _control.Rendezvous()
- subscription = _rendezvous_subscription(rendezvous)
- operation = front.operate(name, None, False, timeout, subscription, trace_id)
- operation.context.add_termination_callback(rendezvous.set_outcome)
- pool.submit(
- callable_util.with_exceptions_logged(
- _control.pipe_iterator_to_consumer, _ITERATOR_EXCEPTION_LOG_MESSAGE),
- payload_iterator, operation.consumer, lambda: True, True)
- operation_future = _OperationFuture(rendezvous, operation)
- operation.context.add_termination_callback(
- operation_future.on_operation_termination)
- return operation_future
-
-
-def inline_stream_in_stream_out(
- front, name, payload_iterator, timeout, trace_id, pool):
- """Services a stream-in stream-out servicer method."""
- rendezvous = _control.Rendezvous()
- subscription = _rendezvous_subscription(rendezvous)
- operation = front.operate(name, None, False, timeout, subscription, trace_id)
- operation.context.add_termination_callback(rendezvous.set_outcome)
- pool.submit(
- callable_util.with_exceptions_logged(
- _control.pipe_iterator_to_consumer, _ITERATOR_EXCEPTION_LOG_MESSAGE),
- payload_iterator, operation.consumer, lambda: True, True)
- return _OperationCancellableIterator(rendezvous, operation)
-
-
-def event_value_in_value_out(
- front, name, payload, completion_callback, abortion_callback, timeout,
- trace_id):
- subscription = _unary_event_subscription(
- completion_callback, abortion_callback)
- operation = front.operate(
- name, payload, True, timeout, subscription, trace_id)
- return _Call(operation)
-
-
-def event_value_in_stream_out(
- front, name, payload, result_payload_consumer, abortion_callback, timeout,
- trace_id):
- subscription = _stream_event_subscription(
- result_payload_consumer, abortion_callback)
- operation = front.operate(
- name, payload, True, timeout, subscription, trace_id)
- return _Call(operation)
-
-
-def event_stream_in_value_out(
- front, name, completion_callback, abortion_callback, timeout, trace_id):
- subscription = _unary_event_subscription(
- completion_callback, abortion_callback)
- operation = front.operate(name, None, False, timeout, subscription, trace_id)
- return _Call(operation), operation.consumer
-
-
-def event_stream_in_stream_out(
- front, name, result_payload_consumer, abortion_callback, timeout, trace_id):
- subscription = _stream_event_subscription(
- result_payload_consumer, abortion_callback)
- operation = front.operate(name, None, False, timeout, subscription, trace_id)
- return _Call(operation), operation.consumer
diff --git a/src/python/grpcio/grpc/framework/face/_control.py b/src/python/grpcio/grpc/framework/face/_control.py
deleted file mode 100644
index 539615efa1..0000000000
--- a/src/python/grpcio/grpc/framework/face/_control.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for translating between sync and async control flow."""
-
-import threading
-
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import stream
-
-INTERNAL_ERROR_LOG_MESSAGE = ':-( RPC Framework (Face) Internal Error! :-('
-
-_OPERATION_OUTCOME_TO_RPC_ABORTION = {
- base_interfaces.Outcome.CANCELLED: interfaces.Abortion.CANCELLED,
- base_interfaces.Outcome.EXPIRED: interfaces.Abortion.EXPIRED,
- base_interfaces.Outcome.RECEPTION_FAILURE:
- interfaces.Abortion.NETWORK_FAILURE,
- base_interfaces.Outcome.TRANSMISSION_FAILURE:
- interfaces.Abortion.NETWORK_FAILURE,
- base_interfaces.Outcome.SERVICED_FAILURE:
- interfaces.Abortion.SERVICED_FAILURE,
- base_interfaces.Outcome.SERVICER_FAILURE:
- interfaces.Abortion.SERVICER_FAILURE,
-}
-
-
-def _as_operation_termination_callback(rpc_abortion_callback):
- def operation_termination_callback(operation_outcome):
- rpc_abortion = _OPERATION_OUTCOME_TO_RPC_ABORTION.get(
- operation_outcome, None)
- if rpc_abortion is not None:
- rpc_abortion_callback(rpc_abortion)
- return operation_termination_callback
-
-
-def _abortion_outcome_to_exception(abortion_outcome):
- if abortion_outcome == base_interfaces.Outcome.CANCELLED:
- return exceptions.CancellationError()
- elif abortion_outcome == base_interfaces.Outcome.EXPIRED:
- return exceptions.ExpirationError()
- elif abortion_outcome == base_interfaces.Outcome.SERVICER_FAILURE:
- return exceptions.ServicerError()
- elif abortion_outcome == base_interfaces.Outcome.SERVICED_FAILURE:
- return exceptions.ServicedError()
- else:
- return exceptions.NetworkError()
-
-
-class UnaryConsumer(stream.Consumer):
- """A stream.Consumer that should only ever be passed one value."""
-
- def __init__(self, on_termination):
- self._on_termination = on_termination
- self._value = None
-
- def consume(self, value):
- self._value = value
-
- def terminate(self):
- self._on_termination(self._value)
-
- def consume_and_terminate(self, value):
- self._on_termination(value)
-
-
-class Rendezvous(stream.Consumer):
- """A rendez-vous with stream.Consumer and iterator interfaces."""
-
- def __init__(self):
- self._condition = threading.Condition()
- self._values = []
- self._values_completed = False
- self._abortion = None
-
- def consume(self, value):
- with self._condition:
- self._values.append(value)
- self._condition.notify()
-
- def terminate(self):
- with self._condition:
- self._values_completed = True
- self._condition.notify()
-
- def consume_and_terminate(self, value):
- with self._condition:
- self._values.append(value)
- self._values_completed = True
- self._condition.notify()
-
- def __iter__(self):
- return self
-
- def __next__(self):
- return self.next()
-
- def next(self):
- with self._condition:
- while ((self._abortion is None) and
- (not self._values) and
- (not self._values_completed)):
- self._condition.wait()
- if self._abortion is not None:
- raise _abortion_outcome_to_exception(self._abortion)
- elif self._values:
- return self._values.pop(0)
- elif self._values_completed:
- raise StopIteration()
- else:
- raise AssertionError('Unreachable code reached!')
-
- def set_outcome(self, outcome):
- with self._condition:
- if outcome is not base_interfaces.Outcome.COMPLETED:
- self._abortion = outcome
- self._condition.notify()
-
-
-class RpcContext(interfaces.RpcContext):
- """A wrapped base_interfaces.OperationContext."""
-
- def __init__(self, operation_context):
- self._operation_context = operation_context
-
- def is_active(self):
- return self._operation_context.is_active()
-
- def time_remaining(self):
- return self._operation_context.time_remaining()
-
- def add_abortion_callback(self, abortion_callback):
- self._operation_context.add_termination_callback(
- _as_operation_termination_callback(abortion_callback))
-
-
-def pipe_iterator_to_consumer(iterator, consumer, active, terminate):
- """Pipes values emitted from an iterator to a stream.Consumer.
-
- Args:
- iterator: An iterator from which values will be emitted.
- consumer: A stream.Consumer to which values will be passed.
- active: A no-argument callable that returns True if the work being done by
- this function is still valid and should not be abandoned and False if the
- work being done by this function should be abandoned.
- terminate: A boolean indicating whether or not this function should
- terminate the given consumer after passing to it all values emitted by the
- given iterator.
-
- Raises:
- abandonment.Abandoned: If this function quits early after seeing False
- returned by the active function passed to it.
- Exception: This function raises whatever exceptions are raised by iterating
- over the given iterator.
- """
- for element in iterator:
- if not active():
- raise abandonment.Abandoned()
-
- consumer.consume(element)
-
- if not active():
- raise abandonment.Abandoned()
- if terminate:
- consumer.terminate()
-
-
-def abortion_outcome_to_exception(abortion_outcome):
- return _abortion_outcome_to_exception(abortion_outcome)
-
-
-def as_operation_termination_callback(rpc_abortion_callback):
- return _as_operation_termination_callback(rpc_abortion_callback)
diff --git a/src/python/grpcio/grpc/framework/face/_service.py b/src/python/grpcio/grpc/framework/face/_service.py
deleted file mode 100644
index cdf413356a..0000000000
--- a/src/python/grpcio/grpc/framework/face/_service.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Behaviors for servicing RPCs."""
-
-# base_interfaces and interfaces are referenced from specification in this
-# module.
-from grpc.framework.base import interfaces as base_interfaces # pylint: disable=unused-import
-from grpc.framework.face import _control
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces # pylint: disable=unused-import
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import callable_util
-from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_util
-
-
-class _ValueInStreamOutConsumer(stream.Consumer):
- """A stream.Consumer that maps inputs one-to-many onto outputs."""
-
- def __init__(self, behavior, context, downstream):
- """Constructor.
-
- Args:
- behavior: A callable that takes a single value and an
- interfaces.RpcContext and returns a generator of arbitrarily many
- values.
- context: An interfaces.RpcContext.
- downstream: A stream.Consumer to which to pass the values generated by the
- given behavior.
- """
- self._behavior = behavior
- self._context = context
- self._downstream = downstream
-
- def consume(self, value):
- _control.pipe_iterator_to_consumer(
- self._behavior(value, self._context), self._downstream,
- self._context.is_active, False)
-
- def terminate(self):
- self._downstream.terminate()
-
- def consume_and_terminate(self, value):
- _control.pipe_iterator_to_consumer(
- self._behavior(value, self._context), self._downstream,
- self._context.is_active, True)
-
-
-def _pool_wrap(behavior, operation_context):
- """Wraps an operation-related behavior so that it may be called in a pool.
-
- Args:
- behavior: A callable related to carrying out an operation.
- operation_context: A base_interfaces.OperationContext for the operation.
-
- Returns:
- A callable that when called carries out the behavior of the given callable
- and handles whatever exceptions it raises appropriately.
- """
- def translation(*args):
- try:
- behavior(*args)
- except (
- abandonment.Abandoned,
- exceptions.ExpirationError,
- exceptions.CancellationError,
- exceptions.ServicedError,
- exceptions.NetworkError) as e:
- if operation_context.is_active():
- operation_context.fail(e)
- except Exception as e:
- operation_context.fail(e)
- return callable_util.with_exceptions_logged(
- translation, _control.INTERNAL_ERROR_LOG_MESSAGE)
-
-
-def adapt_inline_value_in_value_out(method):
- def adaptation(response_consumer, operation_context):
- rpc_context = _control.RpcContext(operation_context)
- return stream_util.TransformingConsumer(
- lambda request: method(request, rpc_context), response_consumer)
- return adaptation
-
-
-def adapt_inline_value_in_stream_out(method):
- def adaptation(response_consumer, operation_context):
- rpc_context = _control.RpcContext(operation_context)
- return _ValueInStreamOutConsumer(method, rpc_context, response_consumer)
- return adaptation
-
-
-def adapt_inline_stream_in_value_out(method, pool):
- def adaptation(response_consumer, operation_context):
- rendezvous = _control.Rendezvous()
- operation_context.add_termination_callback(rendezvous.set_outcome)
- def in_pool_thread():
- response_consumer.consume_and_terminate(
- method(rendezvous, _control.RpcContext(operation_context)))
- pool.submit(_pool_wrap(in_pool_thread, operation_context))
- return rendezvous
- return adaptation
-
-
-def adapt_inline_stream_in_stream_out(method, pool):
- """Adapts an interfaces.InlineStreamInStreamOutMethod for use with Consumers.
-
- RPCs may be serviced by calling the return value of this function, passing
- request values to the stream.Consumer returned from that call, and receiving
- response values from the stream.Consumer passed to that call.
-
- Args:
- method: An interfaces.InlineStreamInStreamOutMethod.
- pool: A thread pool.
-
- Returns:
- A callable that takes a stream.Consumer and a
- base_interfaces.OperationContext and returns a stream.Consumer.
- """
- def adaptation(response_consumer, operation_context):
- rendezvous = _control.Rendezvous()
- operation_context.add_termination_callback(rendezvous.set_outcome)
- def in_pool_thread():
- _control.pipe_iterator_to_consumer(
- method(rendezvous, _control.RpcContext(operation_context)),
- response_consumer, operation_context.is_active, True)
- pool.submit(_pool_wrap(in_pool_thread, operation_context))
- return rendezvous
- return adaptation
-
-
-def adapt_event_value_in_value_out(method):
- def adaptation(response_consumer, operation_context):
- def on_payload(payload):
- method(
- payload, response_consumer.consume_and_terminate,
- _control.RpcContext(operation_context))
- return _control.UnaryConsumer(on_payload)
- return adaptation
-
-
-def adapt_event_value_in_stream_out(method):
- def adaptation(response_consumer, operation_context):
- def on_payload(payload):
- method(
- payload, response_consumer, _control.RpcContext(operation_context))
- return _control.UnaryConsumer(on_payload)
- return adaptation
-
-
-def adapt_event_stream_in_value_out(method):
- def adaptation(response_consumer, operation_context):
- rpc_context = _control.RpcContext(operation_context)
- return method(response_consumer.consume_and_terminate, rpc_context)
- return adaptation
-
-
-def adapt_event_stream_in_stream_out(method):
- def adaptation(response_consumer, operation_context):
- return method(response_consumer, _control.RpcContext(operation_context))
- return adaptation
diff --git a/src/python/grpcio/grpc/framework/face/demonstration.py b/src/python/grpcio/grpc/framework/face/demonstration.py
deleted file mode 100644
index f6b4b609ff..0000000000
--- a/src/python/grpcio/grpc/framework/face/demonstration.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Demonstration-suitable implementation of the face layer of RPC Framework."""
-
-from grpc.framework.base import util as _base_util
-from grpc.framework.base import implementations as _base_implementations
-from grpc.framework.face import implementations
-from grpc.framework.foundation import logging_pool
-
-_POOL_SIZE_LIMIT = 5
-
-_MAXIMUM_TIMEOUT = 90
-
-
-class LinkedPair(object):
- """A Server and Stub that are linked to one another.
-
- Attributes:
- server: A Server.
- stub: A Stub.
- """
-
- def shut_down(self):
- """Shuts down this object and releases its resources."""
- raise NotImplementedError()
-
-
-class _LinkedPair(LinkedPair):
-
- def __init__(self, server, stub, front, back, pools):
- self.server = server
- self.stub = stub
- self._front = front
- self._back = back
- self._pools = pools
-
- def shut_down(self):
- _base_util.wait_for_idle(self._front)
- _base_util.wait_for_idle(self._back)
-
- for pool in self._pools:
- pool.shutdown(wait=True)
-
-
-def server_and_stub(
- default_timeout,
- inline_value_in_value_out_methods=None,
- inline_value_in_stream_out_methods=None,
- inline_stream_in_value_out_methods=None,
- inline_stream_in_stream_out_methods=None,
- event_value_in_value_out_methods=None,
- event_value_in_stream_out_methods=None,
- event_stream_in_value_out_methods=None,
- event_stream_in_stream_out_methods=None,
- multi_method=None):
- """Creates a Server and Stub linked together for use."""
- front_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- front_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- front_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- back_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- back_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- back_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- stub_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- pools = (
- front_work_pool, front_transmission_pool, front_utility_pool,
- back_work_pool, back_transmission_pool, back_utility_pool,
- stub_pool)
-
- servicer = implementations.servicer(
- back_work_pool,
- inline_value_in_value_out_methods=inline_value_in_value_out_methods,
- inline_value_in_stream_out_methods=inline_value_in_stream_out_methods,
- inline_stream_in_value_out_methods=inline_stream_in_value_out_methods,
- inline_stream_in_stream_out_methods=inline_stream_in_stream_out_methods,
- event_value_in_value_out_methods=event_value_in_value_out_methods,
- event_value_in_stream_out_methods=event_value_in_stream_out_methods,
- event_stream_in_value_out_methods=event_stream_in_value_out_methods,
- event_stream_in_stream_out_methods=event_stream_in_stream_out_methods,
- multi_method=multi_method)
-
- front = _base_implementations.front_link(
- front_work_pool, front_transmission_pool, front_utility_pool)
- back = _base_implementations.back_link(
- servicer, back_work_pool, back_transmission_pool, back_utility_pool,
- default_timeout, _MAXIMUM_TIMEOUT)
- front.join_rear_link(back)
- back.join_fore_link(front)
-
- stub = implementations.stub(front, stub_pool)
-
- return _LinkedPair(implementations.server(), stub, front, back, pools)
diff --git a/src/python/grpcio/grpc/framework/face/implementations.py b/src/python/grpcio/grpc/framework/face/implementations.py
deleted file mode 100644
index 96055b4130..0000000000
--- a/src/python/grpcio/grpc/framework/face/implementations.py
+++ /dev/null
@@ -1,320 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Entry points into the Face layer of RPC Framework."""
-
-import six
-
-from grpc.framework.common import cardinality
-from grpc.framework.common import style
-from grpc.framework.base import exceptions as _base_exceptions
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.face import _calls
-from grpc.framework.face import _service
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces
-
-
-class _BaseServicer(base_interfaces.Servicer):
-
- def __init__(self, methods, multi_method):
- self._methods = methods
- self._multi_method = multi_method
-
- def service(self, name, context, output_consumer):
- method = self._methods.get(name, None)
- if method is not None:
- return method(output_consumer, context)
- elif self._multi_method is not None:
- try:
- return self._multi_method.service(name, output_consumer, context)
- except exceptions.NoSuchMethodError:
- raise _base_exceptions.NoSuchMethodError()
- else:
- raise _base_exceptions.NoSuchMethodError()
-
-
-class _UnaryUnaryMultiCallable(interfaces.UnaryUnaryMultiCallable):
-
- def __init__(self, front, name):
- self._front = front
- self._name = name
-
- def __call__(self, request, timeout):
- return _calls.blocking_value_in_value_out(
- self._front, self._name, request, timeout, 'unused trace ID')
-
- def future(self, request, timeout):
- return _calls.future_value_in_value_out(
- self._front, self._name, request, timeout, 'unused trace ID')
-
- def event(self, request, response_callback, abortion_callback, timeout):
- return _calls.event_value_in_value_out(
- self._front, self._name, request, response_callback, abortion_callback,
- timeout, 'unused trace ID')
-
-
-class _UnaryStreamMultiCallable(interfaces.UnaryStreamMultiCallable):
-
- def __init__(self, front, name):
- self._front = front
- self._name = name
-
- def __call__(self, request, timeout):
- return _calls.inline_value_in_stream_out(
- self._front, self._name, request, timeout, 'unused trace ID')
-
- def event(self, request, response_consumer, abortion_callback, timeout):
- return _calls.event_value_in_stream_out(
- self._front, self._name, request, response_consumer, abortion_callback,
- timeout, 'unused trace ID')
-
-
-class _StreamUnaryMultiCallable(interfaces.StreamUnaryMultiCallable):
-
- def __init__(self, front, name, pool):
- self._front = front
- self._name = name
- self._pool = pool
-
- def __call__(self, request_iterator, timeout):
- return _calls.blocking_stream_in_value_out(
- self._front, self._name, request_iterator, timeout, 'unused trace ID')
-
- def future(self, request_iterator, timeout):
- return _calls.future_stream_in_value_out(
- self._front, self._name, request_iterator, timeout, 'unused trace ID',
- self._pool)
-
- def event(self, response_callback, abortion_callback, timeout):
- return _calls.event_stream_in_value_out(
- self._front, self._name, response_callback, abortion_callback, timeout,
- 'unused trace ID')
-
-
-class _StreamStreamMultiCallable(interfaces.StreamStreamMultiCallable):
-
- def __init__(self, front, name, pool):
- self._front = front
- self._name = name
- self._pool = pool
-
- def __call__(self, request_iterator, timeout):
- return _calls.inline_stream_in_stream_out(
- self._front, self._name, request_iterator, timeout, 'unused trace ID',
- self._pool)
-
- def event(self, response_consumer, abortion_callback, timeout):
- return _calls.event_stream_in_stream_out(
- self._front, self._name, response_consumer, abortion_callback, timeout,
- 'unused trace ID')
-
-
-class _GenericStub(interfaces.GenericStub):
- """An interfaces.GenericStub implementation."""
-
- def __init__(self, front, pool):
- self._front = front
- self._pool = pool
-
- def blocking_value_in_value_out(self, name, request, timeout):
- return _calls.blocking_value_in_value_out(
- self._front, name, request, timeout, 'unused trace ID')
-
- def future_value_in_value_out(self, name, request, timeout):
- return _calls.future_value_in_value_out(
- self._front, name, request, timeout, 'unused trace ID')
-
- def inline_value_in_stream_out(self, name, request, timeout):
- return _calls.inline_value_in_stream_out(
- self._front, name, request, timeout, 'unused trace ID')
-
- def blocking_stream_in_value_out(self, name, request_iterator, timeout):
- return _calls.blocking_stream_in_value_out(
- self._front, name, request_iterator, timeout, 'unused trace ID')
-
- def future_stream_in_value_out(self, name, request_iterator, timeout):
- return _calls.future_stream_in_value_out(
- self._front, name, request_iterator, timeout, 'unused trace ID',
- self._pool)
-
- def inline_stream_in_stream_out(self, name, request_iterator, timeout):
- return _calls.inline_stream_in_stream_out(
- self._front, name, request_iterator, timeout, 'unused trace ID',
- self._pool)
-
- def event_value_in_value_out(
- self, name, request, response_callback, abortion_callback, timeout):
- return _calls.event_value_in_value_out(
- self._front, name, request, response_callback, abortion_callback,
- timeout, 'unused trace ID')
-
- def event_value_in_stream_out(
- self, name, request, response_consumer, abortion_callback, timeout):
- return _calls.event_value_in_stream_out(
- self._front, name, request, response_consumer, abortion_callback,
- timeout, 'unused trace ID')
-
- def event_stream_in_value_out(
- self, name, response_callback, abortion_callback, timeout):
- return _calls.event_stream_in_value_out(
- self._front, name, response_callback, abortion_callback, timeout,
- 'unused trace ID')
-
- def event_stream_in_stream_out(
- self, name, response_consumer, abortion_callback, timeout):
- return _calls.event_stream_in_stream_out(
- self._front, name, response_consumer, abortion_callback, timeout,
- 'unused trace ID')
-
- def unary_unary_multi_callable(self, name):
- return _UnaryUnaryMultiCallable(self._front, name)
-
- def unary_stream_multi_callable(self, name):
- return _UnaryStreamMultiCallable(self._front, name)
-
- def stream_unary_multi_callable(self, name):
- return _StreamUnaryMultiCallable(self._front, name, self._pool)
-
- def stream_stream_multi_callable(self, name):
- return _StreamStreamMultiCallable(self._front, name, self._pool)
-
-
-class _DynamicStub(interfaces.DynamicStub):
- """An interfaces.DynamicStub implementation."""
-
- def __init__(self, cardinalities, front, pool):
- self._cardinalities = cardinalities
- self._front = front
- self._pool = pool
-
- def __getattr__(self, attr):
- method_cardinality = self._cardinalities.get(attr)
- if method_cardinality is cardinality.Cardinality.UNARY_UNARY:
- return _UnaryUnaryMultiCallable(self._front, attr)
- elif method_cardinality is cardinality.Cardinality.UNARY_STREAM:
- return _UnaryStreamMultiCallable(self._front, attr)
- elif method_cardinality is cardinality.Cardinality.STREAM_UNARY:
- return _StreamUnaryMultiCallable(self._front, attr, self._pool)
- elif method_cardinality is cardinality.Cardinality.STREAM_STREAM:
- return _StreamStreamMultiCallable(self._front, attr, self._pool)
- else:
- raise AttributeError('_DynamicStub object has no attribute "%s"!' % attr)
-
-
-def _adapt_method_implementations(method_implementations, pool):
- adapted_implementations = {}
- for name, method_implementation in six.iteritems(method_implementations):
- if method_implementation.style is style.Service.INLINE:
- if method_implementation.cardinality is cardinality.Cardinality.UNARY_UNARY:
- adapted_implementations[name] = _service.adapt_inline_value_in_value_out(
- method_implementation.unary_unary_inline)
- elif method_implementation.cardinality is cardinality.Cardinality.UNARY_STREAM:
- adapted_implementations[name] = _service.adapt_inline_value_in_stream_out(
- method_implementation.unary_stream_inline)
- elif method_implementation.cardinality is cardinality.Cardinality.STREAM_UNARY:
- adapted_implementations[name] = _service.adapt_inline_stream_in_value_out(
- method_implementation.stream_unary_inline, pool)
- elif method_implementation.cardinality is cardinality.Cardinality.STREAM_STREAM:
- adapted_implementations[name] = _service.adapt_inline_stream_in_stream_out(
- method_implementation.stream_stream_inline, pool)
- elif method_implementation.style is style.Service.EVENT:
- if method_implementation.cardinality is cardinality.Cardinality.UNARY_UNARY:
- adapted_implementations[name] = _service.adapt_event_value_in_value_out(
- method_implementation.unary_unary_event)
- elif method_implementation.cardinality is cardinality.Cardinality.UNARY_STREAM:
- adapted_implementations[name] = _service.adapt_event_value_in_stream_out(
- method_implementation.unary_stream_event)
- elif method_implementation.cardinality is cardinality.Cardinality.STREAM_UNARY:
- adapted_implementations[name] = _service.adapt_event_stream_in_value_out(
- method_implementation.stream_unary_event)
- elif method_implementation.cardinality is cardinality.Cardinality.STREAM_STREAM:
- adapted_implementations[name] = _service.adapt_event_stream_in_stream_out(
- method_implementation.stream_stream_event)
- return adapted_implementations
-
-
-def servicer(pool, method_implementations, multi_method_implementation):
- """Creates a base_interfaces.Servicer.
-
- It is guaranteed that any passed interfaces.MultiMethodImplementation will
- only be called to service an RPC if there is no
- interfaces.MethodImplementation for the RPC method in the passed
- method_implementations dictionary.
-
- Args:
- pool: A thread pool.
- method_implementations: A dictionary from RPC method name to
- interfaces.MethodImplementation object to be used to service the named
- RPC method.
- multi_method_implementation: An interfaces.MultiMethodImplementation to be
- used to service any RPCs not serviced by the
- interfaces.MethodImplementations given in the method_implementations
- dictionary, or None.
-
- Returns:
- A base_interfaces.Servicer that services RPCs via the given implementations.
- """
- adapted_implementations = _adapt_method_implementations(
- method_implementations, pool)
- return _BaseServicer(adapted_implementations, multi_method_implementation)
-
-
-def generic_stub(front, pool):
- """Creates an interfaces.GenericStub.
-
- Args:
- front: A base_interfaces.Front.
- pool: A futures.ThreadPoolExecutor.
-
- Returns:
- An interfaces.GenericStub that performs RPCs via the given
- base_interfaces.Front.
- """
- return _GenericStub(front, pool)
-
-
-def dynamic_stub(cardinalities, front, pool, prefix):
- """Creates an interfaces.DynamicStub.
-
- Args:
- cardinalities: A dict from RPC method name to cardinality.Cardinality
- value identifying the cardinality of every RPC method to be supported by
- the created interfaces.DynamicStub.
- front: A base_interfaces.Front.
- pool: A futures.ThreadPoolExecutor.
- prefix: A string to prepend when mapping requested attribute name to RPC
- method name during attribute access on the created
- interfaces.DynamicStub.
-
- Returns:
- An interfaces.DynamicStub that performs RPCs via the given
- base_interfaces.Front.
- """
- return _DynamicStub(cardinalities, front, pool)
diff --git a/src/python/grpcio/grpc/framework/face/interfaces.py b/src/python/grpcio/grpc/framework/face/interfaces.py
deleted file mode 100644
index e9a25c17e1..0000000000
--- a/src/python/grpcio/grpc/framework/face/interfaces.py
+++ /dev/null
@@ -1,634 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces for the face layer of RPC Framework."""
-
-import abc
-import enum
-
-import six
-
-# cardinality, style, exceptions, abandonment, future, and stream are
-# referenced from specification in this module.
-from grpc.framework.common import cardinality # pylint: disable=unused-import
-from grpc.framework.common import style # pylint: disable=unused-import
-from grpc.framework.face import exceptions # pylint: disable=unused-import
-from grpc.framework.foundation import abandonment # pylint: disable=unused-import
-from grpc.framework.foundation import future # pylint: disable=unused-import
-from grpc.framework.foundation import stream # pylint: disable=unused-import
-
-
-@enum.unique
-class Abortion(enum.Enum):
- """Categories of RPC abortion."""
- CANCELLED = 'cancelled'
- EXPIRED = 'expired'
- NETWORK_FAILURE = 'network failure'
- SERVICED_FAILURE = 'serviced failure'
- SERVICER_FAILURE = 'servicer failure'
-
-
-class CancellableIterator(six.with_metaclass(abc.ABCMeta)):
- """Implements the Iterator protocol and affords a cancel method."""
-
- @abc.abstractmethod
- def __iter__(self):
- """Returns the self object in accordance with the Iterator protocol."""
- raise NotImplementedError()
-
- def __next__(self):
- return self.next()
-
- @abc.abstractmethod
- def next(self):
- """Returns a value or raises StopIteration per the Iterator protocol."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def cancel(self):
- """Requests cancellation of whatever computation underlies this iterator."""
- raise NotImplementedError()
-
-
-class RpcContext(six.with_metaclass(abc.ABCMeta)):
- """Provides RPC-related information and action."""
-
- @abc.abstractmethod
- def is_active(self):
- """Describes whether the RPC is active or has terminated."""
- raise NotImplementedError()
-
- @abc.abstractmethod
- def time_remaining(self):
- """Describes the length of allowed time remaining for the RPC.
-
- Returns:
- A nonnegative float indicating the length of allowed time in seconds
- remaining for the RPC to complete before it is considered to have timed
- out.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def add_abortion_callback(self, abortion_callback):
- """Registers a callback to be called if the RPC is aborted.
-
- Args:
- abortion_callback: A callable to be called and passed an Abortion value
- in the event of RPC abortion.
- """
- raise NotImplementedError()
-
-
-class Call(six.with_metaclass(abc.ABCMeta)):
- """Invocation-side representation of an RPC.
-
- Attributes:
- context: An RpcContext affording information about the RPC.
- """
-
- @abc.abstractmethod
- def cancel(self):
- """Requests cancellation of the RPC."""
- raise NotImplementedError()
-
-
-class UnaryUnaryMultiCallable(six.with_metaclass(abc.ABCMeta)):
- """Affords invoking a unary-unary RPC in any call style."""
-
- @abc.abstractmethod
- def __call__(self, request, timeout):
- """Synchronously invokes the underlying RPC.
-
- Args:
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- The response value for the RPC.
-
- Raises:
- exceptions.RpcError: Indicating that the RPC was aborted.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def future(self, request, timeout):
- """Asynchronously invokes the underlying RPC.
-
- Args:
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A future.Future representing the RPC. In the event of RPC completion, the
- returned Future's result value will be the response value of the RPC.
- In the event of RPC abortion, the returned Future's exception value
- will be an exceptions.RpcError.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event(self, request, response_callback, abortion_callback, timeout):
- """Asynchronously invokes the underlying RPC.
-
- Args:
- request: The request value for the RPC.
- response_callback: A callback to be called to accept the restponse value
- of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A Call object for the RPC.
- """
- raise NotImplementedError()
-
-
-class UnaryStreamMultiCallable(six.with_metaclass(abc.ABCMeta)):
- """Affords invoking a unary-stream RPC in any call style."""
-
- @abc.abstractmethod
- def __call__(self, request, timeout):
- """Synchronously invokes the underlying RPC.
-
- Args:
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A CancellableIterator that yields the response values of the RPC and
- affords RPC cancellation. Drawing response values from the returned
- CancellableIterator may raise exceptions.RpcError indicating abortion
- of the RPC.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event(self, request, response_consumer, abortion_callback, timeout):
- """Asynchronously invokes the underlying RPC.
-
- Args:
- request: The request value for the RPC.
- response_consumer: A stream.Consumer to be called to accept the restponse
- values of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A Call object for the RPC.
- """
- raise NotImplementedError()
-
-
-class StreamUnaryMultiCallable(six.with_metaclass(abc.ABCMeta)):
- """Affords invoking a stream-unary RPC in any call style."""
-
- @abc.abstractmethod
- def __call__(self, request_iterator, timeout):
- """Synchronously invokes the underlying RPC.
-
- Args:
- request_iterator: An iterator that yields request values for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- The response value for the RPC.
-
- Raises:
- exceptions.RpcError: Indicating that the RPC was aborted.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def future(self, request_iterator, timeout):
- """Asynchronously invokes the underlying RPC.
-
- Args:
- request_iterator: An iterator that yields request values for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A future.Future representing the RPC. In the event of RPC completion, the
- returned Future's result value will be the response value of the RPC.
- In the event of RPC abortion, the returned Future's exception value
- will be an exceptions.RpcError.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event(self, response_callback, abortion_callback, timeout):
- """Asynchronously invokes the underlying RPC.
-
- Args:
- request: The request value for the RPC.
- response_callback: A callback to be called to accept the restponse value
- of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A pair of a Call object for the RPC and a stream.Consumer to which the
- request values of the RPC should be passed.
- """
- raise NotImplementedError()
-
-
-class StreamStreamMultiCallable(six.with_metaclass(abc.ABCMeta)):
- """Affords invoking a stream-stream RPC in any call style."""
-
- @abc.abstractmethod
- def __call__(self, request_iterator, timeout):
- """Synchronously invokes the underlying RPC.
-
- Args:
- request_iterator: An iterator that yields request values for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A CancellableIterator that yields the response values of the RPC and
- affords RPC cancellation. Drawing response values from the returned
- CancellableIterator may raise exceptions.RpcError indicating abortion
- of the RPC.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event(self, response_consumer, abortion_callback, timeout):
- """Asynchronously invokes the underlying RPC.
-
-l Args:
- response_consumer: A stream.Consumer to be called to accept the restponse
- values of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A pair of a Call object for the RPC and a stream.Consumer to which the
- request values of the RPC should be passed.
- """
- raise NotImplementedError()
-
-
-class MethodImplementation(six.with_metaclass(abc.ABCMeta)):
- """A sum type that describes an RPC method implementation.
-
- Attributes:
- cardinality: A cardinality.Cardinality value.
- style: A style.Service value.
- unary_unary_inline: The implementation of the RPC method as a callable
- value that takes a request value and an RpcContext object and returns a
- response value. Only non-None if cardinality is
- cardinality.Cardinality.UNARY_UNARY and style is style.Service.INLINE.
- unary_stream_inline: The implementation of the RPC method as a callable
- value that takes a request value and an RpcContext object and returns an
- iterator of response values. Only non-None if cardinality is
- cardinality.Cardinality.UNARY_STREAM and style is style.Service.INLINE.
- stream_unary_inline: The implementation of the RPC method as a callable
- value that takes an iterator of request values and an RpcContext object
- and returns a response value. Only non-None if cardinality is
- cardinality.Cardinality.STREAM_UNARY and style is style.Service.INLINE.
- stream_stream_inline: The implementation of the RPC method as a callable
- value that takes an iterator of request values and an RpcContext object
- and returns an iterator of response values. Only non-None if cardinality
- is cardinality.Cardinality.STREAM_STREAM and style is
- style.Service.INLINE.
- unary_unary_event: The implementation of the RPC method as a callable value
- that takes a request value, a response callback to which to pass the
- response value of the RPC, and an RpcContext. Only non-None if
- cardinality is cardinality.Cardinality.UNARY_UNARY and style is
- style.Service.EVENT.
- unary_stream_event: The implementation of the RPC method as a callable
- value that takes a request value, a stream.Consumer to which to pass the
- the response values of the RPC, and an RpcContext. Only non-None if
- cardinality is cardinality.Cardinality.UNARY_STREAM and style is
- style.Service.EVENT.
- stream_unary_event: The implementation of the RPC method as a callable
- value that takes a response callback to which to pass the response value
- of the RPC and an RpcContext and returns a stream.Consumer to which the
- request values of the RPC should be passed. Only non-None if cardinality
- is cardinality.Cardinality.STREAM_UNARY and style is style.Service.EVENT.
- stream_stream_event: The implementation of the RPC method as a callable
- value that takes a stream.Consumer to which to pass the response values
- of the RPC and an RpcContext and returns a stream.Consumer to which the
- request values of the RPC should be passed. Only non-None if cardinality
- is cardinality.Cardinality.STREAM_STREAM and style is
- style.Service.EVENT.
- """
-
-
-class MultiMethodImplementation(six.with_metaclass(abc.ABCMeta)):
- """A general type able to service many RPC methods."""
-
- @abc.abstractmethod
- def service(self, name, response_consumer, context):
- """Services an RPC.
-
- Args:
- name: The RPC method name.
- response_consumer: A stream.Consumer to be called to accept the response
- values of the RPC.
- context: An RpcContext object.
-
- Returns:
- A stream.Consumer with which to accept the request values of the RPC. The
- consumer returned from this method may or may not be invoked to
- completion: in the case of RPC abortion, RPC Framework will simply stop
- passing values to this object. Implementations must not assume that this
- object will be called to completion of the request stream or even called
- at all.
-
- Raises:
- abandonment.Abandoned: May or may not be raised when the RPC has been
- aborted.
- exceptions.NoSuchMethodError: If this MultiMethod does not recognize the
- given RPC method name and is not able to service the RPC.
- """
- raise NotImplementedError()
-
-
-class GenericStub(six.with_metaclass(abc.ABCMeta)):
- """Affords RPC methods to callers."""
-
- @abc.abstractmethod
- def blocking_value_in_value_out(self, name, request, timeout):
- """Invokes a unary-request-unary-response RPC method.
-
- This method blocks until either returning the response value of the RPC
- (in the event of RPC completion) or raising an exception (in the event of
- RPC abortion).
-
- Args:
- name: The RPC method name.
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- The response value for the RPC.
-
- Raises:
- exceptions.RpcError: Indicating that the RPC was aborted.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def future_value_in_value_out(self, name, request, timeout):
- """Invokes a unary-request-unary-response RPC method.
-
- Args:
- name: The RPC method name.
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A future.Future representing the RPC. In the event of RPC completion, the
- returned Future will return an outcome indicating that the RPC returned
- the response value of the RPC. In the event of RPC abortion, the
- returned Future will return an outcome indicating that the RPC raised
- an exceptions.RpcError.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def inline_value_in_stream_out(self, name, request, timeout):
- """Invokes a unary-request-stream-response RPC method.
-
- Args:
- name: The RPC method name.
- request: The request value for the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A CancellableIterator that yields the response values of the RPC and
- affords RPC cancellation. Drawing response values from the returned
- CancellableIterator may raise exceptions.RpcError indicating abortion of
- the RPC.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def blocking_stream_in_value_out(self, name, request_iterator, timeout):
- """Invokes a stream-request-unary-response RPC method.
-
- This method blocks until either returning the response value of the RPC
- (in the event of RPC completion) or raising an exception (in the event of
- RPC abortion).
-
- Args:
- name: The RPC method name.
- request_iterator: An iterator that yields the request values of the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- The response value for the RPC.
-
- Raises:
- exceptions.RpcError: Indicating that the RPC was aborted.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def future_stream_in_value_out(self, name, request_iterator, timeout):
- """Invokes a stream-request-unary-response RPC method.
-
- Args:
- name: The RPC method name.
- request_iterator: An iterator that yields the request values of the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A future.Future representing the RPC. In the event of RPC completion, the
- returned Future will return an outcome indicating that the RPC returned
- the response value of the RPC. In the event of RPC abortion, the
- returned Future will return an outcome indicating that the RPC raised
- an exceptions.RpcError.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def inline_stream_in_stream_out(self, name, request_iterator, timeout):
- """Invokes a stream-request-stream-response RPC method.
-
- Args:
- name: The RPC method name.
- request_iterator: An iterator that yields the request values of the RPC.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A CancellableIterator that yields the response values of the RPC and
- affords RPC cancellation. Drawing response values from the returned
- CancellableIterator may raise exceptions.RpcError indicating abortion of
- the RPC.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event_value_in_value_out(
- self, name, request, response_callback, abortion_callback, timeout):
- """Event-driven invocation of a unary-request-unary-response RPC method.
-
- Args:
- name: The RPC method name.
- request: The request value for the RPC.
- response_callback: A callback to be called to accept the response value
- of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A Call object for the RPC.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event_value_in_stream_out(
- self, name, request, response_consumer, abortion_callback, timeout):
- """Event-driven invocation of a unary-request-stream-response RPC method.
-
- Args:
- name: The RPC method name.
- request: The request value for the RPC.
- response_consumer: A stream.Consumer to be called to accept the response
- values of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A Call object for the RPC.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event_stream_in_value_out(
- self, name, response_callback, abortion_callback, timeout):
- """Event-driven invocation of a unary-request-unary-response RPC method.
-
- Args:
- name: The RPC method name.
- response_callback: A callback to be called to accept the response value
- of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A pair of a Call object for the RPC and a stream.Consumer to which the
- request values of the RPC should be passed.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def event_stream_in_stream_out(
- self, name, response_consumer, abortion_callback, timeout):
- """Event-driven invocation of a unary-request-stream-response RPC method.
-
- Args:
- name: The RPC method name.
- response_consumer: A stream.Consumer to be called to accept the response
- values of the RPC.
- abortion_callback: A callback to be called and passed an Abortion value
- in the event of RPC abortion.
- timeout: A duration of time in seconds to allow for the RPC.
-
- Returns:
- A pair of a Call object for the RPC and a stream.Consumer to which the
- request values of the RPC should be passed.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def unary_unary_multi_callable(self, name):
- """Creates a UnaryUnaryMultiCallable for a unary-unary RPC method.
-
- Args:
- name: The RPC method name.
-
- Returns:
- A UnaryUnaryMultiCallable value for the named unary-unary RPC method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def unary_stream_multi_callable(self, name):
- """Creates a UnaryStreamMultiCallable for a unary-stream RPC method.
-
- Args:
- name: The RPC method name.
-
- Returns:
- A UnaryStreamMultiCallable value for the name unary-stream RPC method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def stream_unary_multi_callable(self, name):
- """Creates a StreamUnaryMultiCallable for a stream-unary RPC method.
-
- Args:
- name: The RPC method name.
-
- Returns:
- A StreamUnaryMultiCallable value for the named stream-unary RPC method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def stream_stream_multi_callable(self, name):
- """Creates a StreamStreamMultiCallable for a stream-stream RPC method.
-
- Args:
- name: The RPC method name.
-
- Returns:
- A StreamStreamMultiCallable value for the named stream-stream RPC method.
- """
- raise NotImplementedError()
-
-
-class DynamicStub(six.with_metaclass(abc.ABCMeta)):
- """A stub with RPC-method-bound multi-callable attributes.
-
- Instances of this type responsd to attribute access as follows: if the
- requested attribute is the name of a unary-unary RPC method, the value of the
- attribute will be a UnaryUnaryMultiCallable with which to invoke the RPC
- method; if the requested attribute is the name of a unary-stream RPC method,
- the value of the attribute will be a UnaryStreamMultiCallable with which to
- invoke the RPC method; if the requested attribute is the name of a
- stream-unary RPC method, the value of the attribute will be a
- StreamUnaryMultiCallable with which to invoke the RPC method; and if the
- requested attribute is the name of a stream-stream RPC method, the value of
- the attribute will be a StreamStreamMultiCallable with which to invoke the
- RPC method.
- """
diff --git a/src/python/grpcio/grpc/framework/face/utilities.py b/src/python/grpcio/grpc/framework/face/utilities.py
deleted file mode 100644
index a63fe8c60d..0000000000
--- a/src/python/grpcio/grpc/framework/face/utilities.py
+++ /dev/null
@@ -1,177 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities for RPC framework's face layer."""
-
-import collections
-
-from grpc.framework.common import cardinality
-from grpc.framework.common import style
-from grpc.framework.face import interfaces
-from grpc.framework.foundation import stream
-
-
-class _MethodImplementation(
- interfaces.MethodImplementation,
- collections.namedtuple(
- '_MethodImplementation',
- ['cardinality', 'style', 'unary_unary_inline', 'unary_stream_inline',
- 'stream_unary_inline', 'stream_stream_inline', 'unary_unary_event',
- 'unary_stream_event', 'stream_unary_event', 'stream_stream_event',])):
- pass
-
-
-def unary_unary_inline(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a unary-unary RPC method as a callable value
- that takes a request value and an interfaces.RpcContext object and
- returns a response value.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.UNARY_UNARY, style.Service.INLINE, behavior,
- None, None, None, None, None, None, None)
-
-
-def unary_stream_inline(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a unary-stream RPC method as a callable
- value that takes a request value and an interfaces.RpcContext object and
- returns an iterator of response values.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.UNARY_STREAM, style.Service.INLINE, None,
- behavior, None, None, None, None, None, None)
-
-
-def stream_unary_inline(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a stream-unary RPC method as a callable
- value that takes an iterator of request values and an
- interfaces.RpcContext object and returns a response value.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.STREAM_UNARY, style.Service.INLINE, None, None,
- behavior, None, None, None, None, None)
-
-
-def stream_stream_inline(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a stream-stream RPC method as a callable
- value that takes an iterator of request values and an
- interfaces.RpcContext object and returns an iterator of response values.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.STREAM_STREAM, style.Service.INLINE, None, None,
- None, behavior, None, None, None, None)
-
-
-def unary_unary_event(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a unary-unary RPC method as a callable
- value that takes a request value, a response callback to which to pass
- the response value of the RPC, and an interfaces.RpcContext.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.UNARY_UNARY, style.Service.EVENT, None, None,
- None, None, behavior, None, None, None)
-
-
-def unary_stream_event(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a unary-stream RPC method as a callable
- value that takes a request value, a stream.Consumer to which to pass the
- the response values of the RPC, and an interfaces.RpcContext.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.UNARY_STREAM, style.Service.EVENT, None, None,
- None, None, None, behavior, None, None)
-
-
-def stream_unary_event(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a stream-unary RPC method as a callable
- value that takes a response callback to which to pass the response value
- of the RPC and an interfaces.RpcContext and returns a stream.Consumer to
- which the request values of the RPC should be passed.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.STREAM_UNARY, style.Service.EVENT, None, None,
- None, None, None, None, behavior, None)
-
-
-def stream_stream_event(behavior):
- """Creates an interfaces.MethodImplementation for the given behavior.
-
- Args:
- behavior: The implementation of a stream-stream RPC method as a callable
- value that takes a stream.Consumer to which to pass the response values
- of the RPC and an interfaces.RpcContext and returns a stream.Consumer to
- which the request values of the RPC should be passed.
-
- Returns:
- An interfaces.MethodImplementation derived from the given behavior.
- """
- return _MethodImplementation(
- cardinality.Cardinality.STREAM_STREAM, style.Service.EVENT, None, None,
- None, None, None, None, None, behavior)
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index e1fe5fc1f6..4b98dc1a13 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -57,6 +57,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/support/stack_lockfree.c',
'src/core/lib/support/string.c',
'src/core/lib/support/string_posix.c',
+ 'src/core/lib/support/string_util_win32.c',
'src/core/lib/support/string_win32.c',
'src/core/lib/support/subprocess_posix.c',
'src/core/lib/support/subprocess_windows.c',
@@ -71,6 +72,7 @@ CORE_SOURCE_FILES = [
'src/core/lib/support/time_precise.c',
'src/core/lib/support/time_win32.c',
'src/core/lib/support/tls_pthread.c',
+ 'src/core/lib/support/tmpfile_msys.c',
'src/core/lib/support/tmpfile_posix.c',
'src/core/lib/support/tmpfile_win32.c',
'src/core/lib/support/wrap_memcpy.c',
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 873b4e2a91..0c13104d9d 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
-VERSION='0.14.0.dev0'
+VERSION='0.15.0.dev0'
diff --git a/src/python/grpcio/precompiled.py b/src/python/grpcio/precompiled.py
deleted file mode 100644
index b6aa7fc90e..0000000000
--- a/src/python/grpcio/precompiled.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os
-import platform
-import shutil
-import sys
-import sysconfig
-
-import setuptools
-
-import commands
-import grpc_version
-
-try:
- from urllib2 import urlopen
-except ImportError:
- from urllib.request import urlopen
-
-PYTHON_STEM = os.path.dirname(os.path.abspath(__file__))
-BINARIES_REPOSITORY = os.environ.get(
- 'GRPC_PYTHON_BINARIES_REPOSITORY',
- 'https://storage.googleapis.com/grpc-precompiled-binaries/python')
-USE_PRECOMPILED_BINARIES = bool(int(os.environ.get(
- 'GRPC_PYTHON_USE_PRECOMPILED_BINARIES', '1')))
-
-def _tagged_ext_name(base):
- uname = platform.uname()
- tags = (
- grpc_version.VERSION,
- 'py{}'.format(sysconfig.get_python_version()),
- uname[0],
- uname[4],
- )
- ucs = 'ucs{}'.format(sysconfig.get_config_var('Py_UNICODE_SIZE'))
- return '{base}-{tags}-{ucs}'.format(
- base=base, tags='-'.join(tags), ucs=ucs)
-
-
-class BuildTaggedExt(setuptools.Command):
-
- description = 'build the gRPC tagged extensions'
- user_options = []
-
- def initialize_options(self):
- # distutils requires this override.
- pass
-
- def finalize_options(self):
- # distutils requires this override.
- pass
-
- def run(self):
- if 'linux' in sys.platform:
- self.run_command('build_ext')
- try:
- os.makedirs('dist/')
- except OSError:
- pass
- shutil.copyfile(
- os.path.join(PYTHON_STEM, 'grpc/_cython/cygrpc.so'),
- 'dist/{}.so'.format(_tagged_ext_name('cygrpc')))
- else:
- sys.stderr.write('nothing to do for build_tagged_ext\n')
-
-
-def update_setup_arguments(setup_arguments):
- if not USE_PRECOMPILED_BINARIES:
- sys.stderr.write('not using precompiled extension')
- return
- url = '{}/{}.so'.format(BINARIES_REPOSITORY, _tagged_ext_name('cygrpc'))
- target_path = os.path.join(PYTHON_STEM, 'grpc/_cython/cygrpc.so')
- try:
- extension = urlopen(url).read()
- except:
- sys.stderr.write(
- 'could not download precompiled extension: {}\n'.format(url))
- return
- try:
- with open(target_path, 'w') as target:
- target.write(extension)
- setup_arguments['ext_modules'] = []
- except:
- sys.stderr.write(
- 'could not write precompiled extension to directory: {} -> {}\n'
- .format(url, target_path))
- return
- setup_arguments['package_data']['grpc._cython'].append('cygrpc.so')
diff --git a/src/python/grpcio/tests/interop/_insecure_interop_test.py b/src/python/grpcio/tests/interop/_insecure_interop_test.py
index 00b49aba37..91519b6fba 100644
--- a/src/python/grpcio/tests/interop/_insecure_interop_test.py
+++ b/src/python/grpcio/tests/interop/_insecure_interop_test.py
@@ -32,11 +32,11 @@
import unittest
from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
from tests.interop import _interop_test_case
from tests.interop import methods
from tests.interop import server
-from tests.interop import test_pb2
class InsecureInteropTest(
diff --git a/src/python/grpcio/tests/interop/_secure_interop_test.py b/src/python/grpcio/tests/interop/_secure_interop_test.py
index 86d7e43351..c61547b977 100644
--- a/src/python/grpcio/tests/interop/_secure_interop_test.py
+++ b/src/python/grpcio/tests/interop/_secure_interop_test.py
@@ -32,11 +32,11 @@
import unittest
from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
from tests.interop import _interop_test_case
from tests.interop import methods
from tests.interop import resources
-from tests.interop import test_pb2
from tests.unit.beta import test_utilities
diff --git a/src/python/grpcio/tests/interop/client.py b/src/python/grpcio/tests/interop/client.py
index 1d10d7e45d..db29eb4aa7 100644
--- a/src/python/grpcio/tests/interop/client.py
+++ b/src/python/grpcio/tests/interop/client.py
@@ -33,10 +33,10 @@ import argparse
from oauth2client import client as oauth2client_client
from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
from tests.interop import methods
from tests.interop import resources
-from tests.interop import test_pb2
from tests.unit.beta import test_utilities
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
diff --git a/src/python/grpcio/tests/interop/messages.proto b/src/python/grpcio/tests/interop/messages.proto
deleted file mode 100644
index 193b6c4171..0000000000
--- a/src/python/grpcio/tests/interop/messages.proto
+++ /dev/null
@@ -1,167 +0,0 @@
-
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Message definitions to be used by integration test service definitions.
-
-syntax = "proto3";
-
-package grpc.testing;
-
-// The type of payload that should be returned.
-enum PayloadType {
- // Compressable text format.
- COMPRESSABLE = 0;
-
- // Uncompressable binary format.
- UNCOMPRESSABLE = 1;
-
- // Randomly chosen from all other formats defined in this enum.
- RANDOM = 2;
-}
-
-// Compression algorithms
-enum CompressionType {
- // No compression
- NONE = 0;
- GZIP = 1;
- DEFLATE = 2;
-}
-
-// A block of data, to simply increase gRPC message size.
-message Payload {
- // The type of data in body.
- PayloadType type = 1;
- // Primary contents of payload.
- bytes body = 2;
-}
-
-// A protobuf representation for grpc status. This is used by test
-// clients to specify a status that the server should attempt to return.
-message EchoStatus {
- int32 code = 1;
- string message = 2;
-}
-
-// Unary request.
-message SimpleRequest {
- // Desired payload type in the response from the server.
- // If response_type is RANDOM, server randomly chooses one from other formats.
- PayloadType response_type = 1;
-
- // Desired payload size in the response from the server.
- // If response_type is COMPRESSABLE, this denotes the size before compression.
- int32 response_size = 2;
-
- // Optional input payload sent along with the request.
- Payload payload = 3;
-
- // Whether SimpleResponse should include username.
- bool fill_username = 4;
-
- // Whether SimpleResponse should include OAuth scope.
- bool fill_oauth_scope = 5;
-
- // Compression algorithm to be used by the server for the response (stream)
- CompressionType response_compression = 6;
-
- // Whether server should return a given status
- EchoStatus response_status = 7;
-}
-
-// Unary response, as configured by the request.
-message SimpleResponse {
- // Payload to increase message size.
- Payload payload = 1;
- // The user the request came from, for verifying authentication was
- // successful when the client expected it.
- string username = 2;
- // OAuth scope.
- string oauth_scope = 3;
-}
-
-// Client-streaming request.
-message StreamingInputCallRequest {
- // Optional input payload sent along with the request.
- Payload payload = 1;
-
- // Not expecting any payload from the response.
-}
-
-// Client-streaming response.
-message StreamingInputCallResponse {
- // Aggregated size of payloads received from the client.
- int32 aggregated_payload_size = 1;
-}
-
-// Configuration for a particular response.
-message ResponseParameters {
- // Desired payload sizes in responses from the server.
- // If response_type is COMPRESSABLE, this denotes the size before compression.
- int32 size = 1;
-
- // Desired interval between consecutive responses in the response stream in
- // microseconds.
- int32 interval_us = 2;
-}
-
-// Server-streaming request.
-message StreamingOutputCallRequest {
- // Desired payload type in the response from the server.
- // If response_type is RANDOM, the payload from each response in the stream
- // might be of different types. This is to simulate a mixed type of payload
- // stream.
- PayloadType response_type = 1;
-
- // Configuration for each expected response message.
- repeated ResponseParameters response_parameters = 2;
-
- // Optional input payload sent along with the request.
- Payload payload = 3;
-
- // Compression algorithm to be used by the server for the response (stream)
- CompressionType response_compression = 6;
-
- // Whether server should return a given status
- EchoStatus response_status = 7;
-}
-
-// Server-streaming response, as configured by the request and parameters.
-message StreamingOutputCallResponse {
- // Payload to increase response size.
- Payload payload = 1;
-}
-
-// For reconnect interop test only.
-// Server tells client whether its reconnects are following the spec and the
-// reconnect backoffs it saw.
-message ReconnectInfo {
- bool passed = 1;
- repeated int32 backoff_ms = 2;
-}
diff --git a/src/python/grpcio/tests/interop/methods.py b/src/python/grpcio/tests/interop/methods.py
index 03810338ed..67862ed7d3 100644
--- a/src/python/grpcio/tests/interop/methods.py
+++ b/src/python/grpcio/tests/interop/methods.py
@@ -42,9 +42,9 @@ from oauth2client import client as oauth2client_client
from grpc.framework.common import cardinality
from grpc.framework.interfaces.face import face
-from tests.interop import empty_pb2
-from tests.interop import messages_pb2
-from tests.interop import test_pb2
+from src.proto.grpc.testing import empty_pb2
+from src.proto.grpc.testing import messages_pb2
+from src.proto.grpc.testing import test_pb2
_TIMEOUT = 7
diff --git a/src/python/grpcio/tests/interop/server.py b/src/python/grpcio/tests/interop/server.py
index 6dd55f008c..ab2c3c708f 100644
--- a/src/python/grpcio/tests/interop/server.py
+++ b/src/python/grpcio/tests/interop/server.py
@@ -34,10 +34,10 @@ import logging
import time
from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
from tests.interop import methods
from tests.interop import resources
-from tests.interop import test_pb2
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
diff --git a/src/python/grpcio/tests/interop/test.proto b/src/python/grpcio/tests/interop/test.proto
deleted file mode 100644
index 9feecc0278..0000000000
--- a/src/python/grpcio/tests/interop/test.proto
+++ /dev/null
@@ -1,86 +0,0 @@
-
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-syntax = "proto3";
-
-import "tests/interop/empty.proto";
-import "tests/interop/messages.proto";
-
-package grpc.testing;
-
-// A simple service to test the various types of RPCs and experiment with
-// performance with various types of payload.
-service TestService {
- // One empty request followed by one empty response.
- rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
-
- // One request followed by one response.
- rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
-
- // One request followed by a sequence of responses (streamed download).
- // The server returns the payload with client desired type and sizes.
- rpc StreamingOutputCall(StreamingOutputCallRequest)
- returns (stream StreamingOutputCallResponse);
-
- // A sequence of requests followed by one response (streamed upload).
- // The server returns the aggregated size of client payload as the result.
- rpc StreamingInputCall(stream StreamingInputCallRequest)
- returns (StreamingInputCallResponse);
-
- // A sequence of requests with each request served by the server immediately.
- // As one request could lead to multiple responses, this interface
- // demonstrates the idea of full duplexing.
- rpc FullDuplexCall(stream StreamingOutputCallRequest)
- returns (stream StreamingOutputCallResponse);
-
- // A sequence of requests followed by a sequence of responses.
- // The server buffers all the client requests and then serves them in order. A
- // stream of responses are returned to the client when the server starts with
- // first request.
- rpc HalfDuplexCall(stream StreamingOutputCallRequest)
- returns (stream StreamingOutputCallResponse);
-}
-
-
-// A simple service NOT implemented at servers so clients can test for
-// that case.
-service UnimplementedService {
- // A call that no server should implement
- rpc UnimplementedCall(grpc.testing.Empty) returns(grpc.testing.Empty);
-}
-
-// A service used to control reconnect server.
-service ReconnectService {
- rpc Start(grpc.testing.Empty) returns (grpc.testing.Empty);
- rpc Stop(grpc.testing.Empty) returns (grpc.testing.ReconnectInfo);
-}
diff --git a/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py b/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
index 6fba3d4271..3dc3042e38 100644
--- a/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
+++ b/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
@@ -45,6 +45,7 @@ import unittest
from six import moves
from grpc.beta import implementations
+from grpc.beta import interfaces
from grpc.framework.foundation import future
from grpc.framework.interfaces.face import face
from tests.unit.framework.common import test_constants
@@ -178,6 +179,36 @@ def _CreateService(test_pb2):
server.stop(0)
+@contextlib.contextmanager
+def _CreateIncompleteService(test_pb2):
+ """Provides a servicer backend that fails to implement methods and its stub.
+
+ The servicer is just the implementation of the actual servicer passed to the
+ face player of the python RPC implementation; the two are detached.
+
+ Args:
+ test_pb2: The test_pb2 module generated by this test.
+
+ Yields:
+ A (servicer_methods, stub) pair where servicer_methods is the back-end of
+ the service bound to the stub and and stub is the stub on which to invoke
+ RPCs.
+ """
+ servicer_methods = _ServicerMethods(test_pb2)
+
+ class Servicer(getattr(test_pb2, SERVICER_IDENTIFIER)):
+ pass
+
+ servicer = Servicer()
+ server = getattr(test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer)
+ port = server.add_insecure_port('[::]:0')
+ server.start()
+ channel = implementations.insecure_channel('localhost', port)
+ stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)(channel)
+ yield servicer_methods, stub
+ server.stop(0)
+
+
def _streaming_input_request_iterator(test_pb2):
for _ in range(3):
request = test_pb2.StreamingInputCallRequest()
@@ -264,6 +295,16 @@ class PythonPluginTest(unittest.TestCase):
with _CreateService(test_pb2) as (servicer, stub):
request = test_pb2.SimpleRequest(response_size=13)
+ def testIncompleteServicer(self):
+ import protoc_plugin_test_pb2 as test_pb2
+ moves.reload_module(test_pb2)
+ with _CreateIncompleteService(test_pb2) as (servicer, stub):
+ request = test_pb2.SimpleRequest(response_size=13)
+ try:
+ response = stub.UnaryCall(request, test_constants.LONG_TIMEOUT)
+ except face.AbortionError as error:
+ self.assertEqual(interfaces.StatusCode.UNIMPLEMENTED, error.code)
+
def testUnaryCall(self):
import protoc_plugin_test_pb2 as test_pb2 # pylint: disable=g-import-not-at-top
moves.reload_module(test_pb2)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/__init__.py b/src/python/grpcio/tests/qps/__init__.py
index 7086519106..100a624dc9 100644
--- a/src/python/grpcio/tests/unit/framework/face/testing/__init__.py
+++ b/src/python/grpcio/tests/qps/__init__.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -26,5 +26,3 @@
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
diff --git a/src/python/grpcio/tests/qps/benchmark_client.py b/src/python/grpcio/tests/qps/benchmark_client.py
new file mode 100644
index 0000000000..eed0b0c6da
--- /dev/null
+++ b/src/python/grpcio/tests/qps/benchmark_client.py
@@ -0,0 +1,186 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Defines test client behaviors (UNARY/STREAMING) (SYNC/ASYNC)."""
+
+import abc
+import time
+try:
+ import Queue as queue # Python 2.x
+except ImportError:
+ import queue # Python 3
+
+from concurrent import futures
+
+from grpc.beta import implementations
+from src.proto.grpc.testing import messages_pb2
+from src.proto.grpc.testing import services_pb2
+from tests.unit import resources
+from tests.unit.beta import test_utilities
+
+_TIMEOUT = 60 * 60 * 24
+
+
+class BenchmarkClient:
+ """Benchmark client interface that exposes a non-blocking send_request()."""
+
+ __metaclass__ = abc.ABCMeta
+
+ def __init__(self, server, config, hist):
+ # Create the stub
+ host, port = server.split(':')
+ port = int(port)
+ if config.HasField('security_params'):
+ creds = implementations.ssl_channel_credentials(
+ resources.test_root_certificates())
+ channel = test_utilities.not_really_secure_channel(
+ host, port, creds, config.security_params.server_host_override)
+ else:
+ channel = implementations.insecure_channel(host, port)
+
+ if config.payload_config.WhichOneof('payload') == 'simple_params':
+ self._generic = False
+ self._stub = services_pb2.beta_create_BenchmarkService_stub(channel)
+ payload = messages_pb2.Payload(
+ body='\0' * config.payload_config.simple_params.req_size)
+ self._request = messages_pb2.SimpleRequest(
+ payload=payload,
+ response_size=config.payload_config.simple_params.resp_size)
+ else:
+ self._generic = True
+ self._stub = implementations.generic_stub(channel)
+ self._request = '\0' * config.payload_config.bytebuf_params.req_size
+
+ self._hist = hist
+ self._response_callbacks = []
+
+ def add_response_callback(self, callback):
+ self._response_callbacks.append(callback)
+
+ @abc.abstractmethod
+ def send_request(self):
+ """Non-blocking wrapper for a client's request operation."""
+ raise NotImplementedError()
+
+ def start(self):
+ pass
+
+ def stop(self):
+ pass
+
+ def _handle_response(self, query_time):
+ self._hist.add(query_time * 1e9) # Report times in nanoseconds
+ for callback in self._response_callbacks:
+ callback(query_time)
+
+
+class UnarySyncBenchmarkClient(BenchmarkClient):
+
+ def __init__(self, server, config, hist):
+ super(UnarySyncBenchmarkClient, self).__init__(server, config, hist)
+ self._pool = futures.ThreadPoolExecutor(
+ max_workers=config.outstanding_rpcs_per_channel)
+
+ def send_request(self):
+ # Send requests in seperate threads to support multiple outstanding rpcs
+ # (See src/proto/grpc/testing/control.proto)
+ self._pool.submit(self._dispatch_request)
+
+ def stop(self):
+ self._pool.shutdown(wait=True)
+ self._stub = None
+
+ def _dispatch_request(self):
+ start_time = time.time()
+ self._stub.UnaryCall(self._request, _TIMEOUT)
+ end_time = time.time()
+ self._handle_response(end_time - start_time)
+
+
+class UnaryAsyncBenchmarkClient(BenchmarkClient):
+
+ def send_request(self):
+ # Use the Future callback api to support multiple outstanding rpcs
+ start_time = time.time()
+ response_future = self._stub.UnaryCall.future(self._request, _TIMEOUT)
+ response_future.add_done_callback(
+ lambda resp: self._response_received(start_time, resp))
+
+ def _response_received(self, start_time, resp):
+ resp.result()
+ end_time = time.time()
+ self._handle_response(end_time - start_time)
+
+ def stop(self):
+ self._stub = None
+
+
+class StreamingAsyncBenchmarkClient(BenchmarkClient):
+
+ def __init__(self, server, config, hist):
+ super(StreamingAsyncBenchmarkClient, self).__init__(server, config, hist)
+ self._is_streaming = False
+ self._pool = futures.ThreadPoolExecutor(max_workers=1)
+ # Use a thread-safe queue to put requests on the stream
+ self._request_queue = queue.Queue()
+ self._send_time_queue = queue.Queue()
+
+ def send_request(self):
+ self._send_time_queue.put(time.time())
+ self._request_queue.put(self._request)
+
+ def start(self):
+ self._is_streaming = True
+ self._pool.submit(self._request_stream)
+
+ def stop(self):
+ self._is_streaming = False
+ self._pool.shutdown(wait=True)
+ self._stub = None
+
+ def _request_stream(self):
+ self._is_streaming = True
+ if self._generic:
+ response_stream = self._stub.inline_stream_stream(
+ 'grpc.testing.BenchmarkService', 'StreamingCall',
+ self._request_generator(), _TIMEOUT)
+ else:
+ response_stream = self._stub.StreamingCall(self._request_generator(),
+ _TIMEOUT)
+ for _ in response_stream:
+ end_time = time.time()
+ self._handle_response(end_time - self._send_time_queue.get_nowait())
+
+ def _request_generator(self):
+ while self._is_streaming:
+ try:
+ request = self._request_queue.get(block=True, timeout=1.0)
+ yield request
+ except queue.Empty:
+ pass
diff --git a/src/python/grpcio/tests/qps/benchmark_server.py b/src/python/grpcio/tests/qps/benchmark_server.py
new file mode 100644
index 0000000000..8cbf480d58
--- /dev/null
+++ b/src/python/grpcio/tests/qps/benchmark_server.py
@@ -0,0 +1,58 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from src.proto.grpc.testing import messages_pb2
+from src.proto.grpc.testing import services_pb2
+
+
+class BenchmarkServer(services_pb2.BetaBenchmarkServiceServicer):
+ """Synchronous Server implementation for the Benchmark service."""
+
+ def UnaryCall(self, request, context):
+ payload = messages_pb2.Payload(body='\0' * request.response_size)
+ return messages_pb2.SimpleResponse(payload=payload)
+
+ def StreamingCall(self, request_iterator, context):
+ for request in request_iterator:
+ payload = messages_pb2.Payload(body='\0' * request.response_size)
+ yield messages_pb2.SimpleResponse(payload=payload)
+
+
+class GenericBenchmarkServer(services_pb2.BetaBenchmarkServiceServicer):
+ """Generic Server implementation for the Benchmark service."""
+
+ def __init__(self, resp_size):
+ self._response = '\0' * resp_size
+
+ def UnaryCall(self, request, context):
+ return self._response
+
+ def StreamingCall(self, request_iterator, context):
+ for request in request_iterator:
+ yield self._response
diff --git a/src/python/grpcio/tests/qps/client_runner.py b/src/python/grpcio/tests/qps/client_runner.py
new file mode 100644
index 0000000000..a36c30ccc0
--- /dev/null
+++ b/src/python/grpcio/tests/qps/client_runner.py
@@ -0,0 +1,104 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Defines behavior for WHEN clients send requests.
+
+Each client exposes a non-blocking send_request() method that the
+ClientRunner invokes either periodically or in response to some event.
+"""
+
+import abc
+import thread
+import time
+
+
+class ClientRunner:
+ """Abstract interface for sending requests from clients."""
+
+ __metaclass__ = abc.ABCMeta
+
+ def __init__(self, client):
+ self._client = client
+
+ @abc.abstractmethod
+ def start(self):
+ raise NotImplementedError()
+
+ @abc.abstractmethod
+ def stop(self):
+ raise NotImplementedError()
+
+
+class OpenLoopClientRunner(ClientRunner):
+
+ def __init__(self, client, interval_generator):
+ super(OpenLoopClientRunner, self).__init__(client)
+ self._is_running = False
+ self._interval_generator = interval_generator
+
+ def start(self):
+ self._is_running = True
+ self._client.start()
+ thread.start_new_thread(self._dispatch_requests, ())
+
+ def stop(self):
+ self._is_running = False
+ self._client.stop()
+ self._client = None
+
+ def _dispatch_requests(self):
+ while self._is_running:
+ self._client.send_request()
+ time.sleep(next(self._interval_generator))
+
+
+class ClosedLoopClientRunner(ClientRunner):
+
+ def __init__(self, client, request_count):
+ super(ClosedLoopClientRunner, self).__init__(client)
+ self._is_running = False
+ self._request_count = request_count
+ # Send a new request on each response for closed loop
+ self._client.add_response_callback(self._send_request)
+
+ def start(self):
+ self._is_running = True
+ for _ in xrange(self._request_count):
+ self._client.send_request()
+ self._client.start()
+
+ def stop(self):
+ self._is_running = False
+ self._client.stop()
+ self._client = None
+
+ def _send_request(self, response_time):
+ if self._is_running:
+ self._client.send_request()
+
diff --git a/src/python/grpcio/grpc/framework/base/_cancellation.py b/src/python/grpcio/tests/qps/histogram.py
index ffbc90668f..9a7b5eb2ba 100644
--- a/src/python/grpcio/grpc/framework/base/_cancellation.py
+++ b/src/python/grpcio/tests/qps/histogram.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,38 +27,59 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""State and behavior for operation cancellation."""
+import math
+import threading
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
+from src.proto.grpc.testing import stats_pb2
-class CancellationManager(_interfaces.CancellationManager):
- """An implementation of _interfaces.CancellationManager."""
+class Histogram(object):
+ """Histogram class used for recording performance testing data.
- def __init__(
- self, lock, termination_manager, transmission_manager, ingestion_manager,
- expiration_manager):
- """Constructor.
+ This class is thread safe.
+ """
- Args:
- lock: The operation-wide lock.
- termination_manager: The _interfaces.TerminationManager for the operation.
- transmission_manager: The _interfaces.TransmissionManager for the
- operation.
- ingestion_manager: The _interfaces.IngestionManager for the operation.
- expiration_manager: The _interfaces.ExpirationManager for the operation.
- """
- self._lock = lock
- self._termination_manager = termination_manager
- self._transmission_manager = transmission_manager
- self._ingestion_manager = ingestion_manager
- self._expiration_manager = expiration_manager
+ def __init__(self, resolution, max_possible):
+ self._lock = threading.Lock()
+ self._resolution = resolution
+ self._max_possible = max_possible
+ self._sum = 0
+ self._sum_of_squares = 0
+ self.multiplier = 1.0 + self._resolution
+ self._count = 0
+ self._min = self._max_possible
+ self._max = 0
+ self._buckets = [0] * (self._bucket_for(self._max_possible) + 1)
- def cancel(self):
- """See _interfaces.CancellationManager.cancel for specification."""
+ def reset(self):
with self._lock:
- self._termination_manager.abort(interfaces.Outcome.CANCELLED)
- self._transmission_manager.abort(interfaces.Outcome.CANCELLED)
- self._ingestion_manager.abort()
- self._expiration_manager.abort()
+ self._sum = 0
+ self._sum_of_squares = 0
+ self._count = 0
+ self._min = self._max_possible
+ self._max = 0
+ self._buckets = [0] * (self._bucket_for(self._max_possible) + 1)
+
+ def add(self, val):
+ with self._lock:
+ self._sum += val
+ self._sum_of_squares += val * val
+ self._count += 1
+ self._min = min(self._min, val)
+ self._max = max(self._max, val)
+ self._buckets[self._bucket_for(val)] += 1
+
+ def get_data(self):
+ with self._lock:
+ data = stats_pb2.HistogramData()
+ data.bucket.extend(self._buckets)
+ data.min_seen = self._min
+ data.max_seen = self._max
+ data.sum = self._sum
+ data.sum_of_squares = self._sum_of_squares
+ data.count = self._count
+ return data
+
+ def _bucket_for(self, val):
+ val = min(val, self._max_possible)
+ return int(math.log(val, self.multiplier))
diff --git a/src/python/grpcio/tests/qps/qps_worker.py b/src/python/grpcio/tests/qps/qps_worker.py
new file mode 100644
index 0000000000..3dda718638
--- /dev/null
+++ b/src/python/grpcio/tests/qps/qps_worker.py
@@ -0,0 +1,60 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""The entry point for the qps worker."""
+
+import argparse
+import time
+
+from src.proto.grpc.testing import services_pb2
+
+from tests.qps import worker_server
+
+
+def run_worker_server(port):
+ servicer = worker_server.WorkerServer()
+ server = services_pb2.beta_create_WorkerService_server(servicer)
+ server.add_insecure_port('[::]:{}'.format(port))
+ server.start()
+ servicer.wait_for_quit()
+ # Drain outstanding requests for clean exit
+ time.sleep(2)
+ server.stop(0)
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(
+ description='gRPC Python performance testing worker')
+ parser.add_argument('--driver_port',
+ type=int,
+ dest='port',
+ help='The port the worker should listen on')
+ args = parser.parse_args()
+
+ run_worker_server(args.port)
diff --git a/src/python/grpcio/tests/qps/worker_server.py b/src/python/grpcio/tests/qps/worker_server.py
new file mode 100644
index 0000000000..0b3acc14e7
--- /dev/null
+++ b/src/python/grpcio/tests/qps/worker_server.py
@@ -0,0 +1,184 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import multiprocessing
+import random
+import threading
+import time
+
+from grpc.beta import implementations
+from grpc.framework.interfaces.face import utilities
+from src.proto.grpc.testing import control_pb2
+from src.proto.grpc.testing import services_pb2
+from src.proto.grpc.testing import stats_pb2
+
+from tests.qps import benchmark_client
+from tests.qps import benchmark_server
+from tests.qps import client_runner
+from tests.qps import histogram
+from tests.unit import resources
+
+
+class WorkerServer(services_pb2.BetaWorkerServiceServicer):
+ """Python Worker Server implementation."""
+
+ def __init__(self):
+ self._quit_event = threading.Event()
+
+ def RunServer(self, request_iterator, context):
+ config = next(request_iterator).setup
+ server, port = self._create_server(config)
+ cores = multiprocessing.cpu_count()
+ server.start()
+ start_time = time.time()
+ yield self._get_server_status(start_time, start_time, port, cores)
+
+ for request in request_iterator:
+ end_time = time.time()
+ status = self._get_server_status(start_time, end_time, port, cores)
+ if request.mark.reset:
+ start_time = end_time
+ yield status
+ server.stop(0)
+
+ def _get_server_status(self, start_time, end_time, port, cores):
+ end_time = time.time()
+ elapsed_time = end_time - start_time
+ stats = stats_pb2.ServerStats(time_elapsed=elapsed_time,
+ time_user=elapsed_time,
+ time_system=elapsed_time)
+ return control_pb2.ServerStatus(stats=stats, port=port, cores=cores)
+
+ def _create_server(self, config):
+ if config.server_type == control_pb2.SYNC_SERVER:
+ servicer = benchmark_server.BenchmarkServer()
+ server = services_pb2.beta_create_BenchmarkService_server(servicer)
+ elif config.server_type == control_pb2.ASYNC_GENERIC_SERVER:
+ resp_size = config.payload_config.bytebuf_params.resp_size
+ servicer = benchmark_server.GenericBenchmarkServer(resp_size)
+ method_implementations = {
+ ('grpc.testing.BenchmarkService', 'StreamingCall'):
+ utilities.stream_stream_inline(servicer.StreamingCall),
+ ('grpc.testing.BenchmarkService', 'UnaryCall'):
+ utilities.unary_unary_inline(servicer.UnaryCall),
+ }
+ server = implementations.server(method_implementations)
+ else:
+ raise Exception('Unsupported server type {}'.format(config.server_type))
+
+ if config.HasField('security_params'): # Use SSL
+ server_creds = implementations.ssl_server_credentials([(
+ resources.private_key(), resources.certificate_chain())])
+ port = server.add_secure_port('[::]:{}'.format(config.port), server_creds)
+ else:
+ port = server.add_insecure_port('[::]:{}'.format(config.port))
+
+ return (server, port)
+
+ def RunClient(self, request_iterator, context):
+ config = next(request_iterator).setup
+ client_runners = []
+ qps_data = histogram.Histogram(config.histogram_params.resolution,
+ config.histogram_params.max_possible)
+ start_time = time.time()
+
+ # Create a client for each channel
+ for i in xrange(config.client_channels):
+ server = config.server_targets[i % len(config.server_targets)]
+ runner = self._create_client_runner(server, config, qps_data)
+ client_runners.append(runner)
+ runner.start()
+
+ end_time = time.time()
+ yield self._get_client_status(start_time, end_time, qps_data)
+
+ # Respond to stat requests
+ for request in request_iterator:
+ end_time = time.time()
+ status = self._get_client_status(start_time, end_time, qps_data)
+ if request.mark.reset:
+ qps_data.reset()
+ start_time = time.time()
+ yield status
+
+ # Cleanup the clients
+ for runner in client_runners:
+ runner.stop()
+
+ def _get_client_status(self, start_time, end_time, qps_data):
+ latencies = qps_data.get_data()
+ end_time = time.time()
+ elapsed_time = end_time - start_time
+ stats = stats_pb2.ClientStats(latencies=latencies,
+ time_elapsed=elapsed_time,
+ time_user=elapsed_time,
+ time_system=elapsed_time)
+ return control_pb2.ClientStatus(stats=stats)
+
+ def _create_client_runner(self, server, config, qps_data):
+ if config.client_type == control_pb2.SYNC_CLIENT:
+ if config.rpc_type == control_pb2.UNARY:
+ client = benchmark_client.UnarySyncBenchmarkClient(
+ server, config, qps_data)
+ else:
+ raise Exception('STREAMING SYNC client not supported')
+ elif config.client_type == control_pb2.ASYNC_CLIENT:
+ if config.rpc_type == control_pb2.UNARY:
+ client = benchmark_client.UnaryAsyncBenchmarkClient(
+ server, config, qps_data)
+ elif config.rpc_type == control_pb2.STREAMING:
+ client = benchmark_client.StreamingAsyncBenchmarkClient(
+ server, config, qps_data)
+ else:
+ raise Exception('Unsupported client type {}'.format(config.client_type))
+
+ # In multi-channel tests, we split the load across all channels
+ load_factor = float(config.client_channels)
+ if config.load_params.WhichOneof('load') == 'closed_loop':
+ runner = client_runner.ClosedLoopClientRunner(
+ client, config.outstanding_rpcs_per_channel)
+ else: # Open loop Poisson
+ alpha = config.load_params.poisson.offered_load / load_factor
+ def poisson():
+ while True:
+ yield random.expovariate(alpha)
+
+ runner = client_runner.OpenLoopClientRunner(client, poisson())
+
+ return runner
+
+ def CoreCount(self, request, context):
+ return control_pb2.CoreResponse(cores=multiprocessing.cpu_count())
+
+ def QuitWorker(self, request, context):
+ self._quit_event.set()
+ return control_pb2.Void()
+
+ def wait_for_quit(self):
+ self._quit_event.wait()
diff --git a/src/python/grpcio/tests/stress/__init__.py b/src/python/grpcio/tests/stress/__init__.py
new file mode 100644
index 0000000000..100a624dc9
--- /dev/null
+++ b/src/python/grpcio/tests/stress/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/python/grpcio/tests/stress/client.py b/src/python/grpcio/tests/stress/client.py
new file mode 100644
index 0000000000..e2e016760c
--- /dev/null
+++ b/src/python/grpcio/tests/stress/client.py
@@ -0,0 +1,135 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Entry point for running stress tests."""
+
+import argparse
+import Queue
+import threading
+
+from grpc.beta import implementations
+from src.proto.grpc.testing import metrics_pb2
+from src.proto.grpc.testing import test_pb2
+
+from tests.interop import methods
+from tests.qps import histogram
+from tests.stress import metrics_server
+from tests.stress import test_runner
+
+
+def _args():
+ parser = argparse.ArgumentParser(description='gRPC Python stress test client')
+ parser.add_argument(
+ '--server_addresses',
+ help='comma seperated list of hostname:port to run servers on',
+ default='localhost:8080', type=str)
+ parser.add_argument(
+ '--test_cases',
+ help='comma seperated list of testcase:weighting of tests to run',
+ default='large_unary:100',
+ type=str)
+ parser.add_argument(
+ '--test_duration_secs',
+ help='number of seconds to run the stress test',
+ default=-1, type=int)
+ parser.add_argument(
+ '--num_channels_per_server',
+ help='number of channels per server',
+ default=1, type=int)
+ parser.add_argument(
+ '--num_stubs_per_channel',
+ help='number of stubs to create per channel',
+ default=1, type=int)
+ parser.add_argument(
+ '--metrics_port',
+ help='the port to listen for metrics requests on',
+ default=8081, type=int)
+ return parser.parse_args()
+
+
+def _test_case_from_arg(test_case_arg):
+ for test_case in methods.TestCase:
+ if test_case_arg == test_case.value:
+ return test_case
+ else:
+ raise ValueError('No test case {}!'.format(test_case_arg))
+
+
+def _parse_weighted_test_cases(test_case_args):
+ weighted_test_cases = {}
+ for test_case_arg in test_case_args.split(','):
+ name, weight = test_case_arg.split(':', 1)
+ test_case = _test_case_from_arg(name)
+ weighted_test_cases[test_case] = int(weight)
+ return weighted_test_cases
+
+
+def run_test(args):
+ test_cases = _parse_weighted_test_cases(args.test_cases)
+ test_servers = args.server_addresses.split(',')
+ # Propagate any client exceptions with a queue
+ exception_queue = Queue.Queue()
+ stop_event = threading.Event()
+ hist = histogram.Histogram(1, 1)
+ runners = []
+
+ server = metrics_pb2.beta_create_MetricsService_server(
+ metrics_server.MetricsServer(hist))
+ server.add_insecure_port('[::]:{}'.format(args.metrics_port))
+ server.start()
+
+ for test_server in test_servers:
+ host, port = test_server.split(':', 1)
+ for _ in xrange(args.num_channels_per_server):
+ channel = implementations.insecure_channel(host, int(port))
+ for _ in xrange(args.num_stubs_per_channel):
+ stub = test_pb2.beta_create_TestService_stub(channel)
+ runner = test_runner.TestRunner(stub, test_cases, hist,
+ exception_queue, stop_event)
+ runners.append(runner)
+
+ for runner in runners:
+ runner.start()
+ try:
+ timeout_secs = args.test_duration_secs
+ if timeout_secs < 0:
+ timeout_secs = None
+ raise exception_queue.get(block=True, timeout=timeout_secs)
+ except Queue.Empty:
+ # No exceptions thrown, success
+ pass
+ finally:
+ stop_event.set()
+ for runner in runners:
+ runner.join()
+ runner = None
+ server.stop(0)
+
+if __name__ == '__main__':
+ run_test(_args())
diff --git a/src/ruby/bin/interop/interop_client.rb b/src/python/grpcio/tests/stress/metrics_server.py
index 239083f37f..b994e4643e 100755..100644
--- a/src/ruby/bin/interop/interop_client.rb
+++ b/src/python/grpcio/tests/stress/metrics_server.py
@@ -1,6 +1,4 @@
-#!/usr/bin/env ruby
-
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,23 +27,34 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# #######################################################################
-# DEPRECATED: The behaviour in this file has been moved to pb/test/client.rb
-#
-# This file remains to support existing tools and scripts that use it.
-# ######################################################################
-#
-# interop_client is a testing tool that accesses a gRPC interop testing
-# server and runs a test on it.
-#
-# Helps validate interoperation b/w different gRPC implementations.
-#
-# Usage: $ path/to/interop_client.rb --server_host=<hostname> \
-# --server_port=<port> \
-# --test_case=<testcase_name>
+"""MetricsService for publishing stress test qps data."""
+
+import time
+
+from src.proto.grpc.testing import metrics_pb2
+
+GAUGE_NAME = 'python_overall_qps'
+
+
+class MetricsServer(metrics_pb2.BetaMetricsServiceServicer):
+
+ def __init__(self, histogram):
+ self._start_time = time.time()
+ self._histogram = histogram
+
+ def _get_qps(self):
+ count = self._histogram.get_data().count
+ delta = time.time() - self._start_time
+ self._histogram.reset()
+ self._start_time = time.time()
+ return int(count/delta)
-this_dir = File.expand_path(File.dirname(__FILE__))
-pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb')
-$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
+ def GetAllGauges(self, request, context):
+ qps = self._get_qps()
+ return [metrics_pb2.GaugeResponse(name=GAUGE_NAME, long_value=qps)]
-require 'test/client'
+ def GetGauge(self, request, context):
+ if request.name != GAUGE_NAME:
+ raise Exception('Gauge {} does not exist'.format(request.name))
+ qps = self._get_qps()
+ return metrics_pb2.GaugeResponse(name=GAUGE_NAME, long_value=qps)
diff --git a/src/python/grpcio/grpc/framework/face/exceptions.py b/src/python/grpcio/tests/stress/test_runner.py
index f95455604d..88f13727e3 100644
--- a/src/python/grpcio/grpc/framework/face/exceptions.py
+++ b/src/python/grpcio/tests/stress/test_runner.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,52 +27,47 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Exceptions used in the Face layer of RPC Framework."""
-
-import abc
-
-import six
-
-
-class NoSuchMethodError(Exception):
- """Raised by customer code to indicate an unrecognized RPC method name.
-
- Attributes:
- name: The unrecognized name.
- """
-
- def __init__(self, name):
- """Constructor.
-
- Args:
- name: The unrecognized RPC method name.
- """
- super(NoSuchMethodError, self).__init__()
- self.name = name
-
-
-class RpcError(six.with_metaclass(abc.ABCMeta, Exception)):
- """Common super type for all exceptions raised by the Face layer.
-
- Only RPC Framework should instantiate and raise these exceptions.
- """
-
-
-class CancellationError(RpcError):
- """Indicates that an RPC has been cancelled."""
-
-
-class ExpirationError(RpcError):
- """Indicates that an RPC has expired ("timed out")."""
-
-
-class NetworkError(RpcError):
- """Indicates that some error occurred on the network."""
-
-
-class ServicedError(RpcError):
- """Indicates that the Serviced failed in the course of an RPC."""
-
-
-class ServicerError(RpcError):
- """Indicates that the Servicer failed in the course of servicing an RPC."""
+"""Thread that sends random weighted requests on a TestService stub."""
+
+import random
+import threading
+import time
+import traceback
+
+
+def _weighted_test_case_generator(weighted_cases):
+ weight_sum = sum(weighted_cases.itervalues())
+
+ while True:
+ val = random.uniform(0, weight_sum)
+ partial_sum = 0
+ for case in weighted_cases:
+ partial_sum += weighted_cases[case]
+ if val <= partial_sum:
+ yield case
+ break
+
+
+class TestRunner(threading.Thread):
+
+ def __init__(self, stub, test_cases, hist, exception_queue, stop_event):
+ super(TestRunner, self).__init__()
+ self._exception_queue = exception_queue
+ self._stop_event = stop_event
+ self._stub = stub
+ self._test_cases = _weighted_test_case_generator(test_cases)
+ self._histogram = hist
+
+ def run(self):
+ while not self._stop_event.is_set():
+ try:
+ test_case = next(self._test_cases)
+ start_time = time.time()
+ test_case.test_interoperability(self._stub, None)
+ end_time = time.time()
+ self._histogram.add((end_time - start_time)*1e9)
+ except Exception as e:
+ traceback.print_exc()
+ self._exception_queue.put(
+ Exception("An exception occured during test {}"
+ .format(test_case), e))
diff --git a/src/python/grpcio/tests/unit/_cython/_channel_test.py b/src/python/grpcio/tests/unit/_cython/_channel_test.py
index b414f8e6f6..931cd9083e 100644
--- a/src/python/grpcio/tests/unit/_cython/_channel_test.py
+++ b/src/python/grpcio/tests/unit/_cython/_channel_test.py
@@ -33,8 +33,7 @@ import unittest
from grpc._cython import cygrpc
-# TODO(nathaniel): This should be at least one hundred. Why not one thousand?
-_PARALLELISM = 4
+from tests.unit.framework.common import test_constants
def _channel_and_completion_queue():
@@ -61,7 +60,7 @@ def _create_loop_destroy():
def _in_parallel(behavior, arguments):
threads = tuple(
threading.Thread(target=behavior, args=arguments)
- for _ in range(_PARALLELISM))
+ for _ in range(test_constants.PARALLELISM))
for thread in threads:
thread.start()
for thread in threads:
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/base_util.py b/src/python/grpcio/tests/unit/framework/face/testing/base_util.py
deleted file mode 100644
index 59652b3e90..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/base_util.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities for creating Base-layer objects for use in Face-layer tests."""
-
-import abc
-
-import six
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.base import util as _base_util
-from grpc.framework.base import implementations
-from grpc.framework.base import in_memory
-from grpc.framework.base import interfaces # pylint: disable=unused-import
-from grpc.framework.foundation import logging_pool
-
-_POOL_SIZE_LIMIT = 5
-
-_MAXIMUM_TIMEOUT = 90
-
-
-class LinkedPair(six.with_metaclass(abc.ABCMeta)):
- """A Front and Back that are linked to one another.
-
- Attributes:
- front: An interfaces.Front.
- back: An interfaces.Back.
- """
-
- @abc.abstractmethod
- def shut_down(self):
- """Shuts down this object and releases its resources."""
- raise NotImplementedError()
-
-
-class _LinkedPair(LinkedPair):
-
- def __init__(self, front, back, pools):
- self.front = front
- self.back = back
- self._pools = pools
-
- def shut_down(self):
- _base_util.wait_for_idle(self.front)
- _base_util.wait_for_idle(self.back)
-
- for pool in self._pools:
- pool.shutdown(wait=True)
-
-
-def linked_pair(servicer, default_timeout):
- """Creates a Server and Stub linked together for use."""
- link_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- front_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- front_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- front_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- back_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- back_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- back_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
- pools = (
- link_pool,
- front_work_pool, front_transmission_pool, front_utility_pool,
- back_work_pool, back_transmission_pool, back_utility_pool)
-
- link = in_memory.Link(link_pool)
- front = implementations.front_link(
- front_work_pool, front_transmission_pool, front_utility_pool)
- back = implementations.back_link(
- servicer, back_work_pool, back_transmission_pool, back_utility_pool,
- default_timeout, _MAXIMUM_TIMEOUT)
- front.join_rear_link(link)
- link.join_fore_link(front)
- back.join_fore_link(link)
- link.join_rear_link(back)
-
- return _LinkedPair(front, back, pools)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py
deleted file mode 100644
index 2ebe1a32a4..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py
+++ /dev/null
@@ -1,224 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A test to verify an implementation of the Face layer of RPC Framework."""
-
-# unittest is referenced from specification in this module.
-import abc
-import unittest # pylint: disable=unused-import
-
-import six
-
-from grpc.framework.face import exceptions
-from tests.unit.framework.common import test_constants
-from tests.unit.framework.face.testing import control
-from tests.unit.framework.face.testing import coverage
-from tests.unit.framework.face.testing import digest
-from tests.unit.framework.face.testing import stock_service
-from tests.unit.framework.face.testing import test_case
-
-
-class BlockingInvocationInlineServiceTestCase(
- six.with_metaclass(abc.ABCMeta,
- test_case.FaceTestCase, coverage.BlockingCoverage)):
- """A test of the Face layer of RPC Framework.
-
- Concrete subclasses must also extend unittest.TestCase.
- """
-
- def setUp(self):
- """See unittest.TestCase.setUp for full specification.
-
- Overriding implementations must call this implementation.
- """
- self.control = control.PauseFailControl()
- self.digest = digest.digest(
- stock_service.STOCK_TEST_SERVICE, self.control, None)
-
- self.stub, self.memo = self.set_up_implementation(
- self.digest.name, self.digest.methods,
- self.digest.inline_method_implementations, None)
-
- def tearDown(self):
- """See unittest.TestCase.tearDown for full specification.
-
- Overriding implementations must call this implementation.
- """
- self.tear_down_implementation(self.memo)
-
- def testSuccessfulUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- response = self.stub.blocking_value_in_value_out(
- name, request, test_constants.LONG_TIMEOUT)
-
- test_messages.verify(request, response, self)
-
- def testSuccessfulUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.LONG_TIMEOUT)
- responses = list(response_iterator)
-
- test_messages.verify(request, responses, self)
-
- def testSuccessfulStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- response = self.stub.blocking_stream_in_value_out(
- name, iter(requests), test_constants.LONG_TIMEOUT)
-
- test_messages.verify(requests, response, self)
-
- def testSuccessfulStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, iter(requests), test_constants.LONG_TIMEOUT)
- responses = list(response_iterator)
-
- test_messages.verify(requests, responses, self)
-
- def testSequentialInvocations(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- first_request = test_messages.request()
- second_request = test_messages.request()
-
- first_response = self.stub.blocking_value_in_value_out(
- name, first_request, test_constants.SHORT_TIMEOUT)
-
- test_messages.verify(first_request, first_response, self)
-
- second_response = self.stub.blocking_value_in_value_out(
- name, second_request, test_constants.SHORT_TIMEOUT)
-
- test_messages.verify(second_request, second_response, self)
-
- def testExpiredUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.pause(), self.assertRaises(
- exceptions.ExpirationError):
- multi_callable = self.stub.unary_unary_multi_callable(name)
- multi_callable(request, test_constants.SHORT_TIMEOUT)
-
- def testExpiredUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.pause(), self.assertRaises(
- exceptions.ExpirationError):
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.SHORT_TIMEOUT)
- list(response_iterator)
-
- def testExpiredStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.pause(), self.assertRaises(
- exceptions.ExpirationError):
- multi_callable = self.stub.stream_unary_multi_callable(name)
- multi_callable(iter(requests), test_constants.SHORT_TIMEOUT)
-
- def testExpiredStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.pause(), self.assertRaises(
- exceptions.ExpirationError):
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
- list(response_iterator)
-
- def testFailedUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.fail(), self.assertRaises(exceptions.ServicerError):
- self.stub.blocking_value_in_value_out(name, request,
- test_constants.SHORT_TIMEOUT)
-
- def testFailedUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.fail(), self.assertRaises(exceptions.ServicerError):
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.SHORT_TIMEOUT)
- list(response_iterator)
-
- def testFailedStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.fail(), self.assertRaises(exceptions.ServicerError):
- self.stub.blocking_stream_in_value_out(name, iter(requests),
- test_constants.SHORT_TIMEOUT)
-
- def testFailedStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.fail(), self.assertRaises(exceptions.ServicerError):
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
- list(response_iterator)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/callback.py b/src/python/grpcio/tests/unit/framework/face/testing/callback.py
deleted file mode 100644
index d0e63c8c56..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/callback.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A utility useful in tests of asynchronous, event-driven interfaces."""
-
-import threading
-
-from grpc.framework.foundation import stream
-
-
-class Callback(stream.Consumer):
- """A utility object useful in tests of asynchronous code."""
-
- def __init__(self):
- self._condition = threading.Condition()
- self._unary_response = None
- self._streamed_responses = []
- self._completed = False
- self._abortion = None
-
- def abort(self, abortion):
- with self._condition:
- self._abortion = abortion
- self._condition.notify_all()
-
- def complete(self, unary_response):
- with self._condition:
- self._unary_response = unary_response
- self._completed = True
- self._condition.notify_all()
-
- def consume(self, streamed_response):
- with self._condition:
- self._streamed_responses.append(streamed_response)
-
- def terminate(self):
- with self._condition:
- self._completed = True
- self._condition.notify_all()
-
- def consume_and_terminate(self, streamed_response):
- with self._condition:
- self._streamed_responses.append(streamed_response)
- self._completed = True
- self._condition.notify_all()
-
- def block_until_terminated(self):
- with self._condition:
- while self._abortion is None and not self._completed:
- self._condition.wait()
-
- def response(self):
- with self._condition:
- if self._abortion is None:
- return self._unary_response
- else:
- raise AssertionError('Aborted with abortion "%s"!' % self._abortion)
-
- def responses(self):
- with self._condition:
- if self._abortion is None:
- return list(self._streamed_responses)
- else:
- raise AssertionError('Aborted with abortion "%s"!' % self._abortion)
-
- def abortion(self):
- with self._condition:
- return self._abortion
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/control.py b/src/python/grpcio/tests/unit/framework/face/testing/control.py
deleted file mode 100644
index 8425affcc9..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/control.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Code for instructing systems under test to block or fail."""
-
-import abc
-import contextlib
-import threading
-
-import six
-
-
-class Control(six.with_metaclass(abc.ABCMeta)):
- """An object that accepts program control from a system under test.
-
- Systems under test passed a Control should call its control() method
- frequently during execution. The control() method may block, raise an
- exception, or do nothing, all according to the enclosing test's desire for
- the system under test to simulate hanging, failing, or functioning.
- """
-
- @abc.abstractmethod
- def control(self):
- """Potentially does anything."""
- raise NotImplementedError()
-
-
-class PauseFailControl(Control):
- """A Control that can be used to pause or fail code under control."""
-
- def __init__(self):
- self._condition = threading.Condition()
- self._paused = False
- self._fail = False
-
- def control(self):
- with self._condition:
- if self._fail:
- raise ValueError()
-
- while self._paused:
- self._condition.wait()
-
- @contextlib.contextmanager
- def pause(self):
- """Pauses code under control while controlling code is in context."""
- with self._condition:
- self._paused = True
- yield
- with self._condition:
- self._paused = False
- self._condition.notify_all()
-
- @contextlib.contextmanager
- def fail(self):
- """Fails code under control while controlling code is in context."""
- with self._condition:
- self._fail = True
- yield
- with self._condition:
- self._fail = False
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/coverage.py b/src/python/grpcio/tests/unit/framework/face/testing/coverage.py
deleted file mode 100644
index 3c88b7841a..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/coverage.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Governs coverage for the tests of the Face layer of RPC Framework."""
-
-import abc
-
-import six
-
-# These classes are only valid when inherited by unittest.TestCases.
-# pylint: disable=invalid-name
-
-
-class BlockingCoverage(six.with_metaclass(abc.ABCMeta)):
- """Specification of test coverage for blocking behaviors."""
-
- @abc.abstractmethod
- def testSuccessfulUnaryRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testSuccessfulUnaryRequestStreamResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testSuccessfulStreamRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testSuccessfulStreamRequestStreamResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testSequentialInvocations(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testExpiredUnaryRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testExpiredUnaryRequestStreamResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testExpiredStreamRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testExpiredStreamRequestStreamResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testFailedUnaryRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testFailedUnaryRequestStreamResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testFailedStreamRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testFailedStreamRequestStreamResponse(self):
- raise NotImplementedError()
-
-
-class FullCoverage(six.with_metaclass(abc.ABCMeta, BlockingCoverage)):
- """Specification of test coverage for non-blocking behaviors."""
-
- @abc.abstractmethod
- def testParallelInvocations(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testWaitingForSomeButNotAllParallelInvocations(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testCancelledUnaryRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testCancelledUnaryRequestStreamResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testCancelledStreamRequestUnaryResponse(self):
- raise NotImplementedError()
-
- @abc.abstractmethod
- def testCancelledStreamRequestStreamResponse(self):
- raise NotImplementedError()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/digest.py b/src/python/grpcio/tests/unit/framework/face/testing/digest.py
deleted file mode 100644
index 2b45aded20..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/digest.py
+++ /dev/null
@@ -1,452 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Code for making a service.TestService more amenable to use in tests."""
-
-import collections
-import threading
-
-import six
-
-# testing_control, interfaces, and testing_service are referenced from
-# specification in this module.
-from grpc.framework.common import cardinality
-from grpc.framework.common import style
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces as face_interfaces
-from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_util
-from tests.unit.framework.face.testing import control as testing_control # pylint: disable=unused-import
-from tests.unit.framework.face.testing import interfaces # pylint: disable=unused-import
-from tests.unit.framework.face.testing import service as testing_service # pylint: disable=unused-import
-
-_IDENTITY = lambda x: x
-
-
-class TestServiceDigest(
- collections.namedtuple(
- 'TestServiceDigest',
- ['name',
- 'methods',
- 'inline_method_implementations',
- 'event_method_implementations',
- 'multi_method_implementation',
- 'unary_unary_messages_sequences',
- 'unary_stream_messages_sequences',
- 'stream_unary_messages_sequences',
- 'stream_stream_messages_sequences'])):
- """A transformation of a service.TestService.
-
- Attributes:
- name: The RPC service name to be used in the test.
- methods: A sequence of interfaces.Method objects describing the RPC
- methods that will be called during the test.
- inline_method_implementations: A dict from RPC method name to
- face_interfaces.MethodImplementation object to be used in tests of
- in-line calls to behaviors under test.
- event_method_implementations: A dict from RPC method name to
- face_interfaces.MethodImplementation object to be used in tests of
- event-driven calls to behaviors under test.
- multi_method_implementation: A face_interfaces.MultiMethodImplementation to
- be used in tests of generic calls to behaviors under test.
- unary_unary_messages_sequences: A dict from method name to sequence of
- service.UnaryUnaryTestMessages objects to be used to test the method
- with the given name.
- unary_stream_messages_sequences: A dict from method name to sequence of
- service.UnaryStreamTestMessages objects to be used to test the method
- with the given name.
- stream_unary_messages_sequences: A dict from method name to sequence of
- service.StreamUnaryTestMessages objects to be used to test the method
- with the given name.
- stream_stream_messages_sequences: A dict from method name to sequence of
- service.StreamStreamTestMessages objects to be used to test the
- method with the given name.
- serialization: A serial.Serialization object describing serialization
- behaviors for all the RPC methods.
- """
-
-
-class _BufferingConsumer(stream.Consumer):
- """A trivial Consumer that dumps what it consumes in a user-mutable buffer."""
-
- def __init__(self):
- self.consumed = []
- self.terminated = False
-
- def consume(self, value):
- self.consumed.append(value)
-
- def terminate(self):
- self.terminated = True
-
- def consume_and_terminate(self, value):
- self.consumed.append(value)
- self.terminated = True
-
-
-class _InlineUnaryUnaryMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, unary_unary_test_method, control):
- self._test_method = unary_unary_test_method
- self._control = control
-
- self.cardinality = cardinality.Cardinality.UNARY_UNARY
- self.style = style.Service.INLINE
-
- def unary_unary_inline(self, request, context):
- response_list = []
- self._test_method.service(
- request, response_list.append, context, self._control)
- return response_list.pop(0)
-
-
-class _EventUnaryUnaryMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, unary_unary_test_method, control, pool):
- self._test_method = unary_unary_test_method
- self._control = control
- self._pool = pool
-
- self.cardinality = cardinality.Cardinality.UNARY_UNARY
- self.style = style.Service.EVENT
-
- def unary_unary_event(self, request, response_callback, context):
- if self._pool is None:
- self._test_method.service(
- request, response_callback, context, self._control)
- else:
- self._pool.submit(
- self._test_method.service, request, response_callback, context,
- self._control)
-
-
-class _InlineUnaryStreamMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, unary_stream_test_method, control):
- self._test_method = unary_stream_test_method
- self._control = control
-
- self.cardinality = cardinality.Cardinality.UNARY_STREAM
- self.style = style.Service.INLINE
-
- def unary_stream_inline(self, request, context):
- response_consumer = _BufferingConsumer()
- self._test_method.service(
- request, response_consumer, context, self._control)
- for response in response_consumer.consumed:
- yield response
-
-
-class _EventUnaryStreamMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, unary_stream_test_method, control, pool):
- self._test_method = unary_stream_test_method
- self._control = control
- self._pool = pool
-
- self.cardinality = cardinality.Cardinality.UNARY_STREAM
- self.style = style.Service.EVENT
-
- def unary_stream_event(self, request, response_consumer, context):
- if self._pool is None:
- self._test_method.service(
- request, response_consumer, context, self._control)
- else:
- self._pool.submit(
- self._test_method.service, request, response_consumer, context,
- self._control)
-
-
-class _InlineStreamUnaryMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, stream_unary_test_method, control):
- self._test_method = stream_unary_test_method
- self._control = control
-
- self.cardinality = cardinality.Cardinality.STREAM_UNARY
- self.style = style.Service.INLINE
-
- def stream_unary_inline(self, request_iterator, context):
- response_list = []
- request_consumer = self._test_method.service(
- response_list.append, context, self._control)
- for request in request_iterator:
- request_consumer.consume(request)
- request_consumer.terminate()
- return response_list.pop(0)
-
-
-class _EventStreamUnaryMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, stream_unary_test_method, control, pool):
- self._test_method = stream_unary_test_method
- self._control = control
- self._pool = pool
-
- self.cardinality = cardinality.Cardinality.STREAM_UNARY
- self.style = style.Service.EVENT
-
- def stream_unary_event(self, response_callback, context):
- request_consumer = self._test_method.service(
- response_callback, context, self._control)
- if self._pool is None:
- return request_consumer
- else:
- return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool)
-
-
-class _InlineStreamStreamMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, stream_stream_test_method, control):
- self._test_method = stream_stream_test_method
- self._control = control
-
- self.cardinality = cardinality.Cardinality.STREAM_STREAM
- self.style = style.Service.INLINE
-
- def stream_stream_inline(self, request_iterator, context):
- response_consumer = _BufferingConsumer()
- request_consumer = self._test_method.service(
- response_consumer, context, self._control)
-
- for request in request_iterator:
- request_consumer.consume(request)
- while response_consumer.consumed:
- yield response_consumer.consumed.pop(0)
- response_consumer.terminate()
-
-
-class _EventStreamStreamMethod(face_interfaces.MethodImplementation):
-
- def __init__(self, stream_stream_test_method, control, pool):
- self._test_method = stream_stream_test_method
- self._control = control
- self._pool = pool
-
- self.cardinality = cardinality.Cardinality.STREAM_STREAM
- self.style = style.Service.EVENT
-
- def stream_stream_event(self, response_consumer, context):
- request_consumer = self._test_method.service(
- response_consumer, context, self._control)
- if self._pool is None:
- return request_consumer
- else:
- return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool)
-
-
-class _UnaryConsumer(stream.Consumer):
- """A Consumer that only allows consumption of exactly one value."""
-
- def __init__(self, action):
- self._lock = threading.Lock()
- self._action = action
- self._consumed = False
- self._terminated = False
-
- def consume(self, value):
- with self._lock:
- if self._consumed:
- raise ValueError('Unary consumer already consumed!')
- elif self._terminated:
- raise ValueError('Unary consumer already terminated!')
- else:
- self._consumed = True
-
- self._action(value)
-
- def terminate(self):
- with self._lock:
- if not self._consumed:
- raise ValueError('Unary consumer hasn\'t yet consumed!')
- elif self._terminated:
- raise ValueError('Unary consumer already terminated!')
- else:
- self._terminated = True
-
- def consume_and_terminate(self, value):
- with self._lock:
- if self._consumed:
- raise ValueError('Unary consumer already consumed!')
- elif self._terminated:
- raise ValueError('Unary consumer already terminated!')
- else:
- self._consumed = True
- self._terminated = True
-
- self._action(value)
-
-
-class _UnaryUnaryAdaptation(object):
-
- def __init__(self, unary_unary_test_method):
- self._method = unary_unary_test_method
-
- def service(self, response_consumer, context, control):
- def action(request):
- self._method.service(
- request, response_consumer.consume_and_terminate, context, control)
- return _UnaryConsumer(action)
-
-
-class _UnaryStreamAdaptation(object):
-
- def __init__(self, unary_stream_test_method):
- self._method = unary_stream_test_method
-
- def service(self, response_consumer, context, control):
- def action(request):
- self._method.service(request, response_consumer, context, control)
- return _UnaryConsumer(action)
-
-
-class _StreamUnaryAdaptation(object):
-
- def __init__(self, stream_unary_test_method):
- self._method = stream_unary_test_method
-
- def service(self, response_consumer, context, control):
- return self._method.service(
- response_consumer.consume_and_terminate, context, control)
-
-
-class _MultiMethodImplementation(face_interfaces.MultiMethodImplementation):
-
- def __init__(self, methods, control, pool):
- self._methods = methods
- self._control = control
- self._pool = pool
-
- def service(self, name, response_consumer, context):
- method = self._methods.get(name, None)
- if method is None:
- raise exceptions.NoSuchMethodError(name)
- elif self._pool is None:
- return method(response_consumer, context, self._control)
- else:
- request_consumer = method(response_consumer, context, self._control)
- return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool)
-
-
-class _Assembly(
- collections.namedtuple(
- '_Assembly',
- ['methods', 'inlines', 'events', 'adaptations', 'messages'])):
- """An intermediate structure created when creating a TestServiceDigest."""
-
-
-def _assemble(
- scenarios, names, inline_method_constructor, event_method_constructor,
- adapter, control, pool):
- """Creates an _Assembly from the given scenarios."""
- methods = []
- inlines = {}
- events = {}
- adaptations = {}
- messages = {}
- for name, scenario in six.iteritems(scenarios):
- if name in names:
- raise ValueError('Repeated name "%s"!' % name)
-
- test_method = scenario[0]
- inline_method = inline_method_constructor(test_method, control)
- event_method = event_method_constructor(test_method, control, pool)
- adaptation = adapter(test_method)
-
- methods.append(test_method)
- inlines[name] = inline_method
- events[name] = event_method
- adaptations[name] = adaptation
- messages[name] = scenario[1]
-
- return _Assembly(methods, inlines, events, adaptations, messages)
-
-
-def digest(service, control, pool):
- """Creates a TestServiceDigest from a TestService.
-
- Args:
- service: A testing_service.TestService.
- control: A testing_control.Control.
- pool: If RPC methods should be serviced in a separate thread, a thread pool.
- None if RPC methods should be serviced in the thread belonging to the
- run-time that calls for their service.
-
- Returns:
- A TestServiceDigest synthesized from the given service.TestService.
- """
- names = set()
-
- unary_unary = _assemble(
- service.unary_unary_scenarios(), names, _InlineUnaryUnaryMethod,
- _EventUnaryUnaryMethod, _UnaryUnaryAdaptation, control, pool)
- names.update(set(unary_unary.inlines))
-
- unary_stream = _assemble(
- service.unary_stream_scenarios(), names, _InlineUnaryStreamMethod,
- _EventUnaryStreamMethod, _UnaryStreamAdaptation, control, pool)
- names.update(set(unary_stream.inlines))
-
- stream_unary = _assemble(
- service.stream_unary_scenarios(), names, _InlineStreamUnaryMethod,
- _EventStreamUnaryMethod, _StreamUnaryAdaptation, control, pool)
- names.update(set(stream_unary.inlines))
-
- stream_stream = _assemble(
- service.stream_stream_scenarios(), names, _InlineStreamStreamMethod,
- _EventStreamStreamMethod, _IDENTITY, control, pool)
- names.update(set(stream_stream.inlines))
-
- methods = list(unary_unary.methods)
- methods.extend(unary_stream.methods)
- methods.extend(stream_unary.methods)
- methods.extend(stream_stream.methods)
- adaptations = dict(unary_unary.adaptations)
- adaptations.update(unary_stream.adaptations)
- adaptations.update(stream_unary.adaptations)
- adaptations.update(stream_stream.adaptations)
- inlines = dict(unary_unary.inlines)
- inlines.update(unary_stream.inlines)
- inlines.update(stream_unary.inlines)
- inlines.update(stream_stream.inlines)
- events = dict(unary_unary.events)
- events.update(unary_stream.events)
- events.update(stream_unary.events)
- events.update(stream_stream.events)
-
- return TestServiceDigest(
- service.name(),
- methods,
- inlines,
- events,
- _MultiMethodImplementation(adaptations, control, pool),
- unary_unary.messages,
- unary_stream.messages,
- stream_unary.messages,
- stream_stream.messages)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
deleted file mode 100644
index 98b61e492c..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
+++ /dev/null
@@ -1,378 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A test to verify an implementation of the Face layer of RPC Framework."""
-
-import abc
-import unittest
-
-import six
-
-from grpc.framework.face import interfaces
-from tests.unit.framework.common import test_constants
-from tests.unit.framework.face.testing import callback as testing_callback
-from tests.unit.framework.face.testing import control
-from tests.unit.framework.face.testing import coverage
-from tests.unit.framework.face.testing import digest
-from tests.unit.framework.face.testing import stock_service
-from tests.unit.framework.face.testing import test_case
-
-
-class EventInvocationSynchronousEventServiceTestCase(
- six.with_metaclass(abc.ABCMeta,
- test_case.FaceTestCase, coverage.FullCoverage)):
- """A test of the Face layer of RPC Framework.
-
- Concrete subclasses must also extend unittest.TestCase.
- """
-
- def setUp(self):
- """See unittest.TestCase.setUp for full specification.
-
- Overriding implementations must call this implementation.
- """
- self.control = control.PauseFailControl()
- self.digest = digest.digest(
- stock_service.STOCK_TEST_SERVICE, self.control, None)
-
- self.stub, self.memo = self.set_up_implementation(
- self.digest.name, self.digest.methods,
- self.digest.event_method_implementations, None)
-
- def tearDown(self):
- """See unittest.TestCase.tearDown for full specification.
-
- Overriding implementations must call this implementation.
- """
- self.tear_down_implementation(self.memo)
-
- def testSuccessfulUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- self.stub.event_value_in_value_out(
- name, request, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
- response = callback.response()
-
- test_messages.verify(request, response, self)
-
- def testSuccessfulUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- self.stub.event_value_in_stream_out(
- name, request, callback, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
- responses = callback.responses()
-
- test_messages.verify(request, responses, self)
-
- def testSuccessfulStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- callback = testing_callback.Callback()
-
- unused_call, request_consumer = self.stub.event_stream_in_value_out(
- name, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- for request in requests:
- request_consumer.consume(request)
- request_consumer.terminate()
- callback.block_until_terminated()
- response = callback.response()
-
- test_messages.verify(requests, response, self)
-
- def testSuccessfulStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- callback = testing_callback.Callback()
-
- unused_call, request_consumer = self.stub.event_stream_in_stream_out(
- name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
- for request in requests:
- request_consumer.consume(request)
- request_consumer.terminate()
- callback.block_until_terminated()
- responses = callback.responses()
-
- test_messages.verify(requests, responses, self)
-
- def testSequentialInvocations(self):
- # pylint: disable=cell-var-from-loop
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- first_request = test_messages.request()
- second_request = test_messages.request()
- first_callback = testing_callback.Callback()
- second_callback = testing_callback.Callback()
-
- def make_second_invocation(first_response):
- first_callback.complete(first_response)
- self.stub.event_value_in_value_out(
- name, second_request, second_callback.complete,
- second_callback.abort, test_constants.SHORT_TIMEOUT)
-
- self.stub.event_value_in_value_out(
- name, first_request, make_second_invocation, first_callback.abort,
- test_constants.SHORT_TIMEOUT)
- second_callback.block_until_terminated()
-
- first_response = first_callback.response()
- second_response = second_callback.response()
- test_messages.verify(first_request, first_response, self)
- test_messages.verify(second_request, second_response, self)
-
- def testExpiredUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- with self.control.pause():
- self.stub.event_value_in_value_out(
- name, request, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
- def testExpiredUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- with self.control.pause():
- self.stub.event_value_in_stream_out(
- name, request, callback, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
- def testExpiredStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for unused_test_messages in test_messages_sequence:
- callback = testing_callback.Callback()
-
- self.stub.event_stream_in_value_out(
- name, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
- def testExpiredStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- callback = testing_callback.Callback()
-
- unused_call, request_consumer = self.stub.event_stream_in_stream_out(
- name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
- for request in requests:
- request_consumer.consume(request)
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
- def testFailedUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- with self.control.fail():
- self.stub.event_value_in_value_out(
- name, request, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.SERVICER_FAILURE,
- callback.abortion())
-
- def testFailedUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- with self.control.fail():
- self.stub.event_value_in_stream_out(
- name, request, callback, callback.abort,
- test_constants.SHORT_TIMEOUT)
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.SERVICER_FAILURE,
- callback.abortion())
-
- def testFailedStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- callback = testing_callback.Callback()
-
- with self.control.fail():
- unused_call, request_consumer = self.stub.event_stream_in_value_out(
- name, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- for request in requests:
- request_consumer.consume(request)
- request_consumer.terminate()
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.SERVICER_FAILURE,
- callback.abortion())
-
- def testFailedStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- callback = testing_callback.Callback()
-
- with self.control.fail():
- unused_call, request_consumer = self.stub.event_stream_in_stream_out(
- name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
- for request in requests:
- request_consumer.consume(request)
- request_consumer.terminate()
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.SERVICER_FAILURE, callback.abortion())
-
- def testParallelInvocations(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- first_request = test_messages.request()
- first_callback = testing_callback.Callback()
- second_request = test_messages.request()
- second_callback = testing_callback.Callback()
-
- self.stub.event_value_in_value_out(
- name, first_request, first_callback.complete, first_callback.abort,
- test_constants.SHORT_TIMEOUT)
- self.stub.event_value_in_value_out(
- name, second_request, second_callback.complete,
- second_callback.abort, test_constants.SHORT_TIMEOUT)
- first_callback.block_until_terminated()
- second_callback.block_until_terminated()
-
- first_response = first_callback.response()
- second_response = second_callback.response()
- test_messages.verify(first_request, first_response, self)
- test_messages.verify(second_request, second_response, self)
-
- @unittest.skip('TODO(nathaniel): implement.')
- def testWaitingForSomeButNotAllParallelInvocations(self):
- raise NotImplementedError()
-
- def testCancelledUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- with self.control.pause():
- call = self.stub.event_value_in_value_out(
- name, request, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- call.cancel()
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
-
- def testCancelledUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
- callback = testing_callback.Callback()
-
- call = self.stub.event_value_in_stream_out(
- name, request, callback, callback.abort,
- test_constants.SHORT_TIMEOUT)
- call.cancel()
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
-
- def testCancelledStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- callback = testing_callback.Callback()
-
- call, request_consumer = self.stub.event_stream_in_value_out(
- name, callback.complete, callback.abort,
- test_constants.SHORT_TIMEOUT)
- for request in requests:
- request_consumer.consume(request)
- call.cancel()
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
-
- def testCancelledStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for unused_test_messages in test_messages_sequence:
- callback = testing_callback.Callback()
-
- call, unused_request_consumer = self.stub.event_stream_in_stream_out(
- name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
- call.cancel()
- callback.block_until_terminated()
-
- self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
deleted file mode 100644
index cae791af97..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
+++ /dev/null
@@ -1,384 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A test to verify an implementation of the Face layer of RPC Framework."""
-
-import abc
-import contextlib
-import threading
-import unittest
-
-import six
-
-from grpc.framework.face import exceptions
-from grpc.framework.foundation import future
-from grpc.framework.foundation import logging_pool
-from tests.unit.framework.common import test_constants
-from tests.unit.framework.face.testing import control
-from tests.unit.framework.face.testing import coverage
-from tests.unit.framework.face.testing import digest
-from tests.unit.framework.face.testing import stock_service
-from tests.unit.framework.face.testing import test_case
-
-_MAXIMUM_POOL_SIZE = 10
-
-
-class _PauseableIterator(object):
-
- def __init__(self, upstream):
- self._upstream = upstream
- self._condition = threading.Condition()
- self._paused = False
-
- @contextlib.contextmanager
- def pause(self):
- with self._condition:
- self._paused = True
- yield
- with self._condition:
- self._paused = False
- self._condition.notify_all()
-
- def __iter__(self):
- return self
-
- def __next__(self):
- return self.next()
-
- def next(self):
- with self._condition:
- while self._paused:
- self._condition.wait()
- return next(self._upstream)
-
-
-class FutureInvocationAsynchronousEventServiceTestCase(
- six.with_metaclass(abc.ABCMeta,
- test_case.FaceTestCase, coverage.FullCoverage)):
- """A test of the Face layer of RPC Framework.
-
- Concrete subclasses must also extend unittest.TestCase.
- """
-
- def setUp(self):
- """See unittest.TestCase.setUp for full specification.
-
- Overriding implementations must call this implementation.
- """
- self.control = control.PauseFailControl()
- self.digest_pool = logging_pool.pool(_MAXIMUM_POOL_SIZE)
- self.digest = digest.digest(
- stock_service.STOCK_TEST_SERVICE, self.control, self.digest_pool)
-
- self.stub, self.memo = self.set_up_implementation(
- self.digest.name, self.digest.methods,
- self.digest.event_method_implementations, None)
-
- def tearDown(self):
- """See unittest.TestCase.tearDown for full specification.
-
- Overriding implementations must call this implementation.
- """
- self.tear_down_implementation(self.memo)
- self.digest_pool.shutdown(wait=True)
-
- def testSuccessfulUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- response_future = self.stub.future_value_in_value_out(
- name, request, test_constants.SHORT_TIMEOUT)
- response = response_future.result()
-
- test_messages.verify(request, response, self)
-
- def testSuccessfulUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.SHORT_TIMEOUT)
- responses = list(response_iterator)
-
- test_messages.verify(request, responses, self)
-
- def testSuccessfulStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- request_iterator = _PauseableIterator(iter(requests))
-
- # Use of a paused iterator of requests allows us to test that control is
- # returned to calling code before the iterator yields any requests.
- with request_iterator.pause():
- response_future = self.stub.future_stream_in_value_out(
- name, request_iterator, test_constants.SHORT_TIMEOUT)
- response = response_future.result()
-
- test_messages.verify(requests, response, self)
-
- def testSuccessfulStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
- request_iterator = _PauseableIterator(iter(requests))
-
- # Use of a paused iterator of requests allows us to test that control is
- # returned to calling code before the iterator yields any requests.
- with request_iterator.pause():
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, request_iterator, test_constants.SHORT_TIMEOUT)
- responses = list(response_iterator)
-
- test_messages.verify(requests, responses, self)
-
- def testSequentialInvocations(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- first_request = test_messages.request()
- second_request = test_messages.request()
-
- first_response_future = self.stub.future_value_in_value_out(
- name, first_request, test_constants.SHORT_TIMEOUT)
- first_response = first_response_future.result()
-
- test_messages.verify(first_request, first_response, self)
-
- second_response_future = self.stub.future_value_in_value_out(
- name, second_request, test_constants.SHORT_TIMEOUT)
- second_response = second_response_future.result()
-
- test_messages.verify(second_request, second_response, self)
-
- def testExpiredUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.pause():
- multi_callable = self.stub.unary_unary_multi_callable(name)
- response_future = multi_callable.future(request,
- test_constants.SHORT_TIMEOUT)
- self.assertIsInstance(
- response_future.exception(), exceptions.ExpirationError)
- with self.assertRaises(exceptions.ExpirationError):
- response_future.result()
-
- def testExpiredUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.pause():
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.SHORT_TIMEOUT)
- with self.assertRaises(exceptions.ExpirationError):
- list(response_iterator)
-
- def testExpiredStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.pause():
- multi_callable = self.stub.stream_unary_multi_callable(name)
- response_future = multi_callable.future(iter(requests),
- test_constants.SHORT_TIMEOUT)
- self.assertIsInstance(
- response_future.exception(), exceptions.ExpirationError)
- with self.assertRaises(exceptions.ExpirationError):
- response_future.result()
-
- def testExpiredStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.pause():
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
- with self.assertRaises(exceptions.ExpirationError):
- list(response_iterator)
-
- def testFailedUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.fail():
- response_future = self.stub.future_value_in_value_out(
- name, request, test_constants.SHORT_TIMEOUT)
-
- # Because the servicer fails outside of the thread from which the
- # servicer-side runtime called into it its failure is
- # indistinguishable from simply not having called its
- # response_callback before the expiration of the RPC.
- self.assertIsInstance(
- response_future.exception(), exceptions.ExpirationError)
- with self.assertRaises(exceptions.ExpirationError):
- response_future.result()
-
- def testFailedUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- # Because the servicer fails outside of the thread from which the
- # servicer-side runtime called into it its failure is indistinguishable
- # from simply not having called its response_consumer before the
- # expiration of the RPC.
- with self.control.fail(), self.assertRaises(exceptions.ExpirationError):
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.SHORT_TIMEOUT)
- list(response_iterator)
-
- def testFailedStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.fail():
- response_future = self.stub.future_stream_in_value_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
-
- # Because the servicer fails outside of the thread from which the
- # servicer-side runtime called into it its failure is
- # indistinguishable from simply not having called its
- # response_callback before the expiration of the RPC.
- self.assertIsInstance(
- response_future.exception(), exceptions.ExpirationError)
- with self.assertRaises(exceptions.ExpirationError):
- response_future.result()
-
- def testFailedStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- # Because the servicer fails outside of the thread from which the
- # servicer-side runtime called into it its failure is indistinguishable
- # from simply not having called its response_consumer before the
- # expiration of the RPC.
- with self.control.fail(), self.assertRaises(exceptions.ExpirationError):
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
- list(response_iterator)
-
- def testParallelInvocations(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- first_request = test_messages.request()
- second_request = test_messages.request()
-
- # TODO(bug 2039): use LONG_TIMEOUT instead
- first_response_future = self.stub.future_value_in_value_out(
- name, first_request, test_constants.SHORT_TIMEOUT)
- second_response_future = self.stub.future_value_in_value_out(
- name, second_request, test_constants.SHORT_TIMEOUT)
- first_response = first_response_future.result()
- second_response = second_response_future.result()
-
- test_messages.verify(first_request, first_response, self)
- test_messages.verify(second_request, second_response, self)
-
- @unittest.skip('TODO(nathaniel): implement.')
- def testWaitingForSomeButNotAllParallelInvocations(self):
- raise NotImplementedError()
-
- def testCancelledUnaryRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.pause():
- response_future = self.stub.future_value_in_value_out(
- name, request, test_constants.SHORT_TIMEOUT)
- cancel_method_return_value = response_future.cancel()
-
- self.assertFalse(cancel_method_return_value)
- self.assertTrue(response_future.cancelled())
-
- def testCancelledUnaryRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.unary_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- request = test_messages.request()
-
- with self.control.pause():
- response_iterator = self.stub.inline_value_in_stream_out(
- name, request, test_constants.SHORT_TIMEOUT)
- response_iterator.cancel()
-
- with self.assertRaises(future.CancelledError):
- next(response_iterator)
-
- def testCancelledStreamRequestUnaryResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_unary_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.pause():
- response_future = self.stub.future_stream_in_value_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
- cancel_method_return_value = response_future.cancel()
-
- self.assertFalse(cancel_method_return_value)
- self.assertTrue(response_future.cancelled())
-
- def testCancelledStreamRequestStreamResponse(self):
- for name, test_messages_sequence in (
- six.iteritems(self.digest.stream_stream_messages_sequences)):
- for test_messages in test_messages_sequence:
- requests = test_messages.requests()
-
- with self.control.pause():
- response_iterator = self.stub.inline_stream_in_stream_out(
- name, iter(requests), test_constants.SHORT_TIMEOUT)
- response_iterator.cancel()
-
- with self.assertRaises(future.CancelledError):
- next(response_iterator)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/interfaces.py b/src/python/grpcio/tests/unit/framework/face/testing/interfaces.py
deleted file mode 100644
index 8a25f89c88..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/interfaces.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces implemented by data sets used in Face-layer tests."""
-
-import abc
-
-import six
-
-# cardinality is referenced from specification in this module.
-from grpc.framework.common import cardinality # pylint: disable=unused-import
-
-
-class Method(six.with_metaclass(abc.ABCMeta)):
- """An RPC method to be used in tests of RPC implementations."""
-
- @abc.abstractmethod
- def name(self):
- """Identify the name of the method.
-
- Returns:
- The name of the method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def cardinality(self):
- """Identify the cardinality of the method.
-
- Returns:
- A cardinality.Cardinality value describing the streaming semantics of the
- method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def request_class(self):
- """Identify the class used for the method's request objects.
-
- Returns:
- The class object of the class to which the method's request objects
- belong.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def response_class(self):
- """Identify the class used for the method's response objects.
-
- Returns:
- The class object of the class to which the method's response objects
- belong.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def serialize_request(self, request):
- """Serialize the given request object.
-
- Args:
- request: A request object appropriate for this method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def deserialize_request(self, serialized_request):
- """Synthesize a request object from a given bytestring.
-
- Args:
- serialized_request: A bytestring deserializable into a request object
- appropriate for this method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def serialize_response(self, response):
- """Serialize the given response object.
-
- Args:
- response: A response object appropriate for this method.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def deserialize_response(self, serialized_response):
- """Synthesize a response object from a given bytestring.
-
- Args:
- serialized_response: A bytestring deserializable into a response object
- appropriate for this method.
- """
- raise NotImplementedError()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/service.py b/src/python/grpcio/tests/unit/framework/face/testing/service.py
deleted file mode 100644
index 3e4228cc07..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/service.py
+++ /dev/null
@@ -1,321 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Private interfaces implemented by data sets used in Face-layer tests."""
-
-import abc
-
-import six
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.face import interfaces as face_interfaces # pylint: disable=unused-import
-from tests.unit.framework.face.testing import interfaces
-
-
-class UnaryUnaryTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
- """A controllable implementation of a unary-unary RPC method."""
-
- @abc.abstractmethod
- def service(self, request, response_callback, context, control):
- """Services an RPC that accepts one message and produces one message.
-
- Args:
- request: The single request message for the RPC.
- response_callback: A callback to be called to accept the response message
- of the RPC.
- context: An face_interfaces.RpcContext object.
- control: A test_control.Control to control execution of this method.
-
- Raises:
- abandonment.Abandoned: May or may not be raised when the RPC has been
- aborted.
- """
- raise NotImplementedError()
-
-
-class UnaryUnaryTestMessages(six.with_metaclass(abc.ABCMeta)):
- """A type for unary-request-unary-response message pairings."""
-
- @abc.abstractmethod
- def request(self):
- """Affords a request message.
-
- Implementations of this method should return a different message with each
- call so that multiple test executions of the test method may be made with
- different inputs.
-
- Returns:
- A request message.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def verify(self, request, response, test_case):
- """Verifies that the computed response matches the given request.
-
- Args:
- request: A request message.
- response: A response message.
- test_case: A unittest.TestCase object affording useful assertion methods.
-
- Raises:
- AssertionError: If the request and response do not match, indicating that
- there was some problem executing the RPC under test.
- """
- raise NotImplementedError()
-
-
-class UnaryStreamTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
- """A controllable implementation of a unary-stream RPC method."""
-
- @abc.abstractmethod
- def service(self, request, response_consumer, context, control):
- """Services an RPC that takes one message and produces a stream of messages.
-
- Args:
- request: The single request message for the RPC.
- response_consumer: A stream.Consumer to be called to accept the response
- messages of the RPC.
- context: A face_interfaces.RpcContext object.
- control: A test_control.Control to control execution of this method.
-
- Raises:
- abandonment.Abandoned: May or may not be raised when the RPC has been
- aborted.
- """
- raise NotImplementedError()
-
-
-class UnaryStreamTestMessages(six.with_metaclass(abc.ABCMeta)):
- """A type for unary-request-stream-response message pairings."""
-
- @abc.abstractmethod
- def request(self):
- """Affords a request message.
-
- Implementations of this method should return a different message with each
- call so that multiple test executions of the test method may be made with
- different inputs.
-
- Returns:
- A request message.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def verify(self, request, responses, test_case):
- """Verifies that the computed responses match the given request.
-
- Args:
- request: A request message.
- responses: A sequence of response messages.
- test_case: A unittest.TestCase object affording useful assertion methods.
-
- Raises:
- AssertionError: If the request and responses do not match, indicating that
- there was some problem executing the RPC under test.
- """
- raise NotImplementedError()
-
-
-class StreamUnaryTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
- """A controllable implementation of a stream-unary RPC method."""
-
- @abc.abstractmethod
- def service(self, response_callback, context, control):
- """Services an RPC that takes a stream of messages and produces one message.
-
- Args:
- response_callback: A callback to be called to accept the response message
- of the RPC.
- context: A face_interfaces.RpcContext object.
- control: A test_control.Control to control execution of this method.
-
- Returns:
- A stream.Consumer with which to accept the request messages of the RPC.
- The consumer returned from this method may or may not be invoked to
- completion: in the case of RPC abortion, RPC Framework will simply stop
- passing messages to this object. Implementations must not assume that
- this object will be called to completion of the request stream or even
- called at all.
-
- Raises:
- abandonment.Abandoned: May or may not be raised when the RPC has been
- aborted.
- """
- raise NotImplementedError()
-
-
-class StreamUnaryTestMessages(six.with_metaclass(abc.ABCMeta)):
- """A type for stream-request-unary-response message pairings."""
-
- @abc.abstractmethod
- def requests(self):
- """Affords a sequence of request messages.
-
- Implementations of this method should return a different sequences with each
- call so that multiple test executions of the test method may be made with
- different inputs.
-
- Returns:
- A sequence of request messages.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def verify(self, requests, response, test_case):
- """Verifies that the computed response matches the given requests.
-
- Args:
- requests: A sequence of request messages.
- response: A response message.
- test_case: A unittest.TestCase object affording useful assertion methods.
-
- Raises:
- AssertionError: If the requests and response do not match, indicating that
- there was some problem executing the RPC under test.
- """
- raise NotImplementedError()
-
-
-class StreamStreamTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
- """A controllable implementation of a stream-stream RPC method."""
-
- @abc.abstractmethod
- def service(self, response_consumer, context, control):
- """Services an RPC that accepts and produces streams of messages.
-
- Args:
- response_consumer: A stream.Consumer to be called to accept the response
- messages of the RPC.
- context: A face_interfaces.RpcContext object.
- control: A test_control.Control to control execution of this method.
-
- Returns:
- A stream.Consumer with which to accept the request messages of the RPC.
- The consumer returned from this method may or may not be invoked to
- completion: in the case of RPC abortion, RPC Framework will simply stop
- passing messages to this object. Implementations must not assume that
- this object will be called to completion of the request stream or even
- called at all.
-
- Raises:
- abandonment.Abandoned: May or may not be raised when the RPC has been
- aborted.
- """
- raise NotImplementedError()
-
-
-class StreamStreamTestMessages(six.with_metaclass(abc.ABCMeta)):
- """A type for stream-request-stream-response message pairings."""
-
- @abc.abstractmethod
- def requests(self):
- """Affords a sequence of request messages.
-
- Implementations of this method should return a different sequences with each
- call so that multiple test executions of the test method may be made with
- different inputs.
-
- Returns:
- A sequence of request messages.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def verify(self, requests, responses, test_case):
- """Verifies that the computed response matches the given requests.
-
- Args:
- requests: A sequence of request messages.
- responses: A sequence of response messages.
- test_case: A unittest.TestCase object affording useful assertion methods.
-
- Raises:
- AssertionError: If the requests and responses do not match, indicating
- that there was some problem executing the RPC under test.
- """
- raise NotImplementedError()
-
-
-class TestService(six.with_metaclass(abc.ABCMeta)):
- """A specification of implemented RPC methods to use in tests."""
-
- @abc.abstractmethod
- def name(self):
- """Identifies the RPC service name used during the test.
-
- Returns:
- The RPC service name to be used for the test.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def unary_unary_scenarios(self):
- """Affords unary-request-unary-response test methods and their messages.
-
- Returns:
- A dict from method name to pair. The first element of the pair
- is a UnaryUnaryTestMethodImplementation object and the second element
- is a sequence of UnaryUnaryTestMethodMessages objects.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def unary_stream_scenarios(self):
- """Affords unary-request-stream-response test methods and their messages.
-
- Returns:
- A dict from method name to pair. The first element of the pair is a
- UnaryStreamTestMethodImplementation object and the second element is a
- sequence of UnaryStreamTestMethodMessages objects.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def stream_unary_scenarios(self):
- """Affords stream-request-unary-response test methods and their messages.
-
- Returns:
- A dict from method name to pair. The first element of the pair is a
- StreamUnaryTestMethodImplementation object and the second element is a
- sequence of StreamUnaryTestMethodMessages objects.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def stream_stream_scenarios(self):
- """Affords stream-request-stream-response test methods and their messages.
-
- Returns:
- A dict from method name to pair. The first element of the pair is a
- StreamStreamTestMethodImplementation object and the second element is a
- sequence of StreamStreamTestMethodMessages objects.
- """
- raise NotImplementedError()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/stock_service.py b/src/python/grpcio/tests/unit/framework/face/testing/stock_service.py
deleted file mode 100644
index 117c723f79..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/stock_service.py
+++ /dev/null
@@ -1,374 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Examples of Python implementations of the stock.proto Stock service."""
-
-from grpc.framework.common import cardinality
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_util
-from tests.unit.framework.face.testing import service
-from tests.unit._junkdrawer import stock_pb2
-
-SYMBOL_FORMAT = 'test symbol:%03d'
-STREAM_LENGTH = 400
-
-# A test-appropriate security-pricing function. :-P
-_price = lambda symbol_name: float(hash(symbol_name) % 4096)
-
-
-def _get_last_trade_price(stock_request, stock_reply_callback, control, active):
- """A unary-request, unary-response test method."""
- control.control()
- if active():
- stock_reply_callback(
- stock_pb2.StockReply(
- symbol=stock_request.symbol, price=_price(stock_request.symbol)))
- else:
- raise abandonment.Abandoned()
-
-
-def _get_last_trade_price_multiple(stock_reply_consumer, control, active):
- """A stream-request, stream-response test method."""
- def stock_reply_for_stock_request(stock_request):
- control.control()
- if active():
- return stock_pb2.StockReply(
- symbol=stock_request.symbol, price=_price(stock_request.symbol))
- else:
- raise abandonment.Abandoned()
- return stream_util.TransformingConsumer(
- stock_reply_for_stock_request, stock_reply_consumer)
-
-
-def _watch_future_trades(stock_request, stock_reply_consumer, control, active):
- """A unary-request, stream-response test method."""
- base_price = _price(stock_request.symbol)
- for index in range(stock_request.num_trades_to_watch):
- control.control()
- if active():
- stock_reply_consumer.consume(
- stock_pb2.StockReply(
- symbol=stock_request.symbol, price=base_price + index))
- else:
- raise abandonment.Abandoned()
- stock_reply_consumer.terminate()
-
-
-def _get_highest_trade_price(stock_reply_callback, control, active):
- """A stream-request, unary-response test method."""
-
- class StockRequestConsumer(stream.Consumer):
- """Keeps an ongoing record of the most valuable symbol yet consumed."""
-
- def __init__(self):
- self._symbol = None
- self._price = None
-
- def consume(self, stock_request):
- control.control()
- if active():
- if self._price is None:
- self._symbol = stock_request.symbol
- self._price = _price(stock_request.symbol)
- else:
- candidate_price = _price(stock_request.symbol)
- if self._price < candidate_price:
- self._symbol = stock_request.symbol
- self._price = candidate_price
-
- def terminate(self):
- control.control()
- if active():
- if self._symbol is None:
- raise ValueError()
- else:
- stock_reply_callback(
- stock_pb2.StockReply(symbol=self._symbol, price=self._price))
- self._symbol = None
- self._price = None
-
- def consume_and_terminate(self, stock_request):
- control.control()
- if active():
- if self._price is None:
- stock_reply_callback(
- stock_pb2.StockReply(
- symbol=stock_request.symbol,
- price=_price(stock_request.symbol)))
- else:
- candidate_price = _price(stock_request.symbol)
- if self._price < candidate_price:
- stock_reply_callback(
- stock_pb2.StockReply(
- symbol=stock_request.symbol, price=candidate_price))
- else:
- stock_reply_callback(
- stock_pb2.StockReply(
- symbol=self._symbol, price=self._price))
-
- self._symbol = None
- self._price = None
-
- return StockRequestConsumer()
-
-
-class GetLastTradePrice(service.UnaryUnaryTestMethodImplementation):
- """GetLastTradePrice for use in tests."""
-
- def name(self):
- return 'GetLastTradePrice'
-
- def cardinality(self):
- return cardinality.Cardinality.UNARY_UNARY
-
- def request_class(self):
- return stock_pb2.StockRequest
-
- def response_class(self):
- return stock_pb2.StockReply
-
- def serialize_request(self, request):
- return request.SerializeToString()
-
- def deserialize_request(self, serialized_request):
- return stock_pb2.StockRequest.FromString(serialized_request)
-
- def serialize_response(self, response):
- return response.SerializeToString()
-
- def deserialize_response(self, serialized_response):
- return stock_pb2.StockReply.FromString(serialized_response)
-
- def service(self, request, response_callback, context, control):
- _get_last_trade_price(
- request, response_callback, control, context.is_active)
-
-
-class GetLastTradePriceMessages(service.UnaryUnaryTestMessages):
-
- def __init__(self):
- self._index = 0
-
- def request(self):
- symbol = SYMBOL_FORMAT % self._index
- self._index += 1
- return stock_pb2.StockRequest(symbol=symbol)
-
- def verify(self, request, response, test_case):
- test_case.assertEqual(request.symbol, response.symbol)
- test_case.assertEqual(_price(request.symbol), response.price)
-
-
-class GetLastTradePriceMultiple(service.StreamStreamTestMethodImplementation):
- """GetLastTradePriceMultiple for use in tests."""
-
- def name(self):
- return 'GetLastTradePriceMultiple'
-
- def cardinality(self):
- return cardinality.Cardinality.STREAM_STREAM
-
- def request_class(self):
- return stock_pb2.StockRequest
-
- def response_class(self):
- return stock_pb2.StockReply
-
- def serialize_request(self, request):
- return request.SerializeToString()
-
- def deserialize_request(self, serialized_request):
- return stock_pb2.StockRequest.FromString(serialized_request)
-
- def serialize_response(self, response):
- return response.SerializeToString()
-
- def deserialize_response(self, serialized_response):
- return stock_pb2.StockReply.FromString(serialized_response)
-
- def service(self, response_consumer, context, control):
- return _get_last_trade_price_multiple(
- response_consumer, control, context.is_active)
-
-
-class GetLastTradePriceMultipleMessages(service.StreamStreamTestMessages):
- """Pairs of message streams for use with GetLastTradePriceMultiple."""
-
- def __init__(self):
- self._index = 0
-
- def requests(self):
- base_index = self._index
- self._index += 1
- return [
- stock_pb2.StockRequest(symbol=SYMBOL_FORMAT % (base_index + index))
- for index in range(STREAM_LENGTH)]
-
- def verify(self, requests, responses, test_case):
- test_case.assertEqual(len(requests), len(responses))
- for stock_request, stock_reply in zip(requests, responses):
- test_case.assertEqual(stock_request.symbol, stock_reply.symbol)
- test_case.assertEqual(_price(stock_request.symbol), stock_reply.price)
-
-
-class WatchFutureTrades(service.UnaryStreamTestMethodImplementation):
- """WatchFutureTrades for use in tests."""
-
- def name(self):
- return 'WatchFutureTrades'
-
- def cardinality(self):
- return cardinality.Cardinality.UNARY_STREAM
-
- def request_class(self):
- return stock_pb2.StockRequest
-
- def response_class(self):
- return stock_pb2.StockReply
-
- def serialize_request(self, request):
- return request.SerializeToString()
-
- def deserialize_request(self, serialized_request):
- return stock_pb2.StockRequest.FromString(serialized_request)
-
- def serialize_response(self, response):
- return response.SerializeToString()
-
- def deserialize_response(self, serialized_response):
- return stock_pb2.StockReply.FromString(serialized_response)
-
- def service(self, request, response_consumer, context, control):
- _watch_future_trades(request, response_consumer, control, context.is_active)
-
-
-class WatchFutureTradesMessages(service.UnaryStreamTestMessages):
- """Pairs of a single request message and a sequence of response messages."""
-
- def __init__(self):
- self._index = 0
-
- def request(self):
- symbol = SYMBOL_FORMAT % self._index
- self._index += 1
- return stock_pb2.StockRequest(
- symbol=symbol, num_trades_to_watch=STREAM_LENGTH)
-
- def verify(self, request, responses, test_case):
- test_case.assertEqual(STREAM_LENGTH, len(responses))
- base_price = _price(request.symbol)
- for index, response in enumerate(responses):
- test_case.assertEqual(base_price + index, response.price)
-
-
-class GetHighestTradePrice(service.StreamUnaryTestMethodImplementation):
- """GetHighestTradePrice for use in tests."""
-
- def name(self):
- return 'GetHighestTradePrice'
-
- def cardinality(self):
- return cardinality.Cardinality.STREAM_UNARY
-
- def request_class(self):
- return stock_pb2.StockRequest
-
- def response_class(self):
- return stock_pb2.StockReply
-
- def serialize_request(self, request):
- return request.SerializeToString()
-
- def deserialize_request(self, serialized_request):
- return stock_pb2.StockRequest.FromString(serialized_request)
-
- def serialize_response(self, response):
- return response.SerializeToString()
-
- def deserialize_response(self, serialized_response):
- return stock_pb2.StockReply.FromString(serialized_response)
-
- def service(self, response_callback, context, control):
- return _get_highest_trade_price(
- response_callback, control, context.is_active)
-
-
-class GetHighestTradePriceMessages(service.StreamUnaryTestMessages):
-
- def requests(self):
- return [
- stock_pb2.StockRequest(symbol=SYMBOL_FORMAT % index)
- for index in range(STREAM_LENGTH)]
-
- def verify(self, requests, response, test_case):
- price = None
- symbol = None
- for stock_request in requests:
- current_symbol = stock_request.symbol
- current_price = _price(current_symbol)
- if price is None or price < current_price:
- price = current_price
- symbol = current_symbol
- test_case.assertEqual(price, response.price)
- test_case.assertEqual(symbol, response.symbol)
-
-
-class StockTestService(service.TestService):
- """A corpus of test data with one method of each RPC cardinality."""
-
- def name(self):
- return 'Stock'
-
- def unary_unary_scenarios(self):
- return {
- 'GetLastTradePrice': (
- GetLastTradePrice(), [GetLastTradePriceMessages()]),
- }
-
- def unary_stream_scenarios(self):
- return {
- 'WatchFutureTrades': (
- WatchFutureTrades(), [WatchFutureTradesMessages()]),
- }
-
- def stream_unary_scenarios(self):
- return {
- 'GetHighestTradePrice': (
- GetHighestTradePrice(), [GetHighestTradePriceMessages()])
- }
-
- def stream_stream_scenarios(self):
- return {
- 'GetLastTradePriceMultiple': (
- GetLastTradePriceMultiple(), [GetLastTradePriceMultipleMessages()]),
- }
-
-
-STOCK_TEST_SERVICE = StockTestService()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/test_case.py
deleted file mode 100644
index f29d400844..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/test_case.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Tools for creating tests of implementations of the Face layer."""
-
-import abc
-
-import six
-
-# face_interfaces and interfaces are referenced in specification in this module.
-from grpc.framework.face import interfaces as face_interfaces # pylint: disable=unused-import
-from tests.unit.framework.face.testing import interfaces # pylint: disable=unused-import
-
-
-class FaceTestCase(six.with_metaclass(abc.ABCMeta)):
- """Describes a test of the Face Layer of RPC Framework.
-
- Concrete subclasses must also inherit from unittest.TestCase and from at least
- one class that defines test methods.
- """
-
- @abc.abstractmethod
- def set_up_implementation(
- self, name, methods, method_implementations,
- multi_method_implementation):
- """Instantiates the Face Layer implementation under test.
-
- Args:
- name: The service name to be used in the test.
- methods: A sequence of interfaces.Method objects describing the RPC
- methods that will be called during the test.
- method_implementations: A dictionary from string RPC method name to
- face_interfaces.MethodImplementation object specifying
- implementation of an RPC method.
- multi_method_implementation: An face_interfaces.MultiMethodImplementation
- or None.
-
- Returns:
- A sequence of length two the first element of which is a
- face_interfaces.GenericStub (backed by the given method
- implementations), and the second element of which is an arbitrary memo
- object to be kept and passed to tearDownImplementation at the conclusion
- of the test.
- """
- raise NotImplementedError()
-
- @abc.abstractmethod
- def tear_down_implementation(self, memo):
- """Destroys the Face layer implementation under test.
-
- Args:
- memo: The object from the second position of the return value of
- set_up_implementation.
- """
- raise NotImplementedError()
diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml
index d13ce42655..34bb477543 100644
--- a/src/ruby/.rubocop.yml
+++ b/src/ruby/.rubocop.yml
@@ -11,10 +11,10 @@ AllCops:
- 'pb/test/**/*'
Metrics/CyclomaticComplexity:
- Max: 8
+ Max: 9
Metrics/PerceivedComplexity:
- Max: 8
+ Max: 9
Metrics/ClassLength:
Max: 250
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 82b6d313c8..6d65db8306 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -60,31 +60,25 @@ grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
grpc_config = ENV['GRPC_CONFIG'] || 'opt'
-if ENV.key?('GRPC_LIB_DIR')
- grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR'])
-else
- grpc_lib_dir = File.join(grpc_root, 'libs', grpc_config)
-end
-
ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.7'
-unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a')) or windows
- ENV['AR'] = RbConfig::CONFIG['AR'] + ' rcs'
- ENV['CC'] = RbConfig::CONFIG['CC']
- ENV['LD'] = ENV['CC']
+ENV['AR'] = RbConfig::CONFIG['AR'] + ' rcs'
+ENV['CC'] = RbConfig::CONFIG['CC']
+ENV['LD'] = ENV['CC']
- ENV['AR'] = 'libtool -o' if RUBY_PLATFORM =~ /darwin/
+ENV['AR'] = 'libtool -o' if RUBY_PLATFORM =~ /darwin/
- ENV['EMBED_OPENSSL'] = 'true'
- ENV['EMBED_ZLIB'] = 'true'
- ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
- ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64' if RUBY_PLATFORM =~ /darwin/
- ENV['CFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
+ENV['EMBED_OPENSSL'] = 'true'
+ENV['EMBED_ZLIB'] = 'true'
+ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
+ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64' if RUBY_PLATFORM =~ /darwin/
+ENV['CFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
- output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
- grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
- ENV['BUILDDIR'] = output_dir
+output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
+grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
+ENV['BUILDDIR'] = output_dir
+unless windows
puts 'Building internal gRPC into ' + grpc_lib_dir
system("make -j -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
exit 1 unless $? == 0
diff --git a/src/ruby/ext/grpc/rb_byte_buffer.c b/src/ruby/ext/grpc/rb_byte_buffer.c
index cba910d832..1172691116 100644
--- a/src/ruby/ext/grpc/rb_byte_buffer.c
+++ b/src/ruby/ext/grpc/rb_byte_buffer.c
@@ -32,11 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_byte_buffer.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include <grpc/byte_buffer_reader.h>
#include <grpc/support/slice.h>
diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index f5fdbb2ffd..1b06273af9 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -32,11 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_call.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
@@ -214,6 +213,35 @@ static VALUE grpc_rb_call_get_peer(VALUE self) {
return res;
}
+/* Called to obtain the x509 cert of an authenticated peer. */
+static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
+ grpc_call *call = NULL;
+ VALUE res = Qnil;
+ grpc_auth_context *ctx = NULL;
+ TypedData_Get_Struct(self, grpc_call, &grpc_call_data_type, call);
+
+ ctx = grpc_call_auth_context(call);
+
+ if (!ctx || !grpc_auth_context_peer_is_authenticated(ctx)) {
+ return Qnil;
+ }
+
+ {
+ grpc_auth_property_iterator it =
+ grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
+ const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
+ if (prop == NULL) {
+ return Qnil;
+ }
+
+ res = rb_str_new2(prop->value);
+ }
+
+ grpc_auth_context_release(ctx);
+
+ return res;
+}
+
/*
call-seq:
status = call.status
@@ -861,6 +889,7 @@ void Init_grpc_call() {
rb_define_method(grpc_rb_cCall, "run_batch", grpc_rb_call_run_batch, 4);
rb_define_method(grpc_rb_cCall, "cancel", grpc_rb_call_cancel, 0);
rb_define_method(grpc_rb_cCall, "peer", grpc_rb_call_get_peer, 0);
+ rb_define_method(grpc_rb_cCall, "peer_cert", grpc_rb_call_get_peer_cert, 0);
rb_define_method(grpc_rb_cCall, "status", grpc_rb_call_get_status, 0);
rb_define_method(grpc_rb_cCall, "status=", grpc_rb_call_set_status, 1);
rb_define_method(grpc_rb_cCall, "metadata", grpc_rb_call_get_metadata, 0);
diff --git a/src/ruby/ext/grpc/rb_call_credentials.c b/src/ruby/ext/grpc/rb_call_credentials.c
index 38bf1f7710..79ca5b32ce 100644
--- a/src/ruby/ext/grpc/rb_call_credentials.c
+++ b/src/ruby/ext/grpc/rb_call_credentials.c
@@ -32,10 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_call_credentials.h"
-#include <ruby/ruby.h>
#include <ruby/thread.h>
#include <grpc/grpc.h>
@@ -86,11 +86,11 @@ static VALUE grpc_rb_call_credentials_callback_rescue(VALUE args,
rb_funcall(exception_object, rb_intern("backtrace"), 0),
rb_intern("join"),
1, rb_str_new2("\n\tfrom "));
- VALUE exception_info = rb_funcall(exception_object, rb_intern("to_s"), 0);
+ VALUE rb_exception_info = rb_funcall(exception_object, rb_intern("to_s"), 0);
const char *exception_classname = rb_obj_classname(exception_object);
(void)args;
gpr_log(GPR_INFO, "Call credentials callback failed: %s: %s\n%s",
- exception_classname, StringValueCStr(exception_info),
+ exception_classname, StringValueCStr(rb_exception_info),
StringValueCStr(backtrace));
rb_hash_aset(result, rb_str_new2("metadata"), Qnil);
/* Currently only gives the exception class name. It should be possible get
diff --git a/src/ruby/ext/grpc/rb_channel.c b/src/ruby/ext/grpc/rb_channel.c
index 984afad107..013321ffc8 100644
--- a/src/ruby/ext/grpc/rb_channel.c
+++ b/src/ruby/ext/grpc/rb_channel.c
@@ -32,11 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_channel.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
diff --git a/src/ruby/ext/grpc/rb_channel_args.c b/src/ruby/ext/grpc/rb_channel_args.c
index 2ffb8f41da..87c0e0a705 100644
--- a/src/ruby/ext/grpc/rb_channel_args.c
+++ b/src/ruby/ext/grpc/rb_channel_args.c
@@ -32,11 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_channel_args.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include "rb_grpc.h"
diff --git a/src/ruby/ext/grpc/rb_channel_credentials.c b/src/ruby/ext/grpc/rb_channel_credentials.c
index 10391bc963..cbb23885aa 100644
--- a/src/ruby/ext/grpc/rb_channel_credentials.c
+++ b/src/ruby/ext/grpc/rb_channel_credentials.c
@@ -32,13 +32,15 @@
*/
#include <ruby/ruby.h>
+
+#include <string.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_channel_credentials.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "rb_call_credentials.h"
@@ -48,6 +50,8 @@
grpc_channel_credentials. */
static VALUE grpc_rb_cChannelCredentials = Qnil;
+static char *pem_root_certs = NULL;
+
/* grpc_rb_channel_credentials wraps a grpc_channel_credentials. It provides a
* mark object that is used to hold references to any objects used to create
* the credentials. */
@@ -236,6 +240,25 @@ static VALUE grpc_rb_channel_credentials_compose(int argc, VALUE *argv,
return grpc_rb_wrap_channel_credentials(creds, mark);
}
+static grpc_ssl_roots_override_result get_ssl_roots_override(
+ char **pem_root_certs_ptr) {
+ *pem_root_certs_ptr = pem_root_certs;
+ if (pem_root_certs == NULL) {
+ return GRPC_SSL_ROOTS_OVERRIDE_FAIL;
+ } else {
+ return GRPC_SSL_ROOTS_OVERRIDE_OK;
+ }
+}
+
+static VALUE grpc_rb_set_default_roots_pem(VALUE self, VALUE roots) {
+ char *roots_ptr = StringValueCStr(roots);
+ size_t length = strlen(roots_ptr);
+ (void)self;
+ pem_root_certs = gpr_malloc((length + 1) * sizeof(char));
+ memcpy(pem_root_certs, roots_ptr, length + 1);
+ return Qnil;
+}
+
void Init_grpc_channel_credentials() {
grpc_rb_cChannelCredentials =
rb_define_class_under(grpc_rb_mGrpcCore, "ChannelCredentials", rb_cObject);
@@ -251,6 +274,11 @@ void Init_grpc_channel_credentials() {
grpc_rb_channel_credentials_init_copy, 1);
rb_define_method(grpc_rb_cChannelCredentials, "compose",
grpc_rb_channel_credentials_compose, -1);
+ rb_define_module_function(grpc_rb_cChannelCredentials,
+ "set_default_roots_pem",
+ grpc_rb_set_default_roots_pem, 1);
+
+ grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
id_pem_cert_chain = rb_intern("__pem_cert_chain");
id_pem_private_key = rb_intern("__pem_private_key");
diff --git a/src/ruby/ext/grpc/rb_completion_queue.c b/src/ruby/ext/grpc/rb_completion_queue.c
index 2a2eee190c..4bb615f8be 100644
--- a/src/ruby/ext/grpc/rb_completion_queue.c
+++ b/src/ruby/ext/grpc/rb_completion_queue.c
@@ -32,10 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_completion_queue.h"
-#include <ruby/ruby.h>
#include <ruby/thread.h>
#include <grpc/grpc.h>
diff --git a/src/ruby/ext/grpc/rb_event_thread.c b/src/ruby/ext/grpc/rb_event_thread.c
index 2649a1087f..9e85bbcfbf 100644
--- a/src/ruby/ext/grpc/rb_event_thread.c
+++ b/src/ruby/ext/grpc/rb_event_thread.c
@@ -32,12 +32,12 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_event_thread.h"
#include <stdbool.h>
-#include <ruby/ruby.h>
#include <ruby/thread.h>
#include <grpc/support/alloc.h>
#include <grpc/support/sync.h>
diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c
index acb47b0055..5277148fc9 100644
--- a/src/ruby/ext/grpc/rb_grpc.c
+++ b/src/ruby/ext/grpc/rb_grpc.c
@@ -32,11 +32,11 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_grpc.h"
#include <math.h>
-#include <ruby/ruby.h>
#include <ruby/vm.h>
#include <sys/time.h>
@@ -50,6 +50,7 @@
#include "rb_loader.h"
#include "rb_server.h"
#include "rb_server_credentials.h"
+#include "rb_signal.h"
static VALUE grpc_rb_cTimeVal = Qnil;
@@ -332,6 +333,7 @@ void Init_grpc_c() {
Init_grpc_channel_credentials();
Init_grpc_server();
Init_grpc_server_credentials();
+ Init_grpc_signals();
Init_grpc_status_codes();
Init_grpc_time_consts();
}
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index e2068d752a..bc43f9d36b 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -124,6 +124,7 @@ grpc_tracer_set_enabled_type grpc_tracer_set_enabled_import;
grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
grpc_is_binary_header_type grpc_is_binary_header_import;
+grpc_call_error_to_string_type grpc_call_error_to_string_import;
grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -389,6 +390,7 @@ void grpc_rb_load_imports(HMODULE library) {
grpc_header_key_is_legal_import = (grpc_header_key_is_legal_type) GetProcAddress(library, "grpc_header_key_is_legal");
grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
+ grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index c8d21333ba..b67361ca25 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -322,6 +322,9 @@ extern grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_
typedef int(*grpc_is_binary_header_type)(const char *key, size_t length);
extern grpc_is_binary_header_type grpc_is_binary_header_import;
#define grpc_is_binary_header grpc_is_binary_header_import
+typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
+extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
+#define grpc_call_error_to_string grpc_call_error_to_string_import
typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
#define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/ruby/ext/grpc/rb_server.c b/src/ruby/ext/grpc/rb_server.c
index 96e60c6776..2b3acaaf59 100644
--- a/src/ruby/ext/grpc/rb_server.c
+++ b/src/ruby/ext/grpc/rb_server.c
@@ -32,11 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_server.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include "rb_call.h"
diff --git a/src/ruby/ext/grpc/rb_server_credentials.c b/src/ruby/ext/grpc/rb_server_credentials.c
index b2d7280a30..3b0fb6c910 100644
--- a/src/ruby/ext/grpc/rb_server_credentials.c
+++ b/src/ruby/ext/grpc/rb_server_credentials.c
@@ -32,11 +32,10 @@
*/
#include <ruby/ruby.h>
+
#include "rb_grpc_imports.generated.h"
#include "rb_server_credentials.h"
-#include <ruby/ruby.h>
-
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
diff --git a/src/ruby/ext/grpc/rb_signal.c b/src/ruby/ext/grpc/rb_signal.c
new file mode 100644
index 0000000000..a9e512374b
--- /dev/null
+++ b/src/ruby/ext/grpc/rb_signal.c
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <ruby/ruby.h>
+#include <signal.h>
+#include <stdbool.h>
+
+#include <grpc/support/log.h>
+
+#include "rb_grpc.h"
+
+static void (*old_sigint_handler)(int);
+static void (*old_sigterm_handler)(int);
+
+static volatile bool signal_received = false;
+
+/* This has to be handled at the C level instead of Ruby, because Ruby signal
+ * handlers are constrained to run in the main interpreter thread. If that main
+ * thread is blocked on grpc_completion_queue_pluck, the signal handlers will
+ * never run */
+static void handle_signal(int signum) {
+ signal_received = true;
+ if (signum == SIGINT) {
+ old_sigint_handler(signum);
+ } else if (signum == SIGTERM) {
+ old_sigterm_handler(signum);
+ }
+}
+
+static VALUE grpc_rb_signal_received(VALUE self) {
+ (void)self;
+ return signal_received ? Qtrue : Qfalse;
+}
+
+void Init_grpc_signals() {
+ old_sigint_handler = signal(SIGINT, handle_signal);
+ old_sigterm_handler = signal(SIGTERM, handle_signal);
+ rb_define_singleton_method(grpc_rb_mGrpcCore, "signal_received?",
+ grpc_rb_signal_received, 0);
+}
diff --git a/src/ruby/ext/grpc/rb_signal.h b/src/ruby/ext/grpc/rb_signal.h
new file mode 100644
index 0000000000..07e49c0a8b
--- /dev/null
+++ b/src/ruby/ext/grpc/rb_signal.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_RB_SIGNAL_H_
+#define GRPC_RB_SIGNAL_H_
+
+void Init_grpc_signals();
+
+#endif /* GRPC_RB_SIGNAL_H_ */
diff --git a/src/ruby/lib/grpc.rb b/src/ruby/lib/grpc.rb
index 4e23cd7af2..7c9aae30e9 100644
--- a/src/ruby/lib/grpc.rb
+++ b/src/ruby/lib/grpc.rb
@@ -28,17 +28,25 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ssl_roots_path = File.expand_path('../../../../etc/roots.pem', __FILE__)
-unless ENV['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH']
- ENV['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'] = ssl_roots_path
+
+require_relative 'grpc/errors'
+require_relative 'grpc/grpc'
+require_relative 'grpc/logconfig'
+require_relative 'grpc/notifier'
+require_relative 'grpc/signals'
+require_relative 'grpc/version'
+require_relative 'grpc/core/time_consts'
+require_relative 'grpc/generic/active_call'
+require_relative 'grpc/generic/client_stub'
+require_relative 'grpc/generic/service'
+require_relative 'grpc/generic/rpc_server'
+
+begin
+ file = File.open(ssl_roots_path)
+ roots = file.read
+ GRPC::Core::ChannelCredentials.set_default_roots_pem roots
+ensure
+ file.close
end
-require 'grpc/errors'
-require 'grpc/grpc'
-require 'grpc/logconfig'
-require 'grpc/notifier'
-require 'grpc/version'
-require 'grpc/core/time_consts'
-require 'grpc/generic/active_call'
-require 'grpc/generic/client_stub'
-require 'grpc/generic/service'
-require 'grpc/generic/rpc_server'
+GRPC::Signals.wait_for_signals
diff --git a/src/ruby/lib/grpc/core/time_consts.rb b/src/ruby/lib/grpc/core/time_consts.rb
index 3b8c2daa07..5be7ed2cb7 100644
--- a/src/ruby/lib/grpc/core/time_consts.rb
+++ b/src/ruby/lib/grpc/core/time_consts.rb
@@ -27,7 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-require 'grpc/grpc'
+require_relative '../grpc'
# GRPC contains the General RPC module.
module GRPC
diff --git a/src/ruby/lib/grpc/errors.rb b/src/ruby/lib/grpc/errors.rb
index 1d7588c18d..a1dd1e3e9d 100644
--- a/src/ruby/lib/grpc/errors.rb
+++ b/src/ruby/lib/grpc/errors.rb
@@ -27,7 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-require 'grpc/grpc'
+require_relative './grpc'
# GRPC contains the General RPC module.
module GRPC
diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb
index e80d24edc9..fd20a86144 100644
--- a/src/ruby/lib/grpc/generic/active_call.rb
+++ b/src/ruby/lib/grpc/generic/active_call.rb
@@ -28,7 +28,9 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
require 'forwardable'
-require 'grpc/generic/bidi_call'
+require 'weakref'
+require_relative 'bidi_call'
+require_relative '../signals'
class Struct
# BatchResult is the struct returned by calls to call#start_batch.
@@ -59,7 +61,8 @@ module GRPC
include Core::CallOps
extend Forwardable
attr_reader(:deadline)
- def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag=
+ def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag=,
+ :peer, :peer_cert
# client_invoke begins a client invocation.
#
@@ -120,6 +123,10 @@ module GRPC
@unmarshal = unmarshal
@metadata_tag = metadata_tag
@op_notifier = nil
+ weak_self = WeakRef.new(self)
+ remove_handler = GRPC::Signals.register_handler(&weak_self
+ .method(:cancel))
+ ObjectSpace.define_finalizer(self, remove_handler)
end
# output_metadata are provides access to hash that can be used to
@@ -472,7 +479,7 @@ module GRPC
# SingleReqView limits access to an ActiveCall's methods for use in server
# handlers that receive just one request.
SingleReqView = view_class(:cancelled, :deadline, :metadata,
- :output_metadata)
+ :output_metadata, :peer, :peer_cert)
# MultiReqView limits access to an ActiveCall's methods for use in
# server client_streamer handlers.
diff --git a/src/ruby/lib/grpc/generic/bidi_call.rb b/src/ruby/lib/grpc/generic/bidi_call.rb
index 6b9b785693..1f6d5f365d 100644
--- a/src/ruby/lib/grpc/generic/bidi_call.rb
+++ b/src/ruby/lib/grpc/generic/bidi_call.rb
@@ -28,7 +28,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
require 'forwardable'
-require 'grpc/grpc'
+require_relative '../grpc'
# GRPC contains the General RPC module.
module GRPC
diff --git a/src/ruby/lib/grpc/generic/client_stub.rb b/src/ruby/lib/grpc/generic/client_stub.rb
index a6bb92d72c..68e167a69f 100644
--- a/src/ruby/lib/grpc/generic/client_stub.rb
+++ b/src/ruby/lib/grpc/generic/client_stub.rb
@@ -27,8 +27,8 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-require 'grpc/generic/active_call'
-require 'grpc/version'
+require_relative 'active_call'
+require_relative '../version'
# GRPC contains the General RPC module.
module GRPC
diff --git a/src/ruby/lib/grpc/generic/rpc_desc.rb b/src/ruby/lib/grpc/generic/rpc_desc.rb
index dd90d8d91d..cc21ffd3c5 100644
--- a/src/ruby/lib/grpc/generic/rpc_desc.rb
+++ b/src/ruby/lib/grpc/generic/rpc_desc.rb
@@ -27,7 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-require 'grpc/grpc'
+require_relative '../grpc'
# GRPC contains the General RPC module.
module GRPC
diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index 5ba77db173..238aaa9656 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -27,47 +27,14 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-require 'grpc/grpc'
-require 'grpc/generic/active_call'
-require 'grpc/generic/service'
+require_relative '../grpc'
+require_relative '../signals'
+require_relative 'active_call'
+require_relative 'service'
require 'thread'
-# A global that contains signals the gRPC servers should respond to.
-$grpc_signals = []
-
# GRPC contains the General RPC module.
module GRPC
- # Handles the signals in $grpc_signals.
- #
- # @return false if the server should exit, true if not.
- def handle_signals
- loop do
- sig = $grpc_signals.shift
- case sig
- when 'INT'
- return false
- when 'TERM'
- return false
- when nil
- return true
- end
- end
- true
- end
- module_function :handle_signals
-
- # Sets up a signal handler that adds signals to the signal handling global.
- #
- # Signal handlers should do as little as humanly possible.
- # Here, they just add themselves to $grpc_signals
- #
- # RpcServer (and later other parts of gRPC) monitors the signals
- # $grpc_signals in its own non-signal context.
- def trap_signals
- %w(INT TERM).each { |sig| trap(sig) { $grpc_signals << sig } }
- end
- module_function :trap_signals
-
# Pool is a simple thread pool.
class Pool
# Default keep alive period is 1s
@@ -328,20 +295,6 @@ module GRPC
end
end
- # Runs the server in its own thread, then waits for signal INT or TERM on
- # the current thread to terminate it.
- def run_till_terminated
- GRPC.trap_signals
- t = Thread.new { run }
- wait_till_running
- loop do
- sleep SIGNAL_CHECK_PERIOD
- break unless GRPC.handle_signals
- end
- stop
- t.join
- end
-
# handle registration of classes
#
# service is either a class that includes GRPC::GenericService and whose
@@ -400,9 +353,14 @@ module GRPC
transition_running_state(:running)
@run_cond.broadcast
end
+ remove_signal_handler = GRPC::Signals.register_handler { stop }
loop_handle_server_calls
+ # Remove signal handler when server stops
+ remove_signal_handler.call
end
+ alias_method :run_till_terminated, :run
+
# Sends RESOURCE_EXHAUSTED if there are too many unprocessed jobs
def available?(an_rpc)
jobs_count, max = @pool.jobs_waiting, @max_waiting_requests
@@ -411,7 +369,7 @@ module GRPC
GRPC.logger.warn("NOT AVAILABLE: too many jobs_waiting: #{an_rpc}")
noop = proc { |x| x }
c = ActiveCall.new(an_rpc.call, @cq, noop, noop, an_rpc.deadline)
- c.send_status(StatusCodes::RESOURCE_EXHAUSTED, '')
+ c.send_status(GRPC::Core::StatusCodes::RESOURCE_EXHAUSTED, '')
nil
end
@@ -422,7 +380,7 @@ module GRPC
GRPC.logger.warn("UNIMPLEMENTED: #{an_rpc}")
noop = proc { |x| x }
c = ActiveCall.new(an_rpc.call, @cq, noop, noop, an_rpc.deadline)
- c.send_status(StatusCodes::UNIMPLEMENTED, '')
+ c.send_status(GRPC::Core::StatusCodes::UNIMPLEMENTED, '')
nil
end
@@ -434,12 +392,16 @@ module GRPC
begin
an_rpc = @server.request_call(@cq, loop_tag, INFINITE_FUTURE)
break if (!an_rpc.nil?) && an_rpc.call.nil?
-
active_call = new_active_server_call(an_rpc)
unless active_call.nil?
@pool.schedule(active_call) do |ac|
c, mth = ac
- rpc_descs[mth].run_server_method(c, rpc_handlers[mth])
+ begin
+ rpc_descs[mth].run_server_method(c, rpc_handlers[mth])
+ rescue StandardError
+ c.send_status(GRPC::Core::StatusCodes::INTERNAL,
+ 'Server handler failed')
+ end
end
end
rescue Core::CallError, RuntimeError => e
@@ -496,10 +458,8 @@ module GRPC
unless cls.include?(GenericService)
fail "#{cls} must 'include GenericService'"
end
- if cls.rpc_descs.size.zero?
- fail "#{cls} should specify some rpc descriptions"
- end
- cls.assert_rpc_descs_have_methods
+ fail "#{cls} should specify some rpc descriptions" if
+ cls.rpc_descs.size.zero?
end
# This should be called while holding @run_mutex
diff --git a/src/ruby/lib/grpc/generic/service.rb b/src/ruby/lib/grpc/generic/service.rb
index 410e1add7d..0a166e823e 100644
--- a/src/ruby/lib/grpc/generic/service.rb
+++ b/src/ruby/lib/grpc/generic/service.rb
@@ -27,8 +27,8 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-require 'grpc/generic/client_stub'
-require 'grpc/generic/rpc_desc'
+require_relative 'client_stub'
+require_relative 'rpc_desc'
# GRPC contains the General RPC module.
module GRPC
@@ -110,6 +110,9 @@ module GRPC
rpc_descs[name] = RpcDesc.new(name, input, output,
marshal_class_method,
unmarshal_class_method)
+ define_method(name) do
+ fail GRPC::BadStatus, GRPC::Core::StatusCodes::UNIMPLEMENTED
+ end
end
def inherited(subclass)
@@ -199,19 +202,6 @@ module GRPC
end
end
end
-
- # Asserts that the appropriate methods are defined for each added rpc
- # spec. Is intended to aid verifying that server classes are correctly
- # implemented.
- def assert_rpc_descs_have_methods
- rpc_descs.each_pair do |m, spec|
- mth_name = GenericService.underscore(m.to_s).to_sym
- unless instance_methods.include?(mth_name)
- fail "#{self} does not provide instance method '#{mth_name}'"
- end
- spec.assert_arity_matches(instance_method(mth_name))
- end
- end
end
def self.included(o)
diff --git a/src/ruby/lib/grpc/grpc.rb b/src/ruby/lib/grpc/grpc.rb
index 250f6dd30d..b60a828d66 100644
--- a/src/ruby/lib/grpc/grpc.rb
+++ b/src/ruby/lib/grpc/grpc.rb
@@ -28,7 +28,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
begin
- require "grpc/#{RUBY_VERSION.sub(/\.\d$/, '')}/grpc_c"
+ require_relative "#{RUBY_VERSION.sub(/\.\d$/, '')}/grpc_c"
rescue LoadError
- require 'grpc/grpc_c'
+ require_relative 'grpc_c'
end
diff --git a/src/ruby/bin/interop/interop_server.rb b/src/ruby/lib/grpc/signals.rb
index c6b0d00ec6..2ab85c8bb1 100755..100644
--- a/src/ruby/bin/interop/interop_server.rb
+++ b/src/ruby/lib/grpc/signals.rb
@@ -1,6 +1,4 @@
-#!/usr/bin/env ruby
-
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -29,22 +27,43 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# #######################################################################
-# DEPRECATED: The behaviour in this file has been moved to pb/test/server.rb
-#
-# This file remains to support existing tools and scripts that use it.
-# ######################################################################
-#
-# interop_server is a Testing app that runs a gRPC interop testing server.
-#
-# It helps validate interoperation b/w gRPC in different environments
-#
-# Helps validate interoperation b/w different gRPC implementations.
-#
-# Usage: $ path/to/interop_server.rb --port
+require 'thread'
+require_relative 'grpc'
+
+# GRPC contains the General RPC module.
+module GRPC
+ # Signals contains gRPC functions related to signal handling
+ module Signals
+ @interpreter_exiting = false
+ @signal_handlers = []
+ @handlers_mutex = Mutex.new
-this_dir = File.expand_path(File.dirname(__FILE__))
-pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb')
-$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
+ def register_handler(&handler)
+ @handlers_mutex.synchronize do
+ @signal_handlers.push(handler)
+ handler.call if @exit_signal_received
+ end
+ # Returns a function to remove the handler
+ lambda do
+ @handlers_mutex.synchronize { @signal_handlers.delete(handler) }
+ end
+ end
+ module_function :register_handler
-require 'test/server'
+ def wait_for_signals
+ t = Thread.new do
+ sleep 0.1 until GRPC::Core.signal_received? || @interpreter_exiting
+ unless @interpreter_exiting
+ @handlers_mutex.synchronize do
+ @signal_handlers.each(&:call)
+ end
+ end
+ end
+ at_exit do
+ @interpreter_exiting = true
+ t.join
+ end
+ end
+ module_function :wait_for_signals
+ end
+end
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 67c6a5d5a1..01c8c5ac8f 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
# GRPC contains the General RPC module.
module GRPC
- VERSION = '0.14.0.dev'
+ VERSION = '0.15.0.dev'
end
diff --git a/src/ruby/pb/grpc/testing/metrics.rb b/src/ruby/pb/grpc/testing/metrics.rb
new file mode 100644
index 0000000000..3b3c8cd61b
--- /dev/null
+++ b/src/ruby/pb/grpc/testing/metrics.rb
@@ -0,0 +1,28 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: grpc/testing/metrics.proto
+
+require 'google/protobuf'
+
+Google::Protobuf::DescriptorPool.generated_pool.build do
+ add_message "grpc.testing.GaugeResponse" do
+ optional :name, :string, 1
+ oneof :value do
+ optional :long_value, :int64, 2
+ optional :double_value, :double, 3
+ optional :string_value, :string, 4
+ end
+ end
+ add_message "grpc.testing.GaugeRequest" do
+ optional :name, :string, 1
+ end
+ add_message "grpc.testing.EmptyMessage" do
+ end
+end
+
+module Grpc
+ module Testing
+ GaugeResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.GaugeResponse").msgclass
+ GaugeRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.GaugeRequest").msgclass
+ EmptyMessage = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.EmptyMessage").msgclass
+ end
+end
diff --git a/src/ruby/pb/grpc/testing/metrics_services.rb b/src/ruby/pb/grpc/testing/metrics_services.rb
new file mode 100644
index 0000000000..f5778bbbb1
--- /dev/null
+++ b/src/ruby/pb/grpc/testing/metrics_services.rb
@@ -0,0 +1,27 @@
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# Source: grpc/testing/metrics.proto for package 'grpc.testing'
+
+require 'grpc'
+require 'grpc/testing/metrics'
+
+module Grpc
+ module Testing
+ module MetricsService
+
+ # TODO: add proto service documentation here
+ class Service
+
+ include GRPC::GenericService
+
+ self.marshal_class_method = :encode
+ self.unmarshal_class_method = :decode
+ self.service_name = 'grpc.testing.MetricsService'
+
+ rpc :GetAllGauges, EmptyMessage, stream(GaugeResponse)
+ rpc :GetGauge, GaugeRequest, GaugeResponse
+ end
+
+ Stub = Service.rpc_stub_class
+ end
+ end
+end
diff --git a/src/ruby/pb/test/client.rb b/src/ruby/pb/test/client.rb
index 2f83e67c52..95b059a18e 100755
--- a/src/ruby/pb/test/client.rb
+++ b/src/ruby/pb/test/client.rb
@@ -38,23 +38,23 @@
# --server_port=<port> \
# --test_case=<testcase_name>
+# These lines are required for the generated files to load grpc
this_dir = File.expand_path(File.dirname(__FILE__))
lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib')
-pb_dir = File.dirname(File.dirname(this_dir))
+pb_dir = File.dirname(this_dir)
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
-$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
require 'optparse'
require 'logger'
-require 'grpc'
+require_relative '../../lib/grpc'
require 'googleauth'
require 'google/protobuf'
-require 'test/proto/empty'
-require 'test/proto/messages'
-require 'test/proto/test_services'
+require_relative 'proto/empty'
+require_relative 'proto/messages'
+require_relative 'proto/test_services'
AUTH_ENV = Google::Auth::CredentialsLoader::ENV_VAR
@@ -208,12 +208,10 @@ class NamedTests
def empty_unary
resp = @stub.empty_call(Empty.new)
assert('empty_unary: invalid response') { resp.is_a?(Empty) }
- p 'OK: empty_unary'
end
def large_unary
perform_large_unary
- p 'OK: large_unary'
end
def service_account_creds
@@ -230,7 +228,6 @@ class NamedTests
assert("#{__callee__}: bad oauth scope") do
@args.oauth_scope.include?(resp.oauth_scope)
end
- p "OK: #{__callee__}"
end
def jwt_token_creds
@@ -238,7 +235,6 @@ class NamedTests
wanted_email = MultiJson.load(json_key)['client_email']
resp = perform_large_unary(fill_username: true)
assert("#{__callee__}: bad username") { wanted_email == resp.username }
- p "OK: #{__callee__}"
end
def compute_engine_creds
@@ -247,7 +243,6 @@ class NamedTests
assert("#{__callee__}: bad username") do
@args.default_service_account == resp.username
end
- p "OK: #{__callee__}"
end
def oauth2_auth_token
@@ -259,7 +254,6 @@ class NamedTests
assert("#{__callee__}: bad oauth scope") do
@args.oauth_scope.include?(resp.oauth_scope)
end
- p "OK: #{__callee__}"
end
def per_rpc_creds
@@ -279,7 +273,6 @@ class NamedTests
assert("#{__callee__}: bad oauth scope") do
@args.oauth_scope.include?(resp.oauth_scope)
end
- p "OK: #{__callee__}"
end
def client_streaming
@@ -293,7 +286,6 @@ class NamedTests
assert("#{__callee__}: aggregate payload size is incorrect") do
wanted_aggregate_size == resp.aggregated_payload_size
end
- p "OK: #{__callee__}"
end
def server_streaming
@@ -311,7 +303,6 @@ class NamedTests
:COMPRESSABLE == r.payload.type
end
end
- p "OK: #{__callee__}"
end
def ping_pong
@@ -319,7 +310,6 @@ class NamedTests
ppp = PingPongPlayer.new(msg_sizes)
resps = @stub.full_duplex_call(ppp.each_item)
resps.each { |r| ppp.queue.push(r) }
- p "OK: #{__callee__}"
end
def timeout_on_sleeping_server
@@ -332,7 +322,6 @@ class NamedTests
assert("#{__callee__}: status was wrong") do
e.code == GRPC::Core::StatusCodes::DEADLINE_EXCEEDED
end
- p "OK: #{__callee__}"
end
def empty_stream
@@ -346,7 +335,6 @@ class NamedTests
assert("#{__callee__}: too many responses expected 0") do
count == 0
end
- p "OK: #{__callee__}"
end
def cancel_after_begin
@@ -361,7 +349,6 @@ class NamedTests
fail 'Should have raised GRPC:Cancelled'
rescue GRPC::Cancelled
assert("#{__callee__}: call operation should be CANCELLED") { op.cancelled }
- p "OK: #{__callee__}"
end
def cancel_after_first_response
@@ -374,7 +361,6 @@ class NamedTests
rescue GRPC::Cancelled
assert("#{__callee__}: call operation should be CANCELLED") { op.cancelled }
op.wait
- p "OK: #{__callee__}"
end
def all
@@ -442,7 +428,7 @@ def parse_args
opts.on('--use_tls USE_TLS', ['false', 'true'],
'require a secure connection?') do |v|
args['secure'] = v == 'true'
- end
+p end
opts.on('--use_test_ca USE_TEST_CA', ['false', 'true'],
'if secure, use the test certificate?') do |v|
args['use_test_ca'] = v == 'true'
@@ -464,6 +450,9 @@ def main
opts = parse_args
stub = create_stub(opts)
NamedTests.new(stub, opts).method(opts['test_case']).call
+ p "OK: #{opts['test_case']}"
end
-main
+if __FILE__ == $0
+ main
+end
diff --git a/src/ruby/pb/test/server.rb b/src/ruby/pb/test/server.rb
index 851e815222..914c7cc79d 100755
--- a/src/ruby/pb/test/server.rb
+++ b/src/ruby/pb/test/server.rb
@@ -39,7 +39,7 @@
this_dir = File.expand_path(File.dirname(__FILE__))
lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib')
-pb_dir = File.dirname(File.dirname(this_dir))
+pb_dir = File.dirname(this_dir)
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
diff --git a/src/ruby/spec/generic/rpc_server_spec.rb b/src/ruby/spec/generic/rpc_server_spec.rb
index e688057cb1..2a42736237 100644
--- a/src/ruby/spec/generic/rpc_server_spec.rb
+++ b/src/ruby/spec/generic/rpc_server_spec.rb
@@ -308,10 +308,6 @@ describe GRPC::RpcServer do
expect { @srv.handle(EmptyService) }.to raise_error
end
- it 'raises if the service does not define its rpc methods' do
- expect { @srv.handle(NoRpcImplementation) }.to raise_error
- end
-
it 'raises if a handler method is already registered' do
@srv.handle(EchoService)
expect { r.handle(EchoService) }.to raise_error
@@ -349,6 +345,25 @@ describe GRPC::RpcServer do
t.join
end
+ it 'should return UNIMPLEMENTED on unimplemented methods', server: true do
+ @srv.handle(NoRpcImplementation)
+ t = Thread.new { @srv.run }
+ @srv.wait_till_running
+ req = EchoMsg.new
+ blk = proc do
+ cq = GRPC::Core::CompletionQueue.new
+ stub = GRPC::ClientStub.new(@host, cq, :this_channel_is_insecure,
+ **client_opts)
+ stub.request_response('/an_rpc', req, marshal, unmarshal)
+ end
+ expect(&blk).to raise_error do |error|
+ expect(error).to be_a(GRPC::BadStatus)
+ expect(error.code).to be(GRPC::Core::StatusCodes::UNIMPLEMENTED)
+ end
+ @srv.stop
+ t.join
+ end
+
it 'should handle multiple sequential requests', server: true do
@srv.handle(EchoService)
t = Thread.new { @srv.run }
diff --git a/src/ruby/spec/generic/service_spec.rb b/src/ruby/spec/generic/service_spec.rb
index 5e7b6c7aba..76034e4f74 100644
--- a/src/ruby/spec/generic/service_spec.rb
+++ b/src/ruby/spec/generic/service_spec.rb
@@ -273,73 +273,4 @@ describe GenericService do
end
end
end
-
- describe '#assert_rpc_descs_have_methods' do
- it 'fails if there is no instance method for an rpc descriptor' do
- c1 = Class.new do
- include GenericService
- rpc :AnRpc, GoodMsg, GoodMsg
- end
- expect { c1.assert_rpc_descs_have_methods }.to raise_error
-
- c2 = Class.new do
- include GenericService
- rpc :AnRpc, GoodMsg, GoodMsg
- rpc :AnotherRpc, GoodMsg, GoodMsg
-
- def an_rpc
- end
- end
- expect { c2.assert_rpc_descs_have_methods }.to raise_error
- end
-
- it 'passes if there are corresponding methods for each descriptor' do
- c = Class.new do
- include GenericService
- rpc :AnRpc, GoodMsg, GoodMsg
- rpc :AServerStreamer, GoodMsg, stream(GoodMsg)
- rpc :AClientStreamer, stream(GoodMsg), GoodMsg
- rpc :ABidiStreamer, stream(GoodMsg), stream(GoodMsg)
-
- def an_rpc(_req, _call)
- end
-
- def a_server_streamer(_req, _call)
- end
-
- def a_client_streamer(_call)
- end
-
- def a_bidi_streamer(_call)
- end
- end
- expect { c.assert_rpc_descs_have_methods }.to_not raise_error
- end
-
- it 'passes for subclasses of that include GenericService' do
- base = Class.new do
- include GenericService
- rpc :AnRpc, GoodMsg, GoodMsg
-
- def an_rpc(_req, _call)
- end
- end
- c = Class.new(base)
- expect { c.assert_rpc_descs_have_methods }.to_not raise_error
- expect(c.include?(GenericService)).to be(true)
- end
-
- it 'passes if subclasses define the rpc methods' do
- base = Class.new do
- include GenericService
- rpc :AnRpc, GoodMsg, GoodMsg
- end
- c = Class.new(base) do
- def an_rpc(_req, _call)
- end
- end
- expect { c.assert_rpc_descs_have_methods }.to_not raise_error
- expect(c.include?(GenericService)).to be(true)
- end
- end
end
diff --git a/src/ruby/stress/metrics_server.rb b/src/ruby/stress/metrics_server.rb
new file mode 100644
index 0000000000..13638c4d21
--- /dev/null
+++ b/src/ruby/stress/metrics_server.rb
@@ -0,0 +1,83 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require_relative '../pb/grpc/testing/metrics.rb'
+require_relative '../pb/grpc/testing/metrics_services.rb'
+
+class Gauge
+ def get_name
+ raise NoMethodError.new
+ end
+
+ def get_type
+ raise NoMethodError.new
+ end
+
+ def get_value
+ raise NoMethodError.new
+ end
+end
+
+class MetricsServiceImpl < Grpc::Testing::MetricsService::Service
+ include Grpc::Testing
+ @gauges
+
+ def initialize
+ @gauges = {}
+ end
+
+ def register_gauge(gauge)
+ @gauges[gauge.get_name] = gauge
+ end
+
+ def make_gauge_response(gauge)
+ response = GaugeResponse.new(:name => gauge.get_name)
+ value = gauge.get_value
+ case gauge.get_type
+ when 'long'
+ response.long_value = value
+ when 'double'
+ response.double_value = value
+ when 'string'
+ response.string_value = value
+ end
+ response
+ end
+
+ def get_all_gauges(_empty, _call)
+ @gauges.values.map do |gauge|
+ make_gauge_response gauge
+ end
+ end
+
+ def get_gauge(gauge_req, _call)
+ gauge = @gauges[gauge_req.name]
+ make_gauge_response gauge
+ end
+end
diff --git a/src/ruby/stress/stress_client.rb b/src/ruby/stress/stress_client.rb
new file mode 100755
index 0000000000..698f9f1b87
--- /dev/null
+++ b/src/ruby/stress/stress_client.rb
@@ -0,0 +1,155 @@
+#!/usr/bin/env ruby
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'optparse'
+require 'thread'
+require_relative '../pb/test/client'
+require_relative './metrics_server'
+require_relative '../lib/grpc'
+
+class QpsGauge < Gauge
+ @query_count
+ @query_mutex
+ @start_time
+
+ def initialize
+ @query_count = 0
+ @query_mutex = Mutex.new
+ @start_time = Time.now
+ end
+
+ def increment_queries
+ @query_mutex.synchronize { @query_count += 1}
+ end
+
+ def get_name
+ 'qps'
+ end
+
+ def get_type
+ 'long'
+ end
+
+ def get_value
+ (@query_mutex.synchronize { @query_count / (Time.now - @start_time) }).to_i
+ end
+end
+
+def start_metrics_server(port)
+ host = "0.0.0.0:#{port}"
+ server = GRPC::RpcServer.new
+ server.add_http2_port(host, :this_port_is_insecure)
+ service = MetricsServiceImpl.new
+ server.handle(service)
+ server_thread = Thread.new { server.run_till_terminated }
+ [server, service, server_thread]
+end
+
+StressArgs = Struct.new(:server_addresses, :test_cases, :duration,
+ :channels_per_server, :concurrent_calls, :metrics_port)
+
+def start(stress_args)
+ running = true
+ threads = []
+ qps_gauge = QpsGauge.new
+ metrics_server, metrics_service, metrics_thread =
+ start_metrics_server(stress_args.metrics_port)
+ metrics_service.register_gauge(qps_gauge)
+ stress_args.server_addresses.each do |address|
+ stress_args.channels_per_server.times do
+ client_args = Args.new
+ client_args.host, client_args.port = address.split(':')
+ client_args.secure = false
+ client_args.test_case = ''
+ stub = create_stub(client_args)
+ named_tests = NamedTests.new(stub, client_args)
+ stress_args.concurrent_calls.times do
+ threads << Thread.new do
+ while running
+ named_tests.method(stress_args.test_cases.sample).call
+ qps_gauge.increment_queries
+ end
+ end
+ end
+ end
+ end
+ if stress_args.duration >= 0
+ sleep stress_args.duration
+ running = false
+ metrics_server.stop
+ p "QPS: #{qps_gauge.get_value}"
+ threads.each { |thd| thd.join; }
+ end
+ metrics_thread.join
+end
+
+def parse_stress_args
+ stress_args = StressArgs.new
+ stress_args.server_addresses = ['localhost:8080']
+ stress_args.test_cases = []
+ stress_args.duration = -1
+ stress_args.channels_per_server = 1
+ stress_args.concurrent_calls = 1
+ stress_args.metrics_port = '8081'
+ OptionParser.new do |opts|
+ opts.on('--server_addresses [LIST]', Array) do |addrs|
+ stress_args.server_addresses = addrs
+ end
+ opts.on('--test_cases cases', Array) do |cases|
+ stress_args.test_cases = (cases.map do |item|
+ split = item.split(':')
+ [split[0]] * split[1].to_i
+ end).reduce([], :+)
+ end
+ opts.on('--test_duration_secs [INT]', OptionParser::DecimalInteger) do |time|
+ stress_args.duration = time
+ end
+ opts.on('--num_channels_per_server [INT]', OptionParser::DecimalInteger) do |channels|
+ stress_args.channels_per_server = channels
+ end
+ opts.on('--num_stubs_per_channel [INT]', OptionParser::DecimalInteger) do |stubs|
+ stress_args.concurrent_calls = stubs
+ end
+ opts.on('--metrics_port [port]') do |port|
+ stress_args.metrics_port = port
+ end
+ end.parse!
+ stress_args
+end
+
+def main
+ opts = parse_stress_args
+ start(opts)
+end
+
+if __FILE__ == $0
+ main
+end
diff --git a/src/ruby/tools/README.md b/src/ruby/tools/README.md
new file mode 100644
index 0000000000..e43f223c89
--- /dev/null
+++ b/src/ruby/tools/README.md
@@ -0,0 +1,12 @@
+# Ruby gRPC Tools
+
+This package distributes protoc and the Ruby gRPC protoc plugin for Windows, Linux, and Mac.
+
+Before this package is published, the following directories should be filled with the corresponding `protoc` and `grpc_ruby_plugin` executables.
+
+ - `bin/x86-linux`
+ - `bin/x86_64-linux`
+ - `bin/x86-macos`
+ - `bin/x86_64-macos`
+ - `bin/x86-windows`
+ - `bin/x86_64-windows`
diff --git a/src/ruby/tools/bin/grpc_tools_ruby_protoc.rb b/src/ruby/tools/bin/grpc_tools_ruby_protoc.rb
new file mode 100755
index 0000000000..3a2a5b8dc9
--- /dev/null
+++ b/src/ruby/tools/bin/grpc_tools_ruby_protoc.rb
@@ -0,0 +1,41 @@
+#!/usr/bin/env ruby
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'rbconfig'
+
+require_relative '../os_check'
+
+protoc_name = 'protoc' + RbConfig::CONFIG['EXEEXT']
+
+protoc_path = File.join(File.dirname(__FILE__),
+ RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name,
+ protoc_name)
+
+exec([ protoc_path, protoc_path ], *ARGV)
diff --git a/src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb b/src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb
new file mode 100755
index 0000000000..4b296dedc7
--- /dev/null
+++ b/src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb
@@ -0,0 +1,41 @@
+#!/usr/bin/env ruby
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'rbconfig'
+
+require_relative '../os_check'
+
+plugin_name = 'grpc_ruby_plugin' + RbConfig::CONFIG['EXEEXT']
+
+plugin_path = File.join(File.dirname(__FILE__),
+ RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name,
+ plugin_name)
+
+exec([ plugin_path, plugin_path ], *ARGV)
diff --git a/src/ruby/tools/grpc-tools.gemspec b/src/ruby/tools/grpc-tools.gemspec
new file mode 100644
index 0000000000..af904de4a9
--- /dev/null
+++ b/src/ruby/tools/grpc-tools.gemspec
@@ -0,0 +1,22 @@
+# -*- ruby -*-
+# encoding: utf-8
+require_relative 'version.rb'
+Gem::Specification.new do |s|
+ s.name = 'grpc-tools'
+ s.version = GRPC::Tools::VERSION
+ s.authors = ['grpc Authors']
+ s.email = 'grpc-io@googlegroups.com'
+ s.homepage = 'https://github.com/google/grpc/tree/master/src/ruby/tools'
+ s.summary = 'Development tools for Ruby gRPC'
+ s.description = 'protoc and the Ruby gRPC protoc plugin'
+ s.license = 'BSD-3-Clause'
+
+ s.files = %w( version.rb os_check.rb README.md )
+ s.files += Dir.glob('bin/**/*')
+
+ s.bindir = 'bin'
+
+ s.platform = Gem::Platform::RUBY
+
+ s.executables = %w( protoc.rb protoc_grpc_ruby_plugin.rb )
+end
diff --git a/src/python/grpcio/grpc/framework/alpha/__init__.py b/src/ruby/tools/os_check.rb
index bff74be2c7..2677306457 100644
--- a/src/python/grpcio/grpc/framework/alpha/__init__.py
+++ b/src/ruby/tools/os_check.rb
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,9 +27,19 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import warnings
+# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
- 'unmaintained, and no longer tested. Please migrate to the beta '
- 'API.', DeprecationWarning, stacklevel=2)
+require 'rbconfig'
+
+module OS
+ def OS.os_name
+ case RbConfig::CONFIG['host_os']
+ when /cygwin|mswin|mingw|bccwin|wince|emx/
+ 'windows'
+ when /darwin/
+ 'macos'
+ else
+ 'linux'
+ end
+ end
+end
diff --git a/src/ruby/bin/grpc_ruby_interop_server b/src/ruby/tools/version.rb
index 656a5f7c99..dca7fd7e72 100755..100644
--- a/src/ruby/bin/grpc_ruby_interop_server
+++ b/src/ruby/tools/version.rb
@@ -1,5 +1,3 @@
-#!/usr/bin/env ruby
-
# Copyright 2015, Google Inc.
# All rights reserved.
#
@@ -29,5 +27,8 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Provides a gem binary entry point for the interop server
-require 'test/server'
+module GRPC
+ module Tools
+ VERSION = '0.15.0.dev'
+ end
+end
diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template
index a9948a41df..979cb1ef8e 100644
--- a/templates/gRPC.podspec.template
+++ b/templates/gRPC.podspec.template
@@ -54,7 +54,7 @@
%>
Pod::Spec.new do |s|
s.name = 'gRPC'
- version = '0.12.0'
+ version = '0.14.0'
s.version = version
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'http://www.grpc.io'
@@ -62,7 +62,8 @@
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' }
s.source = { :git => 'https://github.com/grpc/grpc.git',
- :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" }
+ :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}",
+ :submodules => true }
s.ios.deployment_target = '7.1'
@@ -97,7 +98,7 @@
ss.requires_arc = false
ss.libraries = 'z'
- ss.dependency 'BoringSSL', '~> 2.0'
+ ss.dependency 'BoringSSL', '~> 3.0'
# ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
end
diff --git a/templates/grpc.gemspec.template b/templates/grpc.gemspec.template
index 6f8d1fb9e6..ce775ffb90 100644
--- a/templates/grpc.gemspec.template
+++ b/templates/grpc.gemspec.template
@@ -26,10 +26,6 @@
s.files += Dir.glob('include/grpc/**/*')
s.test_files = Dir.glob('src/ruby/spec/**/*')
s.bindir = 'src/ruby/bin'
- ${'%'}w(math noproto).each do |b|
- s.executables += ["#{b}_client.rb", "#{b}_server.rb"]
- end
- s.executables += %w(grpc_ruby_interop_client grpc_ruby_interop_server)
s.require_paths = %w( src/ruby/bin src/ruby/lib src/ruby/pb )
s.platform = Gem::Platform::RUBY
diff --git a/templates/package.json.template b/templates/package.json.template
index 5db270608b..11718b1ccb 100644
--- a/templates/package.json.template
+++ b/templates/package.json.template
@@ -21,7 +21,7 @@
"lib": "src/node/src"
},
"scripts": {
- "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js",
+ "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js --exclude-path=src/node/.jshintignore",
"test": "./node_modules/.bin/mocha src/node/test && npm run-script lint",
"gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json",
"coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
@@ -37,6 +37,7 @@
"devDependencies": {
"async": "^1.5.0",
"google-auth-library": "^0.9.2",
+ "google-protobuf": "^3.0.0-alpha.5",
"istanbul": "^0.3.21",
"jsdoc": "^3.3.2",
"jshint": "^2.5.0",
@@ -74,5 +75,25 @@
"binding.gyp"
],
"main": "src/node/index.js",
- "license": "BSD-3-Clause"
+ "license": "BSD-3-Clause",
+ "jshintConfig" : {
+ "bitwise": true,
+ "curly": true,
+ "eqeqeq": true,
+ "esnext": true,
+ "freeze": true,
+ "immed": true,
+ "indent": 2,
+ "latedef": "nofunc",
+ "maxlen": 80,
+ "mocha": true,
+ "newcap": true,
+ "node": true,
+ "noarg": true,
+ "quotmark": "single",
+ "strict": true,
+ "trailing": true,
+ "undef": true,
+ "unused": "vars"
+ }
}
diff --git a/templates/package.xml.template b/templates/package.xml.template
index 2f498c02f4..63132dac94 100644
--- a/templates/package.xml.template
+++ b/templates/package.xml.template
@@ -12,7 +12,7 @@
<email>grpc-packages@google.com</email>
<active>yes</active>
</lead>
- <date>2016-03-01</date>
+ <date>2016-04-19</date>
<time>16:06:07</time>
<version>
<release>${settings.php_version.php()}</release>
@@ -24,7 +24,7 @@
</stability>
<license>BSD</license>
<notes>
- - Increase unit test code coverage #5225
+ - destroy grpc_byte_buffer after startBatch #6096
</notes>
<contents>
<dir baseinstalldir="/" name="/">
@@ -157,8 +157,8 @@
</release>
<release>
<version>
- <release>${settings.php_version.php()}</release>
- <api>${settings.php_version.php()}</api>
+ <release>0.8.1</release>
+ <api>0.8.1</api>
</version>
<stability>
<release>beta</release>
@@ -170,5 +170,20 @@
- Increase unit test code coverage #5225
</notes>
</release>
+ <release>
+ <version>
+ <release>${settings.php_version.php()}</release>
+ <api>${settings.php_version.php()}</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2016-04-19</date>
+ <license>BSD</license>
+ <notes>
+ - destroy grpc_byte_buffer after startBatch #6096
+ </notes>
+ </release>
</changelog>
</package>
diff --git a/templates/src/csharp/Grpc.Core/VersionInfo.cs.template b/templates/src/csharp/Grpc.Core/VersionInfo.cs.template
index 3ca111e72b..96cf2ee17f 100644
--- a/templates/src/csharp/Grpc.Core/VersionInfo.cs.template
+++ b/templates/src/csharp/Grpc.Core/VersionInfo.cs.template
@@ -37,13 +37,20 @@
{
/// <summary>
/// Provides info about current version of gRPC.
+ /// See https://codingforsmarties.wordpress.com/2016/01/21/how-to-version-assemblies-destined-for-nuget/
+ /// for rationale about assembly versioning.
/// </summary>
public static class VersionInfo
{
/// <summary>
- /// Current version of gRPC C# assemblies
+ /// Current <c>AssemblyVersion</c> attribute of gRPC C# assemblies
/// </summary>
- public const string CurrentAssemblyVersion = "${settings.version.major}.${settings.version.minor}.${settings.version.patch}.0";
+ public const string CurrentAssemblyVersion = "1.0.0.0";
+
+ /// <summary>
+ /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
+ /// </summary>
+ public const string CurrentAssemblyFileVersion = "${settings.version.major}.${settings.version.minor}.${settings.version.patch}.0";
/// <summary>
/// Current version of gRPC C#
diff --git a/templates/src/node/tools/package.json.template b/templates/src/node/tools/package.json.template
index c69de7c989..69ad71a3b8 100644
--- a/templates/src/node/tools/package.json.template
+++ b/templates/src/node/tools/package.json.template
@@ -18,7 +18,8 @@
}
],
"bin": {
- "grpc-tools-protoc": "./bin/protoc.js"
+ "grpc_tools_node_protoc": "./bin/protoc.js",
+ "grpc_tools_node_protoc_plugin": "./bin/protoc_plugin.js"
},
"scripts": {
"install": "./node_modules/.bin/node-pre-gyp install"
@@ -34,6 +35,7 @@
"files": [
"index.js",
"bin/protoc.js",
+ "bin/protoc_plugin.js",
"LICENSE"
],
"main": "index.js"
diff --git a/templates/src/ruby/tools/version.rb.template b/templates/src/ruby/tools/version.rb.template
new file mode 100644
index 0000000000..dbc5f48cf5
--- /dev/null
+++ b/templates/src/ruby/tools/version.rb.template
@@ -0,0 +1,36 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ module GRPC
+ module Tools
+ VERSION = '${settings.ruby_version.ruby()}'
+ end
+ end
diff --git a/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template b/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template
new file mode 100644
index 0000000000..200905d4f3
--- /dev/null
+++ b/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template
@@ -0,0 +1,34 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
+
+ VERSION='${settings.python_version.pep440()}'
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template
new file mode 100644
index 0000000000..4cb8d3b088
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../csharp_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template
new file mode 100644
index 0000000000..e39175a1ea
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../cxx_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template
new file mode 100644
index 0000000000..542c81d614
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template
@@ -0,0 +1,37 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM golang:1.5
+
+ <%include file="../../go_path.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
new file mode 100644
index 0000000000..542c81d614
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
@@ -0,0 +1,37 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM golang:1.5
+
+ <%include file="../../go_path.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template
new file mode 100644
index 0000000000..c286e80826
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template
@@ -0,0 +1,44 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../java_deps.include"/>
+
+ # Trigger download of as many Gradle artifacts as possible.
+ RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git && ${'\\'}
+ cd grpc-java && ${'\\'}
+ ./gradlew :grpc-interop-testing:installDist -PskipCodegen=true && ${'\\'}
+ rm -r "$(pwd)"
+
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template
new file mode 100644
index 0000000000..89bb9acc1a
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../node_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template
new file mode 100644
index 0000000000..476f9d3d3e
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template
@@ -0,0 +1,64 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../ruby_deps.include"/>
+ <%include file="../../php_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # ronn: a ruby tool used to convert markdown to man pages, used during the
+ # install of Protobuf extensions
+ #
+ # rake: a ruby version of make used to build the PHP Protobuf extension
+ RUN /bin/bash -l -c "rvm all do gem install ronn rake"
+
+ # Install composer
+ RUN curl -sS https://getcomposer.org/installer | php
+ RUN mv composer.phar /usr/local/bin/composer
+
+ # As an attempt to work around #4212, try to prefetch Protobuf-PHP dependency
+ # into composer cache to prevent "composer install" from cloning on each build.
+ RUN git clone --mirror https://github.com/stanley-cheung/Protobuf-PHP.git ${'\\'}
+ /root/.composer/cache/vcs/git-github.com-stanley-cheung-Protobuf-PHP.git/
+
+ # Download the patched PHP protobuf so that PHP gRPC clients can be generated
+ # from proto3 schemas.
+ RUN git clone https://github.com/stanley-cheung/Protobuf-PHP.git /var/local/git/protobuf-php
+
+ RUN /bin/bash -l -c "rvm use ruby-2.1 ${'\\'}
+ && cd /var/local/git/protobuf-php ${'\\'}
+ && rvm all do rake pear:package version=1.0 ${'\\'}
+ && pear install Protobuf-1.0.tgz"
+
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template
new file mode 100644
index 0000000000..4e816ce5b6
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../python_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template
new file mode 100644
index 0000000000..c3625b91fc
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../ruby_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/node_deps.include b/templates/tools/dockerfile/node_deps.include
index 7d37d67146..7855fbfee3 100644
--- a/templates/tools/dockerfile/node_deps.include
+++ b/templates/tools/dockerfile/node_deps.include
@@ -4,4 +4,8 @@
# Install nvm
RUN touch .profile
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4" \ No newline at end of file
diff --git a/templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template b/templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template
new file mode 100644
index 0000000000..074178252d
--- /dev/null
+++ b/templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template
@@ -0,0 +1,41 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../ccache_setup.include"/>
+ <%include file="../../cxx_deps.include"/>
+ <%include file="../../gcp_api_libraries.include"/>
+ <%include file="../../csharp_deps.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template b/templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template
new file mode 100644
index 0000000000..27e9eeec5a
--- /dev/null
+++ b/templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template
@@ -0,0 +1,45 @@
+%YAML 1.2
+--- |
+ # Copyright 2016, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../ccache_setup.include"/>
+ <%include file="../../cxx_deps.include"/>
+ <%include file="../../gcp_api_libraries.include"/>
+ <%include file="../../python_deps.include"/>
+
+ RUN pip install coverage
+ RUN pip install oauth2client
+
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template b/templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template
new file mode 100644
index 0000000000..8b933aaa32
--- /dev/null
+++ b/templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template
@@ -0,0 +1,41 @@
+%YAML 1.2
+--- |
+ # Copyright 2015, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following disclaimer
+ # in the documentation and/or other materials provided with the
+ # distribution.
+ # * Neither the name of Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ FROM debian:jessie
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../ccache_setup.include"/>
+ <%include file="../../cxx_deps.include"/>
+ <%include file="../../gcp_api_libraries.include"/>
+ <%include file="../../ruby_deps.include"/>
+ # Define the default command.
+ CMD ["bash"]
+
diff --git a/templates/tools/dockerfile/test/sanity/Dockerfile.template b/templates/tools/dockerfile/test/sanity/Dockerfile.template
index 8d6f52db54..8e2140e648 100644
--- a/templates/tools/dockerfile/test/sanity/Dockerfile.template
+++ b/templates/tools/dockerfile/test/sanity/Dockerfile.template
@@ -43,7 +43,17 @@
python-virtualenv ${"\\"}
python-lxml
RUN pip install simplejson mako
-
+
+ #======================================
+ # More sanity test dependencies (bazel)
+ RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" > \
+ /etc/apt/sources.list.d/backports.list
+ RUN apt-get update
+ RUN apt-get -t jessie-backports install -y openjdk-8-jdk
+ RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+ RUN cd /bazel && ./compile.sh
+ RUN ln -s /bazel/output/bazel /bin/
+
#===================
# Docker "inception"
# Note this is quite the ugly hack.
diff --git a/templates/tools/fuzzer/runners.template b/templates/tools/fuzzer/runners.template
index 358d4315c2..e84a89a180 100644
--- a/templates/tools/fuzzer/runners.template
+++ b/templates/tools/fuzzer/runners.template
@@ -35,7 +35,7 @@ template: |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
- flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=${selected.maxlen}"
+ flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=${selected.maxlen} -timeout=120"
%if selected.get('dict'):
flags="$flags -dict=${selected.dict}"
diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.c
index cd5b541249..e5820688ef 100644
--- a/test/core/bad_client/bad_client.c
+++ b/test/core/bad_client/bad_client.c
@@ -75,9 +75,22 @@ static void server_setup_transport(void *ts, grpc_transport *transport) {
grpc_exec_ctx_finish(&exec_ctx);
}
-void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
- const char *client_payload,
- size_t client_payload_length, uint32_t flags) {
+typedef struct {
+ grpc_bad_client_client_stream_validator validator;
+ gpr_slice_buffer incoming;
+ gpr_event read_done;
+} read_args;
+
+static void read_done(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+ read_args *a = arg;
+ a->validator(&a->incoming);
+ gpr_event_set(&a->read_done, (void *)1);
+}
+
+void grpc_run_bad_client_test(
+ grpc_bad_client_server_side_validator server_validator,
+ grpc_bad_client_client_stream_validator client_validator,
+ const char *client_payload, size_t client_payload_length, uint32_t flags) {
grpc_endpoint_pair sfd;
thd_args a;
gpr_thd_id id;
@@ -108,7 +121,7 @@ void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
a.cq = grpc_completion_queue_create(NULL);
gpr_event_init(&a.done_thd);
gpr_event_init(&a.done_write);
- a.validator = validator;
+ a.validator = server_validator;
grpc_server_register_completion_queue(a.server, a.cq, NULL);
a.registered_method =
grpc_server_register_method(a.server, GRPC_BAD_CLIENT_REGISTERED_METHOD,
@@ -151,8 +164,23 @@ void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
GPR_ASSERT(gpr_event_wait(&a.done_thd, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)));
- /* Shutdown */
- if (sfd.client) {
+ if (sfd.client != NULL) {
+ // Validate client stream, if requested.
+ if (client_validator != NULL) {
+ read_args args;
+ args.validator = client_validator;
+ gpr_slice_buffer_init(&args.incoming);
+ gpr_event_init(&args.read_done);
+ grpc_closure read_done_closure;
+ grpc_closure_init(&read_done_closure, read_done, &args);
+ grpc_endpoint_read(&exec_ctx, sfd.client, &args.incoming,
+ &read_done_closure);
+ grpc_exec_ctx_finish(&exec_ctx);
+ GPR_ASSERT(
+ gpr_event_wait(&args.read_done, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)));
+ gpr_slice_buffer_destroy(&args.incoming);
+ }
+ // Shutdown.
grpc_endpoint_shutdown(&exec_ctx, sfd.client);
grpc_endpoint_destroy(&exec_ctx, sfd.client);
grpc_exec_ctx_finish(&exec_ctx);
diff --git a/test/core/bad_client/bad_client.h b/test/core/bad_client/bad_client.h
index 19ddba83bf..c8b2a4122f 100644
--- a/test/core/bad_client/bad_client.h
+++ b/test/core/bad_client/bad_client.h
@@ -44,18 +44,24 @@ typedef void (*grpc_bad_client_server_side_validator)(grpc_server *server,
grpc_completion_queue *cq,
void *registered_method);
+typedef void (*grpc_bad_client_client_stream_validator)(
+ gpr_slice_buffer *incoming);
+
#define GRPC_BAD_CLIENT_DISCONNECT 1
/* Test runner.
Create a server, and send client_payload to it as bytes from a client.
- Execute validator in a separate thread to assert that the bytes are
+ Execute server_validator in a separate thread to assert that the bytes are
handled as expected. */
-void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
- const char *client_payload,
- size_t client_payload_length, uint32_t flags);
+void grpc_run_bad_client_test(
+ grpc_bad_client_server_side_validator server_validator,
+ grpc_bad_client_client_stream_validator client_validator,
+ const char *client_payload, size_t client_payload_length, uint32_t flags);
-#define GRPC_RUN_BAD_CLIENT_TEST(validator, payload, flags) \
- grpc_run_bad_client_test(validator, payload, sizeof(payload) - 1, flags)
+#define GRPC_RUN_BAD_CLIENT_TEST(server_validator, client_validator, payload, \
+ flags) \
+ grpc_run_bad_client_test(server_validator, client_validator, payload, \
+ sizeof(payload) - 1, flags)
#endif /* GRPC_TEST_CORE_BAD_CLIENT_BAD_CLIENT_H */
diff --git a/test/core/bad_client/gen_build_yaml.py b/test/core/bad_client/gen_build_yaml.py
index d49858ed6d..fb86525b1a 100755
--- a/test/core/bad_client/gen_build_yaml.py
+++ b/test/core/bad_client/gen_build_yaml.py
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Generates the appropriate build.json data for all the end2end tests."""
+"""Generates the appropriate build.json data for all the bad_client tests."""
import collections
@@ -45,6 +45,7 @@ BAD_CLIENT_TESTS = {
'headers': default_test_options._replace(cpu_cost=0.2),
'initial_settings_frame': default_test_options._replace(cpu_cost=0.2),
'head_of_line_blocking': default_test_options,
+ 'large_metadata': default_test_options,
'server_registered_method': default_test_options,
'simple_request': default_test_options,
'window_overflow': default_test_options,
diff --git a/test/core/bad_client/tests/badreq.c b/test/core/bad_client/tests/badreq.c
index b17e3b35ee..5d9ffef3f2 100644
--- a/test/core/bad_client/tests/badreq.c
+++ b/test/core/bad_client/tests/badreq.c
@@ -56,7 +56,7 @@ int main(int argc, char **argv) {
/* invalid content type */
GRPC_RUN_BAD_CLIENT_TEST(
- verifier, PFX_STR
+ verifier, NULL, PFX_STR
"\x00\x00\xc2\x01\x04\x00\x00\x00\x01"
"\x10\x05:path\x08/foo/bar"
"\x10\x07:scheme\x04http"
@@ -71,7 +71,7 @@ int main(int argc, char **argv) {
/* invalid te */
GRPC_RUN_BAD_CLIENT_TEST(
- verifier, PFX_STR
+ verifier, NULL, PFX_STR
"\x00\x00\xcb\x01\x04\x00\x00\x00\x01"
"\x10\x05:path\x08/foo/bar"
"\x10\x07:scheme\x04http"
@@ -88,7 +88,7 @@ int main(int argc, char **argv) {
/* two path headers */
GRPC_RUN_BAD_CLIENT_TEST(
- verifier, PFX_STR
+ verifier, NULL, PFX_STR
"\x00\x00\xd9\x01\x04\x00\x00\x00\x01"
"\x10\x05:path\x08/foo/bar"
"\x10\x05:path\x08/foo/bah"
@@ -105,7 +105,7 @@ int main(int argc, char **argv) {
/* bad accept-encoding algorithm */
GRPC_RUN_BAD_CLIENT_TEST(
- verifier, PFX_STR
+ verifier, NULL, PFX_STR
"\x00\x00\xd2\x01\x04\x00\x00\x00\x01"
"\x10\x05:path\x08/foo/bar"
"\x10\x07:scheme\x04http"
@@ -121,7 +121,7 @@ int main(int argc, char **argv) {
/* bad grpc-encoding algorithm */
GRPC_RUN_BAD_CLIENT_TEST(
- verifier, PFX_STR
+ verifier, NULL, PFX_STR
"\x00\x00\xf5\x01\x04\x00\x00\x00\x01"
"\x10\x05:path\x08/foo/bar"
"\x10\x07:scheme\x04http"
diff --git a/test/core/bad_client/tests/connection_prefix.c b/test/core/bad_client/tests/connection_prefix.c
index 9a30aad0e9..bc5ed2e393 100644
--- a/test/core/bad_client/tests/connection_prefix.c
+++ b/test/core/bad_client/tests/connection_prefix.c
@@ -46,29 +46,30 @@ static void verifier(grpc_server *server, grpc_completion_queue *cq,
int main(int argc, char **argv) {
grpc_test_init(argc, argv);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRIX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI *X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTPX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0X", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\rX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\nX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\rX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSMX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSM\rX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSM\r\nX", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSM\r\n\rX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRIX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI *X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTPX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0X", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\rX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\nX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\rX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSMX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSM\rX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSM\r\nX", 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSM\r\n\rX",
+ 0);
return 0;
}
diff --git a/test/core/bad_client/tests/head_of_line_blocking.c b/test/core/bad_client/tests/head_of_line_blocking.c
index 53cd4537b2..e4051bb668 100644
--- a/test/core/bad_client/tests/head_of_line_blocking.c
+++ b/test/core/bad_client/tests/head_of_line_blocking.c
@@ -144,7 +144,7 @@ int main(int argc, char **argv) {
addbuf(hdr, sizeof(hdr));
addbuf(msg, FRAME_SIZE);
}
- grpc_run_bad_client_test(verifier, g_buffer, g_count, 0);
+ grpc_run_bad_client_test(verifier, NULL, g_buffer, g_count, 0);
gpr_free(g_buffer);
return 0;
diff --git a/test/core/bad_client/tests/headers.c b/test/core/bad_client/tests/headers.c
index 4c1a76743e..f872e5006a 100644
--- a/test/core/bad_client/tests/headers.c
+++ b/test/core/bad_client/tests/headers.c
@@ -51,249 +51,251 @@ int main(int argc, char **argv) {
grpc_test_init(argc, argv);
/* partial http2 header prefixes */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x04",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x05",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x05",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x04\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+ PFX_STR "\x00\x00\x00\x01\x04\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+ PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
/* test adding prioritization data */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x01\x01\x24\x00\x00\x00\x01"
"\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x02\x01\x24\x00\x00\x00\x01"
"\x00\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x24\x00\x00\x00\x01"
"\x00\x00\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x04\x01\x24\x00\x00\x00\x01"
"\x00\x00\x00\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x24\x00\x00\x00\x01"
"",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x24\x00\x00\x00\x01"
"\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x24\x00\x00\x00\x01"
"\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x24\x00\x00\x00\x01"
"\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x24\x00\x00\x00\x01"
"\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x24\x00\x00\x00\x01"
"\x00\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
/* test looking up an invalid index */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x01\x01\x04\x00\x00\x00\x01"
"\xfe",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x04\x01\x04\x00\x00\x00\x01"
"\x7f\x7f\x01"
"a",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x04\x01\x04\x00\x00\x00\x01"
"\x0f\x7f\x01"
"a",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x04\x01\x04\x00\x00\x00\x01"
"\x1f\x7f\x01"
"a",
0);
/* test nvr, not indexed in static table */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x04\x00\x00\x00\x01"
"\x01\x01"
"a",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x04\x00\x00\x00\x01"
"\x11\x01"
"a",
GRPC_BAD_CLIENT_DISCONNECT);
/* illegal op code */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x01\x01\x04\x00\x00\x00\x01"
"\x80",
0);
/* parse some long indices */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x02\x01\x04\x00\x00\x00\x01"
"\xff\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x04\x00\x00\x00\x01"
"\xff\x80\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x04\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x06\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x07\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x80\x00",
0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x80",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x80\x80",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x80\x80\x00",
0);
/* overflow on byte 4 */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x06\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x7f",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x06\x01\x04\x00\x00\x00\x01"
"\xff\xff\xff\xff\xff\x0f",
GRPC_BAD_CLIENT_DISCONNECT);
/* overflow after byte 4 */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x08\x01\x04\x00\x00\x00\x01"
"\xff\x80\x80\x80\x80\x80\x80\x02",
0);
/* end of headers mid-opcode */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x01\x01\x04\x00\x00\x00\x01"
"\x01",
GRPC_BAD_CLIENT_DISCONNECT);
/* dynamic table size update: set to default */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x04\x00\x00\x00\x01"
"\x3f\xe1\x1f",
GRPC_BAD_CLIENT_DISCONNECT);
/* dynamic table size update: set too large */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x04\x00\x00\x00\x01"
"\x3f\xf1\x1f",
0);
/* dynamic table size update: set twice */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x04\x01\x04\x00\x00\x00\x01"
"\x20\x3f\xe1\x1f",
GRPC_BAD_CLIENT_DISCONNECT);
/* dynamic table size update: set thrice */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x03\x01\x04\x00\x00\x00\x01"
"\x20\x20\x20",
0);
/* non-ending header followed by continuation frame */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x00\x01\x00\x00\x00\x00\x01"
"\x00\x00\x00\x09\x04\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
/* non-ending header followed by non-continuation frame */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x00\x01\x00\x00\x00\x00\x01"
"\x00\x00\x00\x00\x04\x00\x00\x00\x01",
0);
/* non-ending header followed by a continuation frame for a different stream
*/
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x00\x01\x04\x00\x00\x00\x01"
"\x00\x00\x00\x01\x00\x00\x00\x00\x03"
"\x00\x00\x00\x09\x04\x00\x00\x00\x01",
0);
/* opening with a continuation frame */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x09\x04\x00\x00\x00\x01", 0);
/* three header frames */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x00\x01\x04\x00\x00\x00\x01"
"\x00\x00\x00\x01\x04\x00\x00\x00\x01"
"\x00\x00\x00\x01\x04\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
/* an invalid header found with fuzzing */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x01\x39\x67\xed\x1d\x64",
GRPC_BAD_CLIENT_DISCONNECT);
/* a badly encoded timeout value */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x19\x01\x04\x00\x00\x00\x01"
"\x10\x0cgrpc-timeout\x0a"
"15 seconds",
GRPC_BAD_CLIENT_DISCONNECT);
/* a badly encoded timeout value: twice (catches caching) */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x19\x01\x04\x00\x00\x00\x01"
"\x10\x0cgrpc-timeout\x0a"
"15 seconds"
diff --git a/test/core/bad_client/tests/initial_settings_frame.c b/test/core/bad_client/tests/initial_settings_frame.c
index 63a770df91..b84b67a7e5 100644
--- a/test/core/bad_client/tests/initial_settings_frame.c
+++ b/test/core/bad_client/tests/initial_settings_frame.c
@@ -50,70 +50,72 @@ int main(int argc, char **argv) {
grpc_test_init(argc, argv);
/* various partial prefixes */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x06",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x06",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x06",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x06",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x06",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x06",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x01",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\x01",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\xff",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\xff",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+ PFX_STR "\x00\x00\x00\x04\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00",
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+ PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
/* must not send frames with stream id != 0 */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00\x01", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x04\x00\x40\x00\x00\x00", 0);
/* settings frame must be a multiple of six bytes long */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x01\x04\x00\x00\x00\x00\x00", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x02\x04\x00\x00\x00\x00\x00", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x03\x04\x00\x00\x00\x00\x00", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x04\x04\x00\x00\x00\x00\x00", 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x05\x04\x00\x00\x00\x00\x00", 0);
/* some settings values are illegal */
/* max frame size = 0 */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR ONE_SETTING_HDR "\x00\x05\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR ONE_SETTING_HDR "\x00\x06\xff\xff\xff\xff",
GRPC_BAD_CLIENT_DISCONNECT);
/* update intiial window size */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR ONE_SETTING_HDR "\x00\x04\x00\x01\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
/* ack with data */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x00\x04\x00\x00\x00\x00\x00"
"\x00\x00\x01\x04\x01\x00\x00\x00\x00",
0);
/* settings frame with invalid flags */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x04\x10\x00\x00\x00\x00", 0);
/* unknown settings should be ignored */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR ONE_SETTING_HDR "\x00\x99\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.c
new file mode 100644
index 0000000000..1a8d2a2987
--- /dev/null
+++ b/test/core/bad_client/tests/large_metadata.c
@@ -0,0 +1,489 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "test/core/bad_client/bad_client.h"
+
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include "src/core/lib/surface/server.h"
+#include "test/core/end2end/cq_verifier.h"
+
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR \
+ "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" /* settings frame */ \
+ "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* headers: generated from \
+ large_metadata.headers in this \
+ directory */ \
+ "\x00" \
+ "5{\x01\x05\x00\x00\x00\x01" \
+ "\x10\x05:path\x08/foo/bar" \
+ "\x10\x07:scheme\x04http" \
+ "\x10\x07:method\x04POST" \
+ "\x10\x0a:authority\x09localhost" \
+ "\x10\x0c" \
+ "content-type\x10" \
+ "application/grpc" \
+ "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \
+ "\x10\x02te\x08trailers" \
+ "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)" \
+ "\x10\x0duser-header00~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header01~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header02~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header03~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header04~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header05~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header06~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header07~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header08~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header09~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header10~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header11~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header12~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header13~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header14~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header15~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header16~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header17~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header18~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header19~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header20~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header21~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header22~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header23~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header24~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header25~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header26~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header27~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header28~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header29~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header30~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header31~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header32~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header33~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header34~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header35~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header36~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header37~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header38~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header39~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header40~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header41~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header42~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header43~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header44~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header45~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header46~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header47~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header48~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header49~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header50~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header51~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header52~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header53~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header54~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header55~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header56~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header57~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header58~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header59~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header60~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header61~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header62~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header63~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header64~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header65~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header66~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header67~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header68~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header69~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header70~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header71~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header72~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header73~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header74~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header75~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header76~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header77~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header78~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header79~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header80~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header81~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header82~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header83~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header84~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header85~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header86~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header87~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header88~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header89~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header90~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header91~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header92~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header93~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa" \
+ "\x10\x0duser-header94~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+ "aaaaaaaa"
+
+#define PFX_TOO_MUCH_METADATA_FROM_SERVER_STR \
+ "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" /* settings frame: sets \
+ MAX_HEADER_LIST_SIZE to 16K */ \
+ "\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x40\x00" /* headers: \
+ generated \
+ from \
+ simple_request.headers \
+ in this \
+ directory \
+ */ \
+ "\x00\x00\xc9\x01\x04\x00\x00\x00\x01" \
+ "\x10\x05:path\x08/foo/bar" \
+ "\x10\x07:scheme\x04http" \
+ "\x10\x07:method\x04POST" \
+ "\x10\x0a:authority\x09localhost" \
+ "\x10\x0c" \
+ "content-type\x10" \
+ "application/grpc" \
+ "\x10\x14grpc-accept-encoding\x15" \
+ "deflate,identity,gzip" \
+ "\x10\x02te\x08trailers" \
+ "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"
+
+static void *tag(intptr_t t) { return (void *)t; }
+
+static void server_verifier(grpc_server *server, grpc_completion_queue *cq,
+ void *registered_method) {
+ grpc_call_error error;
+ grpc_call *s;
+ grpc_call_details call_details;
+ cq_verifier *cqv = cq_verifier_create(cq);
+ grpc_metadata_array request_metadata_recv;
+
+ grpc_call_details_init(&call_details);
+ grpc_metadata_array_init(&request_metadata_recv);
+
+ error = grpc_server_request_call(server, &s, &call_details,
+ &request_metadata_recv, cq, cq, tag(101));
+ GPR_ASSERT(GRPC_CALL_OK == error);
+ cq_expect_completion(cqv, tag(101), 1);
+ cq_verify(cqv);
+
+ GPR_ASSERT(0 == strcmp(call_details.host, "localhost"));
+ GPR_ASSERT(0 == strcmp(call_details.method, "/foo/bar"));
+
+ grpc_metadata_array_destroy(&request_metadata_recv);
+ grpc_call_details_destroy(&call_details);
+ grpc_call_destroy(s);
+ cq_verifier_destroy(cqv);
+}
+
+static void server_verifier_sends_too_much_metadata(grpc_server *server,
+ grpc_completion_queue *cq,
+ void *registered_method) {
+ grpc_call_error error;
+ grpc_call *s;
+ grpc_call_details call_details;
+ cq_verifier *cqv = cq_verifier_create(cq);
+ grpc_metadata_array request_metadata_recv;
+
+ grpc_call_details_init(&call_details);
+ grpc_metadata_array_init(&request_metadata_recv);
+
+ error = grpc_server_request_call(server, &s, &call_details,
+ &request_metadata_recv, cq, cq, tag(101));
+ GPR_ASSERT(GRPC_CALL_OK == error);
+ cq_expect_completion(cqv, tag(101), 1);
+ cq_verify(cqv);
+
+ GPR_ASSERT(0 == strcmp(call_details.host, "localhost"));
+ GPR_ASSERT(0 == strcmp(call_details.method, "/foo/bar"));
+
+ const size_t metadata_value_size = 16 * 1024;
+ grpc_metadata meta;
+ meta.key = "key";
+ meta.value = gpr_malloc(metadata_value_size + 1);
+ memset((char *)meta.value, 'a', metadata_value_size);
+ ((char *)meta.value)[metadata_value_size] = 0;
+ meta.value_length = metadata_value_size;
+
+ grpc_op op;
+ op.op = GRPC_OP_SEND_INITIAL_METADATA;
+ op.data.send_initial_metadata.count = 1;
+ op.data.send_initial_metadata.metadata = &meta;
+ op.flags = 0;
+ op.reserved = NULL;
+ error = grpc_call_start_batch(s, &op, 1, tag(102), NULL);
+ GPR_ASSERT(GRPC_CALL_OK == error);
+ cq_expect_completion(cqv, tag(102), 0); // Operation fails.
+ cq_verify(cqv);
+
+ gpr_free((char *)meta.value);
+ grpc_metadata_array_destroy(&request_metadata_recv);
+ grpc_call_details_destroy(&call_details);
+ grpc_call_destroy(s);
+ cq_verifier_destroy(cqv);
+}
+
+static void client_validator(gpr_slice_buffer *incoming) {
+ // Get last frame from incoming slice buffer.
+ gpr_slice_buffer last_frame_buffer;
+ gpr_slice_buffer_init(&last_frame_buffer);
+ gpr_slice_buffer_trim_end(incoming, 13, &last_frame_buffer);
+ GPR_ASSERT(last_frame_buffer.count == 1);
+ gpr_slice last_frame = last_frame_buffer.slices[0];
+ // Construct expected frame.
+ gpr_slice expected = gpr_slice_malloc(13);
+ uint8_t *p = GPR_SLICE_START_PTR(expected);
+ // Length.
+ *p++ = 0;
+ *p++ = 0;
+ *p++ = 4;
+ // Frame type (RST_STREAM).
+ *p++ = 3;
+ // Flags.
+ *p++ = 0;
+ // Stream ID.
+ *p++ = 0;
+ *p++ = 0;
+ *p++ = 0;
+ *p++ = 1;
+ // Payload (error code).
+ *p++ = 0;
+ *p++ = 0;
+ *p++ = 0;
+ *p++ = 11;
+ // Compare actual and expected.
+ GPR_ASSERT(gpr_slice_cmp(last_frame, expected) == 0);
+ gpr_slice_buffer_destroy(&last_frame_buffer);
+}
+
+int main(int argc, char **argv) {
+ grpc_test_init(argc, argv);
+
+ // Test sending more metadata than the server will accept.
+ GRPC_RUN_BAD_CLIENT_TEST(server_verifier, client_validator,
+ PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR, 0);
+
+ // Test sending more metadata than the client will accept.
+ GRPC_RUN_BAD_CLIENT_TEST(server_verifier_sends_too_much_metadata,
+ client_validator,
+ PFX_TOO_MUCH_METADATA_FROM_SERVER_STR, 0);
+
+ return 0;
+}
diff --git a/test/core/bad_client/tests/large_metadata.headers b/test/core/bad_client/tests/large_metadata.headers
new file mode 100644
index 0000000000..75de3ef100
--- /dev/null
+++ b/test/core/bad_client/tests/large_metadata.headers
@@ -0,0 +1,106 @@
+# headers used in simple_request.c
+# use tools/codegen/core/gen_header_frame.py --set_end_stream to generate
+# the binary strings contained in the source code
+:path: /foo/bar
+:scheme: http
+:method: POST
+:authority: localhost
+content-type: application/grpc
+grpc-accept-encoding: identity,deflate,gzip
+te: trailers
+user-agent: bad-client grpc-c/0.12.0.0 (linux)
+user-header00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header01: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header02: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header03: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header04: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header05: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header06: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header07: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header08: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header09: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header22: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header23: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header24: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header25: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header26: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header27: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header28: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header29: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header30: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header31: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header33: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header34: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header35: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header36: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header37: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header39: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header41: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header42: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header43: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header44: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header45: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header46: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header47: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header48: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header49: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header50: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header51: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header52: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header53: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header54: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header55: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header56: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header57: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header58: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header60: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header61: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header62: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header63: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header64: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header65: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header66: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header67: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header68: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header69: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header70: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header71: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header72: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header73: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header74: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header75: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header76: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header77: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header79: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header81: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header82: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header83: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header84: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header85: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header86: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header87: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header88: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header89: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header90: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header91: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header92: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header93: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header94: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/test/core/bad_client/tests/server_registered_method.c b/test/core/bad_client/tests/server_registered_method.c
index 60d3b890b2..6216553a61 100644
--- a/test/core/bad_client/tests/server_registered_method.c
+++ b/test/core/bad_client/tests/server_registered_method.c
@@ -111,43 +111,43 @@ int main(int argc, char **argv) {
/* body generated with
* tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */
- GRPC_RUN_BAD_CLIENT_TEST(verifier_fails,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL,
PFX_STR "\x00\x00\x00\x00\x00\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier_fails,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL,
PFX_STR "\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL, PFX_STR
"\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
- GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL, PFX_STR
"\x00\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_fails,
+ verifier_fails, NULL,
PFX_STR "\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_succeeds,
+ verifier_succeeds, NULL,
PFX_STR "\x00\x00\x05\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00", 0);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_fails,
+ verifier_fails, NULL,
PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_succeeds,
+ verifier_succeeds, NULL,
PFX_STR "\x00\x00\x06\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00",
0);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_fails,
+ verifier_fails, NULL,
PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02",
GRPC_BAD_CLIENT_DISCONNECT);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_fails,
+ verifier_fails, NULL,
PFX_STR "\x00\x00\x06\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00",
GRPC_BAD_CLIENT_DISCONNECT);
GRPC_RUN_BAD_CLIENT_TEST(
- verifier_succeeds, PFX_STR
+ verifier_succeeds, NULL, PFX_STR
"\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00",
0);
diff --git a/test/core/bad_client/tests/server_registered_method.headers b/test/core/bad_client/tests/server_registered_method.headers
index 06ee73c82e..2640cc9cb8 100644
--- a/test/core/bad_client/tests/server_registered_method.headers
+++ b/test/core/bad_client/tests/server_registered_method.headers
@@ -1,4 +1,4 @@
-# headers used in simple_request.c
+# headers used in server_registered_method.c
# use tools/codegen/core/gen_header_frame.py to generate the binary strings
# contained in the source code
:path: /registered/bar
diff --git a/test/core/bad_client/tests/simple_request.c b/test/core/bad_client/tests/simple_request.c
index ac0fdde876..25bbe968e4 100644
--- a/test/core/bad_client/tests/simple_request.c
+++ b/test/core/bad_client/tests/simple_request.c
@@ -77,6 +77,27 @@
"\x10\x0cgrpc-timeout\x02" \
"5S"
+#define PFX_STR_UNUSUAL2 \
+ "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" \
+ "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */ \
+ "\x00\x00\xf4\x01\x04\x00\x00\x00\x01" /* headers: generated from \
+ simple_request_unusual2.headers \
+ in this directory */ \
+ "\x10\x05:path\x08/foo/bar" \
+ "\x10\x07:scheme\x04http" \
+ "\x10\x07:method\x04POST" \
+ "\x10\x04host\x09localhost" \
+ "\x10\x0c" \
+ "content-type\x1e" \
+ "application/grpc;this-is-valid" \
+ "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \
+ "\x10\x02te\x08trailers" \
+ "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)" \
+ "\x10\x0cgrpc-timeout\x03" \
+ "10S" \
+ "\x10\x0cgrpc-timeout\x02" \
+ "5S"
+
static void *tag(intptr_t t) { return (void *)t; }
static void verifier(grpc_server *server, grpc_completion_queue *cq,
@@ -118,41 +139,42 @@ int main(int argc, char **argv) {
grpc_test_init(argc, argv);
/* basic request: check that things are working */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR, 0);
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR_UNUSUAL, 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR, 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR_UNUSUAL, 0);
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR_UNUSUAL2, 0);
/* push an illegal data frame */
- GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
"\x00\x00\x05\x00\x00\x00\x00\x00\x01"
"\x34\x00\x00\x00\x00",
0);
/* push a data frame with bad flags */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x00\x02\x00\x00\x00\x01", 0);
/* push a window update with a bad length */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
PFX_STR "\x00\x00\x01\x08\x00\x00\x00\x00\x01", 0);
/* push a window update with bad flags */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
PFX_STR "\x00\x00\x00\x08\x10\x00\x00\x00\x01", 0);
/* push a window update with bad data */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, PFX_STR
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL, PFX_STR
"\x00\x00\x04\x08\x00\x00\x00\x00\x01"
"\xff\xff\xff\xff",
0);
/* push a short goaway */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
PFX_STR "\x00\x00\x04\x07\x00\x00\x00\x00\x00", 0);
/* disconnect before sending goaway */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
PFX_STR "\x00\x01\x12\x07\x00\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
/* push a rst_stream with a bad length */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
PFX_STR "\x00\x00\x01\x03\x00\x00\x00\x00\x01", 0);
/* push a rst_stream with bad flags */
- GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
PFX_STR "\x00\x00\x00\x03\x10\x00\x00\x00\x01", 0);
return 0;
diff --git a/test/core/bad_client/tests/simple_request_unusual2.headers b/test/core/bad_client/tests/simple_request_unusual2.headers
new file mode 100644
index 0000000000..f70920f372
--- /dev/null
+++ b/test/core/bad_client/tests/simple_request_unusual2.headers
@@ -0,0 +1,13 @@
+# headers used in simple_request.c
+# use tools/codegen/core/gen_header_frame.py to generate the binary strings
+# contained in the source code
+:path: /foo/bar
+:scheme: http
+:method: POST
+host: localhost
+content-type: application/grpc;this-is-valid
+grpc-accept-encoding: deflate,identity,gzip
+te: trailers
+user-agent: bad-client grpc-c/0.12.0.0 (linux)
+grpc-timeout: 10S
+grpc-timeout: 5S
diff --git a/test/core/bad_client/tests/unknown_frame.c b/test/core/bad_client/tests/unknown_frame.c
index f3870a1813..4f483d21f2 100644
--- a/test/core/bad_client/tests/unknown_frame.c
+++ b/test/core/bad_client/tests/unknown_frame.c
@@ -51,7 +51,7 @@ int main(int argc, char **argv) {
grpc_test_init(argc, argv);
/* test adding prioritization data */
- GRPC_RUN_BAD_CLIENT_TEST(verifier,
+ GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
PFX_STR "\x00\x00\x00\x88\x00\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
diff --git a/test/core/bad_client/tests/window_overflow.c b/test/core/bad_client/tests/window_overflow.c
index 16f11e7dd0..0d17dbe448 100644
--- a/test/core/bad_client/tests/window_overflow.c
+++ b/test/core/bad_client/tests/window_overflow.c
@@ -105,7 +105,7 @@ int main(int argc, char **argv) {
addbuf(message, sizeof(message));
}
}
- grpc_run_bad_client_test(verifier, g_buffer, g_count, 0);
+ grpc_run_bad_client_test(verifier, NULL, g_buffer, g_count, 0);
gpr_free(g_buffer);
return 0;
diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.c
index 81e3927a00..1a5594bde8 100644
--- a/test/core/channel/channel_stack_test.c
+++ b/test/core/channel/channel_stack_test.c
@@ -62,8 +62,8 @@ static void call_init_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
static void channel_destroy_func(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem) {}
-static void call_destroy_func(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {
+static void call_destroy_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *ignored) {
++*(int *)(elem->channel_data);
}
@@ -87,7 +87,7 @@ static void free_channel(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
}
static void free_call(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
- grpc_call_stack_destroy(exec_ctx, arg);
+ grpc_call_stack_destroy(exec_ctx, arg, NULL);
gpr_free(arg);
}
diff --git a/test/core/end2end/fixtures/h2_census.c b/test/core/end2end/fixtures/h2_census.c
index ff2f028f09..e46b39e476 100644
--- a/test/core/end2end/fixtures/h2_census.c
+++ b/test/core/end2end/fixtures/h2_census.c
@@ -111,7 +111,7 @@ void chttp2_tear_down_fullstack(grpc_end2end_test_fixture *f) {
/* All test configurations */
static grpc_end2end_test_config configs[] = {
- {"chttp2/fullstack", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
+ {"chttp2/fullstack+census", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
chttp2_create_fixture_fullstack, chttp2_init_client_fullstack,
chttp2_init_server_fullstack, chttp2_tear_down_fullstack},
};
diff --git a/test/core/end2end/fixtures/h2_proxy.c b/test/core/end2end/fixtures/h2_proxy.c
index 863673a4e0..8c50eeb5d5 100644
--- a/test/core/end2end/fixtures/h2_proxy.c
+++ b/test/core/end2end/fixtures/h2_proxy.c
@@ -55,14 +55,16 @@ typedef struct fullstack_fixture_data {
grpc_end2end_proxy *proxy;
} fullstack_fixture_data;
-static grpc_server *create_proxy_server(const char *port) {
- grpc_server *s = grpc_server_create(NULL, NULL);
+static grpc_server *create_proxy_server(const char *port,
+ grpc_channel_args *server_args) {
+ grpc_server *s = grpc_server_create(server_args, NULL);
GPR_ASSERT(grpc_server_add_insecure_http2_port(s, port));
return s;
}
-static grpc_channel *create_proxy_client(const char *target) {
- return grpc_insecure_channel_create(target, NULL, NULL);
+static grpc_channel *create_proxy_client(const char *target,
+ grpc_channel_args *client_args) {
+ return grpc_insecure_channel_create(target, client_args, NULL);
}
static const grpc_end2end_proxy_def proxy_def = {create_proxy_server,
@@ -74,7 +76,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
fullstack_fixture_data *ffd = gpr_malloc(sizeof(fullstack_fixture_data));
memset(&f, 0, sizeof(f));
- ffd->proxy = grpc_end2end_proxy_create(&proxy_def);
+ ffd->proxy = grpc_end2end_proxy_create(&proxy_def, client_args, server_args);
f.fixture_data = ffd;
f.cq = grpc_completion_queue_create(NULL);
diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.c b/test/core/end2end/fixtures/h2_ssl_proxy.c
index 1403b760f5..151a86cb8f 100644
--- a/test/core/end2end/fixtures/h2_ssl_proxy.c
+++ b/test/core/end2end/fixtures/h2_ssl_proxy.c
@@ -54,8 +54,9 @@ typedef struct fullstack_secure_fixture_data {
grpc_end2end_proxy *proxy;
} fullstack_secure_fixture_data;
-static grpc_server *create_proxy_server(const char *port) {
- grpc_server *s = grpc_server_create(NULL, NULL);
+static grpc_server *create_proxy_server(const char *port,
+ grpc_channel_args *server_args) {
+ grpc_server *s = grpc_server_create(server_args, NULL);
grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key,
test_server1_cert};
grpc_server_credentials *ssl_creds =
@@ -65,18 +66,20 @@ static grpc_server *create_proxy_server(const char *port) {
return s;
}
-static grpc_channel *create_proxy_client(const char *target) {
+static grpc_channel *create_proxy_client(const char *target,
+ grpc_channel_args *client_args) {
grpc_channel *channel;
grpc_channel_credentials *ssl_creds =
grpc_ssl_credentials_create(NULL, NULL, NULL);
grpc_arg ssl_name_override = {GRPC_ARG_STRING,
GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
{"foo.test.google.fr"}};
- grpc_channel_args client_args;
- client_args.num_args = 1;
- client_args.args = &ssl_name_override;
- channel = grpc_secure_channel_create(ssl_creds, target, &client_args, NULL);
+ grpc_channel_args *new_client_args =
+ grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
+ channel =
+ grpc_secure_channel_create(ssl_creds, target, new_client_args, NULL);
grpc_channel_credentials_release(ssl_creds);
+ grpc_channel_args_destroy(new_client_args);
return channel;
}
@@ -90,7 +93,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(
gpr_malloc(sizeof(fullstack_secure_fixture_data));
memset(&f, 0, sizeof(f));
- ffd->proxy = grpc_end2end_proxy_create(&proxy_def);
+ ffd->proxy = grpc_end2end_proxy_create(&proxy_def, client_args, server_args);
f.fixture_data = ffd;
f.cq = grpc_completion_queue_create(NULL);
diff --git a/test/core/end2end/fixtures/proxy.c b/test/core/end2end/fixtures/proxy.c
index a6487a17ac..f6e01ec41c 100644
--- a/test/core/end2end/fixtures/proxy.c
+++ b/test/core/end2end/fixtures/proxy.c
@@ -89,8 +89,9 @@ typedef struct {
static void thread_main(void *arg);
static void request_call(grpc_end2end_proxy *proxy);
-grpc_end2end_proxy *grpc_end2end_proxy_create(
- const grpc_end2end_proxy_def *def) {
+grpc_end2end_proxy *grpc_end2end_proxy_create(const grpc_end2end_proxy_def *def,
+ grpc_channel_args *client_args,
+ grpc_channel_args *server_args) {
gpr_thd_options opt = gpr_thd_options_default();
int proxy_port = grpc_pick_unused_port_or_die();
int server_port = grpc_pick_unused_port_or_die();
@@ -105,8 +106,8 @@ grpc_end2end_proxy *grpc_end2end_proxy_create(
proxy->server_port);
proxy->cq = grpc_completion_queue_create(NULL);
- proxy->server = def->create_server(proxy->proxy_port);
- proxy->client = def->create_client(proxy->server_port);
+ proxy->server = def->create_server(proxy->proxy_port, server_args);
+ proxy->client = def->create_client(proxy->server_port, client_args);
grpc_server_register_completion_queue(proxy->server, proxy->cq, NULL);
grpc_server_start(proxy->server);
diff --git a/test/core/end2end/fixtures/proxy.h b/test/core/end2end/fixtures/proxy.h
index c1cf01d39a..75b75d1331 100644
--- a/test/core/end2end/fixtures/proxy.h
+++ b/test/core/end2end/fixtures/proxy.h
@@ -41,12 +41,15 @@
typedef struct grpc_end2end_proxy grpc_end2end_proxy;
typedef struct grpc_end2end_proxy_def {
- grpc_server *(*create_server)(const char *port);
- grpc_channel *(*create_client)(const char *target);
+ grpc_server *(*create_server)(const char *port,
+ grpc_channel_args *server_args);
+ grpc_channel *(*create_client)(const char *target,
+ grpc_channel_args *client_args);
} grpc_end2end_proxy_def;
-grpc_end2end_proxy *grpc_end2end_proxy_create(
- const grpc_end2end_proxy_def *def);
+grpc_end2end_proxy *grpc_end2end_proxy_create(const grpc_end2end_proxy_def *def,
+ grpc_channel_args *client_args,
+ grpc_channel_args *server_args);
void grpc_end2end_proxy_destroy(grpc_end2end_proxy *proxy);
const char *grpc_end2end_proxy_get_client_target(grpc_end2end_proxy *proxy);
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
new file mode 100644
index 0000000000..b133a948ee
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -0,0 +1,896 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <string.h>
+
+#include <grpc/grpc.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/tcp_client.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/surface/server.h"
+#include "src/core/lib/transport/metadata.h"
+#include "test/core/util/passthru_endpoint.h"
+
+////////////////////////////////////////////////////////////////////////////////
+// logging
+
+static const bool squelch = true;
+
+static void dont_log(gpr_log_func_args *args) {}
+
+////////////////////////////////////////////////////////////////////////////////
+// input_stream: allows easy access to input bytes, and allows reading a little
+// past the end (avoiding needing to check everywhere)
+
+typedef struct {
+ const uint8_t *cur;
+ const uint8_t *end;
+} input_stream;
+
+static uint8_t next_byte(input_stream *inp) {
+ if (inp->cur == inp->end) {
+ return 0;
+ }
+ return *inp->cur++;
+}
+
+static void end(input_stream *inp) { inp->cur = inp->end; }
+
+static char *read_string(input_stream *inp) {
+ char *str = NULL;
+ size_t cap = 0;
+ size_t sz = 0;
+ char c;
+ do {
+ if (cap == sz) {
+ cap = GPR_MAX(3 * cap / 2, cap + 8);
+ str = gpr_realloc(str, cap);
+ }
+ c = (char)next_byte(inp);
+ str[sz++] = c;
+ } while (c != 0);
+ return str;
+}
+
+static void read_buffer(input_stream *inp, char **buffer, size_t *length) {
+ *length = next_byte(inp);
+ *buffer = gpr_malloc(*length);
+ for (size_t i = 0; i < *length; i++) {
+ (*buffer)[i] = (char)next_byte(inp);
+ }
+}
+
+static uint32_t read_uint22(input_stream *inp) {
+ uint8_t b = next_byte(inp);
+ uint32_t x = b & 0x7f;
+ if (b & 0x80) {
+ x <<= 7;
+ b = next_byte(inp);
+ x |= b & 0x7f;
+ if (b & 0x80) {
+ x <<= 8;
+ x |= next_byte(inp);
+ }
+ }
+ return x;
+}
+
+static uint32_t read_uint32(input_stream *inp) {
+ uint8_t b = next_byte(inp);
+ uint32_t x = b & 0x7f;
+ if (b & 0x80) {
+ x <<= 7;
+ b = next_byte(inp);
+ x |= b & 0x7f;
+ if (b & 0x80) {
+ x <<= 7;
+ b = next_byte(inp);
+ x |= b & 0x7f;
+ if (b & 0x80) {
+ x <<= 7;
+ b = next_byte(inp);
+ x |= b & 0x7f;
+ if (b & 0x80) {
+ x = (x << 4) | (next_byte(inp) & 0x0f);
+ }
+ }
+ }
+ }
+ return x;
+}
+
+static grpc_byte_buffer *read_message(input_stream *inp) {
+ gpr_slice slice = gpr_slice_malloc(read_uint22(inp));
+ memset(GPR_SLICE_START_PTR(slice), 0, GPR_SLICE_LENGTH(slice));
+ grpc_byte_buffer *out = grpc_raw_byte_buffer_create(&slice, 1);
+ gpr_slice_unref(slice);
+ return out;
+}
+
+static int read_int(input_stream *inp) { return (int)read_uint32(inp); }
+
+static grpc_channel_args *read_args(input_stream *inp) {
+ size_t n = next_byte(inp);
+ grpc_arg *args = gpr_malloc(sizeof(*args) * n);
+ for (size_t i = 0; i < n; i++) {
+ bool is_string = next_byte(inp) & 1;
+ args[i].type = is_string ? GRPC_ARG_STRING : GRPC_ARG_INTEGER;
+ args[i].key = read_string(inp);
+ if (is_string) {
+ args[i].value.string = read_string(inp);
+ } else {
+ args[i].value.integer = read_int(inp);
+ }
+ }
+ grpc_channel_args *a = gpr_malloc(sizeof(*a));
+ a->args = args;
+ a->num_args = n;
+ return a;
+}
+
+static bool is_eof(input_stream *inp) { return inp->cur == inp->end; }
+
+////////////////////////////////////////////////////////////////////////////////
+// global state
+
+static gpr_timespec g_now;
+static grpc_server *g_server;
+static grpc_channel *g_channel;
+
+extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
+
+static gpr_timespec now_impl(gpr_clock_type clock_type) {
+ GPR_ASSERT(clock_type != GPR_TIMESPAN);
+ return g_now;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// dns resolution
+
+typedef struct addr_req {
+ grpc_timer timer;
+ char *addr;
+ grpc_resolve_cb cb;
+ void *arg;
+} addr_req;
+
+static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+ addr_req *r = arg;
+
+ if (success && 0 == strcmp(r->addr, "server")) {
+ grpc_resolved_addresses *addrs = gpr_malloc(sizeof(*addrs));
+ addrs->naddrs = 1;
+ addrs->addrs = gpr_malloc(sizeof(*addrs->addrs));
+ addrs->addrs[0].len = 0;
+ r->cb(exec_ctx, r->arg, addrs);
+ } else {
+ r->cb(exec_ctx, r->arg, NULL);
+ }
+
+ gpr_free(r->addr);
+ gpr_free(r);
+}
+
+void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
+ const char *default_port, grpc_resolve_cb cb,
+ void *arg) {
+ addr_req *r = gpr_malloc(sizeof(*r));
+ r->addr = gpr_strdup(addr);
+ r->cb = cb;
+ r->arg = arg;
+ grpc_timer_init(exec_ctx, &r->timer,
+ gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
+ gpr_time_from_seconds(1, GPR_TIMESPAN)),
+ finish_resolve, r, gpr_now(GPR_CLOCK_MONOTONIC));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// client connection
+
+// defined in tcp_client_posix.c
+extern void (*grpc_tcp_client_connect_impl)(
+ grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
+ grpc_pollset_set *interested_parties, const struct sockaddr *addr,
+ size_t addr_len, gpr_timespec deadline);
+
+static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
+ grpc_endpoint **ep, gpr_timespec deadline);
+
+typedef struct {
+ grpc_timer timer;
+ grpc_closure *closure;
+ grpc_endpoint **ep;
+ gpr_timespec deadline;
+} future_connect;
+
+static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+ future_connect *fc = arg;
+ if (!success) {
+ *fc->ep = NULL;
+ grpc_exec_ctx_enqueue(exec_ctx, fc->closure, false, NULL);
+ } else if (g_server != NULL) {
+ grpc_endpoint *client;
+ grpc_endpoint *server;
+ grpc_passthru_endpoint_create(&client, &server);
+ *fc->ep = client;
+
+ grpc_transport *transport =
+ grpc_create_chttp2_transport(exec_ctx, NULL, server, 0);
+ grpc_server_setup_transport(exec_ctx, g_server, transport, NULL);
+ grpc_chttp2_transport_start_reading(exec_ctx, transport, NULL, 0);
+
+ grpc_exec_ctx_enqueue(exec_ctx, fc->closure, false, NULL);
+ } else {
+ sched_connect(exec_ctx, fc->closure, fc->ep, fc->deadline);
+ }
+ gpr_free(fc);
+}
+
+static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
+ grpc_endpoint **ep, gpr_timespec deadline) {
+ if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) < 0) {
+ *ep = NULL;
+ grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
+ return;
+ }
+
+ future_connect *fc = gpr_malloc(sizeof(*fc));
+ fc->closure = closure;
+ fc->ep = ep;
+ fc->deadline = deadline;
+ grpc_timer_init(exec_ctx, &fc->timer,
+ gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
+ gpr_time_from_millis(1, GPR_TIMESPAN)),
+ do_connect, fc, gpr_now(GPR_CLOCK_MONOTONIC));
+}
+
+static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
+ grpc_closure *closure, grpc_endpoint **ep,
+ grpc_pollset_set *interested_parties,
+ const struct sockaddr *addr, size_t addr_len,
+ gpr_timespec deadline) {
+ sched_connect(exec_ctx, closure, ep, deadline);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// test driver
+
+typedef struct validator {
+ void (*validate)(void *arg, bool success);
+ void *arg;
+} validator;
+
+static validator *create_validator(void (*validate)(void *arg, bool success),
+ void *arg) {
+ validator *v = gpr_malloc(sizeof(*v));
+ v->validate = validate;
+ v->arg = arg;
+ return v;
+}
+
+static void assert_success_and_decrement(void *counter, bool success) {
+ GPR_ASSERT(success);
+ --*(int *)counter;
+}
+
+static void decrement(void *counter, bool success) { --*(int *)counter; }
+
+typedef struct connectivity_watch {
+ int *counter;
+ gpr_timespec deadline;
+} connectivity_watch;
+
+static connectivity_watch *make_connectivity_watch(gpr_timespec s,
+ int *counter) {
+ connectivity_watch *o = gpr_malloc(sizeof(*o));
+ o->deadline = s;
+ o->counter = counter;
+ return o;
+}
+
+static void validate_connectivity_watch(void *p, bool success) {
+ connectivity_watch *w = p;
+ if (!success) {
+ GPR_ASSERT(gpr_time_cmp(gpr_now(w->deadline.clock_type), w->deadline) >= 0);
+ }
+ --*w->counter;
+ gpr_free(w);
+}
+
+static void free_non_null(void *p) {
+ GPR_ASSERT(p != NULL);
+ gpr_free(p);
+}
+
+typedef enum { ROOT, CLIENT, SERVER, PENDING_SERVER } call_state_type;
+
+typedef struct call_state {
+ call_state_type type;
+ grpc_call *call;
+ grpc_byte_buffer *recv_message;
+ grpc_status_code status;
+ grpc_metadata_array recv_initial_metadata;
+ grpc_metadata_array recv_trailing_metadata;
+ char *recv_status_details;
+ size_t recv_status_details_capacity;
+ int cancelled;
+ int pending_ops;
+ grpc_call_details call_details;
+
+ // array of pointers to free later
+ size_t num_to_free;
+ size_t cap_to_free;
+ void **to_free;
+
+ struct call_state *next;
+ struct call_state *prev;
+} call_state;
+
+static call_state *g_active_call;
+
+static call_state *new_call(call_state *sibling, call_state_type type) {
+ call_state *c = gpr_malloc(sizeof(*c));
+ memset(c, 0, sizeof(*c));
+ if (sibling != NULL) {
+ c->next = sibling;
+ c->prev = sibling->prev;
+ c->next->prev = c->prev->next = c;
+ } else {
+ c->next = c->prev = c;
+ }
+ c->type = type;
+ return c;
+}
+
+static call_state *maybe_delete_call_state(call_state *call) {
+ call_state *next = call->next;
+
+ if (call->call != NULL) return next;
+ if (call->pending_ops != 0) return next;
+
+ if (call == g_active_call) {
+ g_active_call = call->next;
+ GPR_ASSERT(call != g_active_call);
+ }
+
+ call->prev->next = call->next;
+ call->next->prev = call->prev;
+ grpc_metadata_array_destroy(&call->recv_initial_metadata);
+ grpc_metadata_array_destroy(&call->recv_trailing_metadata);
+ gpr_free(call->recv_status_details);
+ grpc_call_details_destroy(&call->call_details);
+
+ for (size_t i = 0; i < call->num_to_free; i++) {
+ gpr_free(call->to_free[i]);
+ }
+ gpr_free(call->to_free);
+
+ gpr_free(call);
+
+ return next;
+}
+
+static void add_to_free(call_state *call, void *p) {
+ if (call->num_to_free == call->cap_to_free) {
+ call->cap_to_free = GPR_MAX(8, 2 * call->cap_to_free);
+ call->to_free =
+ gpr_realloc(call->to_free, sizeof(*call->to_free) * call->cap_to_free);
+ }
+ call->to_free[call->num_to_free++] = p;
+}
+
+static void read_metadata(input_stream *inp, size_t *count,
+ grpc_metadata **metadata, call_state *cs) {
+ *count = next_byte(inp);
+ *metadata = gpr_malloc(*count * sizeof(**metadata));
+ memset(*metadata, 0, *count * sizeof(**metadata));
+ for (size_t i = 0; i < *count; i++) {
+ (*metadata)[i].key = read_string(inp);
+ read_buffer(inp, (char **)&(*metadata)[i].value,
+ &(*metadata)[i].value_length);
+ (*metadata)[i].flags = read_uint32(inp);
+ add_to_free(cs, (void *)(*metadata)[i].key);
+ add_to_free(cs, (void *)(*metadata)[i].value);
+ }
+ add_to_free(cs, *metadata);
+}
+
+static call_state *destroy_call(call_state *call) {
+ grpc_call_destroy(call->call);
+ call->call = NULL;
+ return maybe_delete_call_state(call);
+}
+
+static void finished_request_call(void *csp, bool success) {
+ call_state *cs = csp;
+ GPR_ASSERT(cs->pending_ops > 0);
+ --cs->pending_ops;
+ if (success) {
+ GPR_ASSERT(cs->call != NULL);
+ cs->type = SERVER;
+ } else {
+ maybe_delete_call_state(cs);
+ }
+}
+
+static void finished_batch(void *csp, bool success) {
+ call_state *cs = csp;
+ --cs->pending_ops;
+ maybe_delete_call_state(cs);
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+ grpc_test_only_set_metadata_hash_seed(0);
+ if (squelch) gpr_set_log_function(dont_log);
+ input_stream inp = {data, data + size};
+ grpc_resolve_address = my_resolve_address;
+ grpc_tcp_client_connect_impl = my_tcp_client_connect;
+ gpr_now_impl = now_impl;
+ grpc_init();
+
+ GPR_ASSERT(g_channel == NULL);
+ GPR_ASSERT(g_server == NULL);
+
+ bool server_shutdown = false;
+ int pending_server_shutdowns = 0;
+ int pending_channel_watches = 0;
+ int pending_pings = 0;
+
+ g_active_call = new_call(NULL, ROOT);
+
+ grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
+
+ while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
+ pending_channel_watches > 0 || pending_pings > 0 ||
+ g_active_call->type != ROOT || g_active_call->next != g_active_call) {
+ if (is_eof(&inp)) {
+ if (g_channel != NULL) {
+ grpc_channel_destroy(g_channel);
+ g_channel = NULL;
+ }
+ if (g_server != NULL) {
+ if (!server_shutdown) {
+ grpc_server_shutdown_and_notify(
+ g_server, cq, create_validator(assert_success_and_decrement,
+ &pending_server_shutdowns));
+ server_shutdown = true;
+ pending_server_shutdowns++;
+ } else if (pending_server_shutdowns == 0) {
+ grpc_server_destroy(g_server);
+ g_server = NULL;
+ }
+ }
+ call_state *s = g_active_call;
+ do {
+ if (s->type != PENDING_SERVER && s->call != NULL) {
+ s = destroy_call(s);
+ } else {
+ s = s->next;
+ }
+ } while (s != g_active_call);
+
+ g_now = gpr_time_add(g_now, gpr_time_from_seconds(1, GPR_TIMESPAN));
+ }
+
+ switch (next_byte(&inp)) {
+ // terminate on bad bytes
+ default:
+ end(&inp);
+ break;
+ // tickle completion queue
+ case 0: {
+ grpc_event ev = grpc_completion_queue_next(
+ cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
+ switch (ev.type) {
+ case GRPC_OP_COMPLETE: {
+ validator *v = ev.tag;
+ v->validate(v->arg, ev.success);
+ gpr_free(v);
+ break;
+ }
+ case GRPC_QUEUE_TIMEOUT:
+ break;
+ case GRPC_QUEUE_SHUTDOWN:
+ abort();
+ break;
+ }
+ break;
+ }
+ // increment global time
+ case 1: {
+ g_now = gpr_time_add(
+ g_now, gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
+ break;
+ }
+ // create an insecure channel
+ case 2: {
+ if (g_channel == NULL) {
+ char *target = read_string(&inp);
+ char *target_uri;
+ gpr_asprintf(&target_uri, "dns:%s", target);
+ grpc_channel_args *args = read_args(&inp);
+ g_channel = grpc_insecure_channel_create(target_uri, args, NULL);
+ GPR_ASSERT(g_channel != NULL);
+ grpc_channel_args_destroy(args);
+ gpr_free(target_uri);
+ gpr_free(target);
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // destroy a channel
+ case 3: {
+ if (g_channel != NULL) {
+ grpc_channel_destroy(g_channel);
+ g_channel = NULL;
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // bring up a server
+ case 4: {
+ if (g_server == NULL) {
+ grpc_channel_args *args = read_args(&inp);
+ g_server = grpc_server_create(args, NULL);
+ GPR_ASSERT(g_server != NULL);
+ grpc_channel_args_destroy(args);
+ grpc_server_register_completion_queue(g_server, cq, NULL);
+ grpc_server_start(g_server);
+ server_shutdown = false;
+ GPR_ASSERT(pending_server_shutdowns == 0);
+ } else {
+ end(&inp);
+ }
+ }
+ // begin server shutdown
+ case 5: {
+ if (g_server != NULL) {
+ grpc_server_shutdown_and_notify(
+ g_server, cq, create_validator(assert_success_and_decrement,
+ &pending_server_shutdowns));
+ pending_server_shutdowns++;
+ server_shutdown = true;
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // cancel all calls if shutdown
+ case 6: {
+ if (g_server != NULL && server_shutdown) {
+ grpc_server_cancel_all_calls(g_server);
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // destroy server
+ case 7: {
+ if (g_server != NULL && server_shutdown &&
+ pending_server_shutdowns == 0) {
+ grpc_server_destroy(g_server);
+ g_server = NULL;
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // check connectivity
+ case 8: {
+ if (g_channel != NULL) {
+ uint8_t try_to_connect = next_byte(&inp);
+ if (try_to_connect == 0 || try_to_connect == 1) {
+ grpc_channel_check_connectivity_state(g_channel, try_to_connect);
+ } else {
+ end(&inp);
+ }
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // watch connectivity
+ case 9: {
+ if (g_channel != NULL) {
+ grpc_connectivity_state st =
+ grpc_channel_check_connectivity_state(g_channel, 0);
+ if (st != GRPC_CHANNEL_FATAL_FAILURE) {
+ gpr_timespec deadline = gpr_time_add(
+ gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
+ grpc_channel_watch_connectivity_state(
+ g_channel, st, deadline, cq,
+ create_validator(validate_connectivity_watch,
+ make_connectivity_watch(
+ deadline, &pending_channel_watches)));
+ pending_channel_watches++;
+ }
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // create a call
+ case 10: {
+ bool ok = true;
+ if (g_channel == NULL) ok = false;
+ grpc_call *parent_call = NULL;
+ if (g_active_call->type != ROOT) {
+ if (g_active_call->call == NULL || g_active_call->type == CLIENT) {
+ end(&inp);
+ break;
+ }
+ parent_call = g_active_call->call;
+ }
+ uint32_t propagation_mask = read_uint32(&inp);
+ char *method = read_string(&inp);
+ char *host = read_string(&inp);
+ gpr_timespec deadline =
+ gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
+
+ if (ok) {
+ call_state *cs = new_call(g_active_call, CLIENT);
+ cs->call =
+ grpc_channel_create_call(g_channel, parent_call, propagation_mask,
+ cq, method, host, deadline, NULL);
+ } else {
+ end(&inp);
+ }
+ gpr_free(method);
+ gpr_free(host);
+ break;
+ }
+ // switch the 'current' call
+ case 11: {
+ g_active_call = g_active_call->next;
+ break;
+ }
+ // queue some ops on a call
+ case 12: {
+ if (g_active_call->type == PENDING_SERVER ||
+ g_active_call->type == ROOT || g_active_call->call == NULL) {
+ end(&inp);
+ break;
+ }
+ size_t num_ops = next_byte(&inp);
+ if (num_ops > 6) {
+ end(&inp);
+ break;
+ }
+ grpc_op *ops = gpr_malloc(sizeof(grpc_op) * num_ops);
+ bool ok = true;
+ size_t i;
+ grpc_op *op;
+ for (i = 0; i < num_ops; i++) {
+ op = &ops[i];
+ switch (next_byte(&inp)) {
+ default:
+ /* invalid value */
+ op->op = (grpc_op_type)-1;
+ ok = false;
+ break;
+ case GRPC_OP_SEND_INITIAL_METADATA:
+ op->op = GRPC_OP_SEND_INITIAL_METADATA;
+ read_metadata(&inp, &op->data.send_initial_metadata.count,
+ &op->data.send_initial_metadata.metadata,
+ g_active_call);
+ break;
+ case GRPC_OP_SEND_MESSAGE:
+ op->op = GRPC_OP_SEND_MESSAGE;
+ op->data.send_message = read_message(&inp);
+ break;
+ case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
+ op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
+ break;
+ case GRPC_OP_SEND_STATUS_FROM_SERVER:
+ op->op = GRPC_OP_SEND_STATUS_FROM_SERVER;
+ read_metadata(
+ &inp,
+ &op->data.send_status_from_server.trailing_metadata_count,
+ &op->data.send_status_from_server.trailing_metadata,
+ g_active_call);
+ op->data.send_status_from_server.status = next_byte(&inp);
+ op->data.send_status_from_server.status_details =
+ read_string(&inp);
+ break;
+ case GRPC_OP_RECV_INITIAL_METADATA:
+ op->op = GRPC_OP_RECV_INITIAL_METADATA;
+ op->data.recv_initial_metadata =
+ &g_active_call->recv_initial_metadata;
+ break;
+ case GRPC_OP_RECV_MESSAGE:
+ op->op = GRPC_OP_RECV_MESSAGE;
+ op->data.recv_message = &g_active_call->recv_message;
+ break;
+ case GRPC_OP_RECV_STATUS_ON_CLIENT:
+ op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
+ op->data.recv_status_on_client.status = &g_active_call->status;
+ op->data.recv_status_on_client.trailing_metadata =
+ &g_active_call->recv_trailing_metadata;
+ op->data.recv_status_on_client.status_details =
+ &g_active_call->recv_status_details;
+ op->data.recv_status_on_client.status_details_capacity =
+ &g_active_call->recv_status_details_capacity;
+ break;
+ case GRPC_OP_RECV_CLOSE_ON_SERVER:
+ op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
+ op->data.recv_close_on_server.cancelled =
+ &g_active_call->cancelled;
+ break;
+ }
+ op->reserved = NULL;
+ op->flags = read_uint32(&inp);
+ }
+ if (ok) {
+ validator *v = create_validator(finished_batch, g_active_call);
+ g_active_call->pending_ops++;
+ grpc_call_error error =
+ grpc_call_start_batch(g_active_call->call, ops, num_ops, v, NULL);
+ if (error != GRPC_CALL_OK) {
+ v->validate(v->arg, false);
+ gpr_free(v);
+ }
+ } else {
+ end(&inp);
+ }
+ for (i = 0; i < num_ops; i++) {
+ op = &ops[i];
+ switch (op->op) {
+ case GRPC_OP_SEND_INITIAL_METADATA:
+ break;
+ case GRPC_OP_SEND_MESSAGE:
+ grpc_byte_buffer_destroy(op->data.send_message);
+ break;
+ case GRPC_OP_SEND_STATUS_FROM_SERVER:
+ gpr_free((void *)op->data.send_status_from_server.status_details);
+ break;
+ case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
+ case GRPC_OP_RECV_INITIAL_METADATA:
+ case GRPC_OP_RECV_MESSAGE:
+ case GRPC_OP_RECV_STATUS_ON_CLIENT:
+ case GRPC_OP_RECV_CLOSE_ON_SERVER:
+ break;
+ }
+ }
+ gpr_free(ops);
+
+ break;
+ }
+ // cancel current call
+ case 13: {
+ if (g_active_call->type != ROOT && g_active_call->call != NULL) {
+ grpc_call_cancel(g_active_call->call, NULL);
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // get a calls peer
+ case 14: {
+ if (g_active_call->type != ROOT && g_active_call->call != NULL) {
+ free_non_null(grpc_call_get_peer(g_active_call->call));
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // get a channels target
+ case 15: {
+ if (g_channel != NULL) {
+ free_non_null(grpc_channel_get_target(g_channel));
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // send a ping on a channel
+ case 16: {
+ if (g_channel != NULL) {
+ pending_pings++;
+ grpc_channel_ping(g_channel, cq,
+ create_validator(decrement, &pending_pings), NULL);
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ // enable a tracer
+ case 17: {
+ char *tracer = read_string(&inp);
+ grpc_tracer_set_enabled(tracer, 1);
+ gpr_free(tracer);
+ break;
+ }
+ // disable a tracer
+ case 18: {
+ char *tracer = read_string(&inp);
+ grpc_tracer_set_enabled(tracer, 0);
+ gpr_free(tracer);
+ break;
+ }
+ // request a server call
+ case 19: {
+ if (g_server == NULL) {
+ end(&inp);
+ break;
+ }
+ call_state *cs = new_call(g_active_call, PENDING_SERVER);
+ cs->pending_ops++;
+ validator *v = create_validator(finished_request_call, cs);
+ grpc_call_error error =
+ grpc_server_request_call(g_server, &cs->call, &cs->call_details,
+ &cs->recv_initial_metadata, cq, cq, v);
+ if (error != GRPC_CALL_OK) {
+ v->validate(v->arg, false);
+ gpr_free(v);
+ }
+ break;
+ }
+ // destroy a call
+ case 20: {
+ if (g_active_call->type != ROOT &&
+ g_active_call->type != PENDING_SERVER &&
+ g_active_call->call != NULL) {
+ destroy_call(g_active_call);
+ } else {
+ end(&inp);
+ }
+ break;
+ }
+ }
+ }
+
+ GPR_ASSERT(g_channel == NULL);
+ GPR_ASSERT(g_server == NULL);
+ GPR_ASSERT(g_active_call->type == ROOT);
+ GPR_ASSERT(g_active_call->next == g_active_call);
+ gpr_free(g_active_call);
+
+ grpc_completion_queue_shutdown(cq);
+ GPR_ASSERT(
+ grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL)
+ .type == GRPC_QUEUE_SHUTDOWN);
+ grpc_completion_queue_destroy(cq);
+
+ grpc_shutdown();
+ return 0;
+}
diff --git a/test/core/end2end/fuzzers/api_fuzzer.dictionary b/test/core/end2end/fuzzers/api_fuzzer.dictionary
new file mode 100644
index 0000000000..c8dcc56dd1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer.dictionary
@@ -0,0 +1,27 @@
+# tracers
+"api\x00"
+"channel\x00"
+"channel_stack_builder\x00"
+"connectivity_state\x00"
+"flowctl\x00"
+"http\x00"
+"http1\x00"
+"round_robin\x00"
+"secure_endpoint\x00"
+"tcp\x00"
+"transport_security\x00"
+
+# channel args
+"\x00grpc.census\x00"
+"\x00grpc.max_concurrent_streams\x00"
+"\x00grpc.max_message_length\x00"
+"\x00grpc.http2.initial_sequence_number\x00"
+"\x00grpc.http2.lookahead_bytes\x00"
+"\x00grpc.http2.hpack_table_size.decoder\x00"
+"\x00grpc.http2.hpack_table_size.encoder\x00"
+"\x01grpc.default_authority\x00"
+"\x01grpc.primary_user_agent\x00"
+"\x01grpc.secondary_user_agent\x00"
+"\x00grpc.max_reconnect_backoff_ms\x00"
+"\x01grpc.ssl_target_name_override\x00"
+
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin
new file mode 100644
index 0000000000..f76dd238ad
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin
new file mode 100644
index 0000000000..6b2aaa7640
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524
new file mode 100644
index 0000000000..fc0942d8be
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin
new file mode 100644
index 0000000000..25cb955ba2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47
new file mode 100644
index 0000000000..1a2c219fc1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a b/test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a
new file mode 100644
index 0000000000..3e11c30b0b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e b/test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e
new file mode 100644
index 0000000000..9ba80bd1dc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin
new file mode 100644
index 0000000000..fc2b5693e0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711
new file mode 100644
index 0000000000..4044081257
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin
new file mode 100644
index 0000000000..45a8ca02bf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865
new file mode 100644
index 0000000000..050767999a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451
new file mode 100644
index 0000000000..8803e430b9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220
new file mode 100644
index 0000000000..6bc933444f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c b/test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c
new file mode 100644
index 0000000000..d46856deb1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14 b/test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14
new file mode 100644
index 0000000000..f65526c3d5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin
new file mode 100644
index 0000000000..b0b2b1c8dd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105
new file mode 100644
index 0000000000..37bb90ddf4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b b/test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b
new file mode 100644
index 0000000000..15ed709aa6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e b/test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e
new file mode 100644
index 0000000000..5713da5bbd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2
new file mode 100644
index 0000000000..2f2494d00e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin
new file mode 100644
index 0000000000..f8fa5a2354
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe b/test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe
new file mode 100644
index 0000000000..1ca4fad3d7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75 b/test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75
new file mode 100644
index 0000000000..d430eb6387
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin
new file mode 100644
index 0000000000..303e398c82
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be b/test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be
new file mode 100644
index 0000000000..2ca9049752
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638 b/test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638
new file mode 100644
index 0000000000..42d608213c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c b/test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c
new file mode 100644
index 0000000000..e87065df42
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f b/test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f
new file mode 100644
index 0000000000..e814b6ec56
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1
new file mode 100644
index 0000000000..45c4b81116
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin
new file mode 100644
index 0000000000..5a77f05831
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0
new file mode 100644
index 0000000000..85820f36e6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin
new file mode 100644
index 0000000000..501a6bbaf1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6
new file mode 100644
index 0000000000..766c0ade04
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb b/test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb
new file mode 100644
index 0000000000..e2f0da626d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin
@@ -0,0 +1 @@
+
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256
new file mode 100644
index 0000000000..c7464b2940
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f
new file mode 100644
index 0000000000..706aab1332
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin
new file mode 100644
index 0000000000..2725bca000
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2
new file mode 100644
index 0000000000..e165c8c679
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524
new file mode 100644
index 0000000000..b1776ca2f0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin
new file mode 100644
index 0000000000..8214d0ee07
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin
new file mode 100644
index 0000000000..67c3297611
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533
new file mode 100644
index 0000000000..6ff033ed62
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36
new file mode 100644
index 0000000000..4c0ac757d1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24
new file mode 100644
index 0000000000..251648518a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2
new file mode 100644
index 0000000000..b8e356f50d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin
new file mode 100644
index 0000000000..c30d0581bf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3
new file mode 100644
index 0000000000..50e9c19125
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e b/test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e
new file mode 100644
index 0000000000..3f97dd4d04
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6
new file mode 100644
index 0000000000..239e86c4b5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f b/test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f
new file mode 100644
index 0000000000..217fed250f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa b/test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa
new file mode 100644
index 0000000000..38d3368c28
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c b/test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c
new file mode 100644
index 0000000000..65728fa9f3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772
new file mode 100644
index 0000000000..20ece80c55
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4
new file mode 100644
index 0000000000..f12e8587fb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66 b/test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66
new file mode 100644
index 0000000000..f62faf351a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38 b/test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38
new file mode 100644
index 0000000000..c737ee5cd1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059 b/test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059
new file mode 100644
index 0000000000..7edcab61d6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc b/test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc
new file mode 100644
index 0000000000..9091ea32a8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee b/test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee
new file mode 100644
index 0000000000..049b4f5f49
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2
new file mode 100644
index 0000000000..9e30b1010b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5
new file mode 100644
index 0000000000..33e9109648
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d b/test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d
new file mode 100644
index 0000000000..363345d232
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23
new file mode 100644
index 0000000000..7a8b503e22
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef b/test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef
new file mode 100644
index 0000000000..3b40d05b74
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563 b/test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563
new file mode 100644
index 0000000000..68cd7d51a8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4
new file mode 100644
index 0000000000..7ddf9b33cb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297 b/test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297
new file mode 100644
index 0000000000..b951e5a31b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0
new file mode 100644
index 0000000000..79e599327c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044
new file mode 100644
index 0000000000..32ed9289fd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363 b/test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363
new file mode 100644
index 0000000000..2affb44a1b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e b/test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e
new file mode 100644
index 0000000000..728aabd066
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268 b/test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268
new file mode 100644
index 0000000000..03dd65a0d0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868
new file mode 100644
index 0000000000..ebd58f0464
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873
new file mode 100644
index 0000000000..5ca4b56a93
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f
new file mode 100644
index 0000000000..22ff0e3ca3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad
new file mode 100644
index 0000000000..031f444506
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd
new file mode 100644
index 0000000000..8cf36c2c8e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d
new file mode 100644
index 0000000000..2bc525e5ac
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631
new file mode 100644
index 0000000000..a581ee25f5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79
new file mode 100644
index 0000000000..e7456f0758
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612
new file mode 100644
index 0000000000..f7363927c5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b
new file mode 100644
index 0000000000..1a2c262438
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc
new file mode 100644
index 0000000000..4b9572f12a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124
new file mode 100644
index 0000000000..ec9aed1b13
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d b/test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d
new file mode 100644
index 0000000000..0e9a66eb9a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32 b/test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32
new file mode 100644
index 0000000000..ee45b1dba8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f b/test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f
new file mode 100644
index 0000000000..085168f792
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426 b/test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426
new file mode 100644
index 0000000000..c8c5daa2a2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398 b/test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398
new file mode 100644
index 0000000000..9007ade73c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e b/test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e
new file mode 100644
index 0000000000..9bdcea1432
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4
new file mode 100644
index 0000000000..2ba0d07b29
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8
new file mode 100644
index 0000000000..519134a1a4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b b/test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b
new file mode 100644
index 0000000000..f5308f21db
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5
new file mode 100644
index 0000000000..403316b854
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34 b/test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34
new file mode 100644
index 0000000000..4102118a52
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb b/test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb
new file mode 100644
index 0000000000..3f9d57983d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998
new file mode 100644
index 0000000000..a070f08446
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1
new file mode 100644
index 0000000000..cbe1656720
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972
new file mode 100644
index 0000000000..5914914395
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146 b/test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146
new file mode 100644
index 0000000000..cda8bc569d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173
new file mode 100644
index 0000000000..b794909fa9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e b/test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e
new file mode 100644
index 0000000000..42819bf127
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766
new file mode 100644
index 0000000000..c66d5d63e2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e b/test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e
new file mode 100644
index 0000000000..2972ed8abe
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a b/test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a
new file mode 100644
index 0000000000..ee07f6fb1e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd b/test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd
new file mode 100644
index 0000000000..92989f733b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06
new file mode 100644
index 0000000000..121947f299
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f b/test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f
new file mode 100644
index 0000000000..9ee25140a1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62
new file mode 100644
index 0000000000..e6b03b9a8f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060
new file mode 100644
index 0000000000..fb5a647a41
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9
new file mode 100644
index 0000000000..4929da76fc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85
new file mode 100644
index 0000000000..c2d133ee4d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59
new file mode 100644
index 0000000000..39c7904bba
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c
new file mode 100644
index 0000000000..f0e23fccad
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c
new file mode 100644
index 0000000000..4d2752ce46
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b
new file mode 100644
index 0000000000..038b9167b4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060
new file mode 100644
index 0000000000..9108f0f1df
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57
new file mode 100644
index 0000000000..771749c9ba
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db b/test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db
new file mode 100644
index 0000000000..84125995fd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f
new file mode 100644
index 0000000000..818728ac80
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b
new file mode 100644
index 0000000000..356f4a8977
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71
new file mode 100644
index 0000000000..561eb03087
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a
new file mode 100644
index 0000000000..341c0d10bc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1
new file mode 100644
index 0000000000..c336404ea7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793 b/test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793
new file mode 100644
index 0000000000..0e89861786
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a b/test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a
new file mode 100644
index 0000000000..735ac9711e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d b/test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d
new file mode 100644
index 0000000000..53366729f5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f b/test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f
new file mode 100644
index 0000000000..7dcc2a77fa
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00
new file mode 100644
index 0000000000..ec613045c8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f b/test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f
new file mode 100644
index 0000000000..5713b9e316
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8
new file mode 100644
index 0000000000..cdfd293318
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289 b/test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289
new file mode 100644
index 0000000000..390f90e27b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c b/test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c
new file mode 100644
index 0000000000..e7b70fb592
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e b/test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e
new file mode 100644
index 0000000000..6ec8cba327
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41
new file mode 100644
index 0000000000..386816086c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e b/test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e
new file mode 100644
index 0000000000..726f356222
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d b/test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d
new file mode 100644
index 0000000000..58f59a4814
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083 b/test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083
new file mode 100644
index 0000000000..720baf725d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42 b/test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42
new file mode 100644
index 0000000000..3e2cf5e8ba
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e b/test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e
new file mode 100644
index 0000000000..816d9e2d55
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9
new file mode 100644
index 0000000000..e48f730407
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346 b/test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346
new file mode 100644
index 0000000000..3c8c2c1c84
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0
new file mode 100644
index 0000000000..7ab84cf09a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305
new file mode 100644
index 0000000000..266d308de2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda b/test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda
new file mode 100644
index 0000000000..796be8ef09
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4
new file mode 100644
index 0000000000..ee9bcbdb4b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e b/test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e
new file mode 100644
index 0000000000..f3518a2858
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27
new file mode 100644
index 0000000000..1ae200faf7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d b/test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d
new file mode 100644
index 0000000000..e631a79a09
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab
new file mode 100644
index 0000000000..43f3e76e71
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959
new file mode 100644
index 0000000000..25dbe2823f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165
new file mode 100644
index 0000000000..daadca76ee
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c b/test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c
new file mode 100644
index 0000000000..6d4b5bd9cf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9
new file mode 100644
index 0000000000..b4a080c932
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16 b/test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16
new file mode 100644
index 0000000000..44a2b9e30f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732 b/test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732
new file mode 100644
index 0000000000..c904776a35
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97 b/test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97
new file mode 100644
index 0000000000..2b343fe99f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04 b/test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04
new file mode 100644
index 0000000000..b9b569f10c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8
new file mode 100644
index 0000000000..5f918d6623
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00
new file mode 100644
index 0000000000..100fcdc76c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d b/test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d
new file mode 100644
index 0000000000..1885de73f3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1
new file mode 100644
index 0000000000..9536b251a6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64 b/test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64
new file mode 100644
index 0000000000..edfd64ca1b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629 b/test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629
new file mode 100644
index 0000000000..5105d9908f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74 b/test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74
new file mode 100644
index 0000000000..eb48a38ae5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856 b/test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856
new file mode 100644
index 0000000000..6b9c07e63d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c b/test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c
new file mode 100644
index 0000000000..931425b04d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77 b/test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77
new file mode 100644
index 0000000000..068dfb5944
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431 b/test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431
new file mode 100644
index 0000000000..703f60d9ae
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd b/test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd
new file mode 100644
index 0000000000..c390193f63
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05 b/test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05
new file mode 100644
index 0000000000..d64a5a8a6a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05
@@ -0,0 +1 @@
+í \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450 b/test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450
new file mode 100644
index 0000000000..d9d30e287b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d b/test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d
new file mode 100644
index 0000000000..597e1a3b8a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18 b/test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18
new file mode 100644
index 0000000000..987f4c5425
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6
new file mode 100644
index 0000000000..0b1b0ef983
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb b/test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb
new file mode 100644
index 0000000000..54856adc2c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00
new file mode 100644
index 0000000000..84021f12d9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c b/test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c
new file mode 100644
index 0000000000..fa3adc94a8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e b/test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e
new file mode 100644
index 0000000000..3cf9915383
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7
new file mode 100644
index 0000000000..d59ec70afd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83
new file mode 100644
index 0000000000..76d9ac8b1f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6
new file mode 100644
index 0000000000..099cb9f2b7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891
new file mode 100644
index 0000000000..9e84699089
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef b/test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef
new file mode 100644
index 0000000000..1e289ffefa
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0
new file mode 100644
index 0000000000..f561f60f10
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05 b/test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05
new file mode 100644
index 0000000000..63c7a11770
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0
new file mode 100644
index 0000000000..2a0713cccf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0
new file mode 100644
index 0000000000..0d9559d1d2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92
new file mode 100644
index 0000000000..811352a641
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c b/test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c
new file mode 100644
index 0000000000..94f82bb2dc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424 b/test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424
new file mode 100644
index 0000000000..dd76b483ae
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b b/test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b
new file mode 100644
index 0000000000..5c0c9c6e86
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f b/test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f
new file mode 100644
index 0000000000..82627f3c26
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f b/test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f
new file mode 100644
index 0000000000..0c955ea735
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8
new file mode 100644
index 0000000000..0ae5f8fb74
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf b/test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf
new file mode 100644
index 0000000000..a9a45d6450
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d b/test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d
new file mode 100644
index 0000000000..3f34fcd614
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739 b/test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739
new file mode 100644
index 0000000000..78bc4be3ad
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b b/test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b
new file mode 100644
index 0000000000..73bb474172
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f b/test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f
new file mode 100644
index 0000000000..5c328a74ba
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d b/test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d
new file mode 100644
index 0000000000..416f83de39
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8
new file mode 100644
index 0000000000..def1bd1ad8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0
new file mode 100644
index 0000000000..ceee8e5b32
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0
new file mode 100644
index 0000000000..191e720f6b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001
new file mode 100644
index 0000000000..7904c178d2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799
new file mode 100644
index 0000000000..d30cbc457e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387
new file mode 100644
index 0000000000..54a81dcac6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c b/test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c
new file mode 100644
index 0000000000..701a108e74
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690
new file mode 100644
index 0000000000..21cd7aea7a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05
new file mode 100644
index 0000000000..88f6ab193d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58
new file mode 100644
index 0000000000..6219b46ccd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a b/test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a
new file mode 100644
index 0000000000..83d17fd973
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922
new file mode 100644
index 0000000000..f76c4ae5ff
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579 b/test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579
new file mode 100644
index 0000000000..4f21985e6f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024
new file mode 100644
index 0000000000..f6171477cb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a b/test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a
new file mode 100644
index 0000000000..45ec1dc83a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18
new file mode 100644
index 0000000000..f3320f1c2b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e b/test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e
new file mode 100644
index 0000000000..27d167826c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae b/test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae
new file mode 100644
index 0000000000..153b006e96
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3
new file mode 100644
index 0000000000..9b68f66e2c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2
new file mode 100644
index 0000000000..d00b12cc9b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b b/test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b
new file mode 100644
index 0000000000..c96d8a18be
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156 b/test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156
new file mode 100644
index 0000000000..ad3302557c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653 b/test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653
new file mode 100644
index 0000000000..abc292999f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d b/test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d
new file mode 100644
index 0000000000..df8b58ff9f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2
new file mode 100644
index 0000000000..dececd401d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b b/test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b
new file mode 100644
index 0000000000..46172fd600
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f b/test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f
new file mode 100644
index 0000000000..a25e18212f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9
new file mode 100644
index 0000000000..da0c78ebc0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2
new file mode 100644
index 0000000000..7b43eeb20a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb b/test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb
new file mode 100644
index 0000000000..8f0834bb41
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536
new file mode 100644
index 0000000000..b483671bd6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e b/test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e
new file mode 100644
index 0000000000..717269dd63
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba b/test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba
new file mode 100644
index 0000000000..106fdb8ea7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2
new file mode 100644
index 0000000000..a49762b4d3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f b/test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f
new file mode 100644
index 0000000000..b8fb6faec7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf b/test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf
new file mode 100644
index 0000000000..7f32cc0d7c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce b/test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce
new file mode 100644
index 0000000000..420c2c1e1a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a b/test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a
new file mode 100644
index 0000000000..86d3175931
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d b/test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d
new file mode 100644
index 0000000000..e7db033606
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2
new file mode 100644
index 0000000000..aeebc9b69f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa b/test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa
new file mode 100644
index 0000000000..14cf1a1cad
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb b/test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb
new file mode 100644
index 0000000000..095396d22a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5
new file mode 100644
index 0000000000..a30b54aad5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7
new file mode 100644
index 0000000000..ab3ed16d48
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d b/test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d
new file mode 100644
index 0000000000..03662b9d77
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218 b/test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218
new file mode 100644
index 0000000000..64d184540c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3
new file mode 100644
index 0000000000..2db7068462
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae b/test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae
new file mode 100644
index 0000000000..e2da05f168
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969 b/test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969
new file mode 100644
index 0000000000..2abdc9594b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829 b/test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829
new file mode 100644
index 0000000000..266e5c4947
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a b/test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a
new file mode 100644
index 0000000000..901a1fc4e0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302 b/test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302
new file mode 100644
index 0000000000..99a59683f1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6
new file mode 100644
index 0000000000..f1405c95b8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a b/test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a
new file mode 100644
index 0000000000..62e3aa3fe4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b b/test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b
new file mode 100644
index 0000000000..932db9f7b0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab b/test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab
new file mode 100644
index 0000000000..71e1c98fac
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a b/test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a
new file mode 100644
index 0000000000..6926e26c80
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e b/test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e
new file mode 100644
index 0000000000..bdd17724b2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e b/test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e
new file mode 100644
index 0000000000..b79e3dc9e9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439
new file mode 100644
index 0000000000..83f1f339d8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027
new file mode 100644
index 0000000000..6b06ce291a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a b/test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a
new file mode 100644
index 0000000000..651c1ab8b0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27
new file mode 100644
index 0000000000..e85bb86ad4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51
new file mode 100644
index 0000000000..babac6878a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504
new file mode 100644
index 0000000000..42751a19d7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9
new file mode 100644
index 0000000000..250f095f99
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f
new file mode 100644
index 0000000000..e1ab5b3717
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1
new file mode 100644
index 0000000000..450fc23c9b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c
new file mode 100644
index 0000000000..a2c9a09f7c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c b/test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c
new file mode 100644
index 0000000000..83262c0f58
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f b/test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f
new file mode 100644
index 0000000000..e550cfcd1c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544 b/test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544
new file mode 100644
index 0000000000..8f68ee5907
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713 b/test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713
new file mode 100644
index 0000000000..94190e3de8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a b/test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a
new file mode 100644
index 0000000000..30dacaec32
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e b/test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e
new file mode 100644
index 0000000000..85a94fb5dc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3
new file mode 100644
index 0000000000..7de08146e4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1
new file mode 100644
index 0000000000..7bd4f7a6c8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab
new file mode 100644
index 0000000000..405d28eaad
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985
new file mode 100644
index 0000000000..d489fafed3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232 b/test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232
new file mode 100644
index 0000000000..75a242f15e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b b/test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b
new file mode 100644
index 0000000000..aeb5046fa2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e b/test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e
new file mode 100644
index 0000000000..befef24912
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776 b/test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776
new file mode 100644
index 0000000000..33c1ae60b5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394
new file mode 100644
index 0000000000..df9762c7c8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75
new file mode 100644
index 0000000000..08044b49dd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1
new file mode 100644
index 0000000000..616d28aca4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4
new file mode 100644
index 0000000000..fdd8d37e11
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74 b/test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74
new file mode 100644
index 0000000000..87c5683336
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c b/test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c
new file mode 100644
index 0000000000..a9e62d9980
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0
new file mode 100644
index 0000000000..982d5ba322
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276 b/test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276
new file mode 100644
index 0000000000..9c090441c0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9
new file mode 100644
index 0000000000..9a4f343c11
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987
new file mode 100644
index 0000000000..1363ede12a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff
new file mode 100644
index 0000000000..21cfb9f22a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0
new file mode 100644
index 0000000000..1e978a110b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7
new file mode 100644
index 0000000000..6a1887785e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0
new file mode 100644
index 0000000000..6985667939
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44
new file mode 100644
index 0000000000..48e9805059
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda
new file mode 100644
index 0000000000..04111755f2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605
new file mode 100644
index 0000000000..02c16298f9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8
new file mode 100644
index 0000000000..a0b621b9fc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99
new file mode 100644
index 0000000000..66ee1d4699
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36
new file mode 100644
index 0000000000..ad52abee79
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc b/test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc
new file mode 100644
index 0000000000..25e0f9e231
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1
new file mode 100644
index 0000000000..270798c8eb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad
new file mode 100644
index 0000000000..c12934d57e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3
new file mode 100644
index 0000000000..ab0b0caffc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956
new file mode 100644
index 0000000000..1d4e2a6495
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568 b/test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568
new file mode 100644
index 0000000000..48e927946c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473 b/test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473
new file mode 100644
index 0000000000..d8db0ebbba
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7
new file mode 100644
index 0000000000..9b48e68889
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7
new file mode 100644
index 0000000000..89f012a7fa
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54 b/test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54
new file mode 100644
index 0000000000..d176aba12a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b b/test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b
new file mode 100644
index 0000000000..b8f15bd77d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5
new file mode 100644
index 0000000000..3880e46ba3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c b/test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c
new file mode 100644
index 0000000000..1b2a6ef8c2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7
new file mode 100644
index 0000000000..8b997a5d2a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19
new file mode 100644
index 0000000000..d773433cea
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb b/test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb
new file mode 100644
index 0000000000..b9b1311ca4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89 b/test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89
new file mode 100644
index 0000000000..26439ae2af
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d b/test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d
new file mode 100644
index 0000000000..aa53a22119
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e
new file mode 100644
index 0000000000..cb87caa805
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca
new file mode 100644
index 0000000000..acc82fbf39
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb
new file mode 100644
index 0000000000..bccfd303fd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30
new file mode 100644
index 0000000000..bb31085443
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d b/test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d
new file mode 100644
index 0000000000..251a5061d4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab
new file mode 100644
index 0000000000..4259817b69
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f
new file mode 100644
index 0000000000..09c1a72f39
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20
new file mode 100644
index 0000000000..ef72f01fbe
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e
new file mode 100644
index 0000000000..762d870360
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7
new file mode 100644
index 0000000000..f5412a5783
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247
new file mode 100644
index 0000000000..2f7309ce23
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92
new file mode 100644
index 0000000000..e4be2bfdff
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2
new file mode 100644
index 0000000000..0eeb1665b9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab
new file mode 100644
index 0000000000..028086f5c2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148
new file mode 100644
index 0000000000..8841eb0d14
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75
new file mode 100644
index 0000000000..6c7b03215b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0
new file mode 100644
index 0000000000..6e59646252
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e
new file mode 100644
index 0000000000..132222cce9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997
new file mode 100644
index 0000000000..794a50a9ce
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445
new file mode 100644
index 0000000000..122a725a35
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be b/test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be
new file mode 100644
index 0000000000..2730045296
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698
new file mode 100644
index 0000000000..593e45bec1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4
new file mode 100644
index 0000000000..296a734f16
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006
new file mode 100644
index 0000000000..be8da6ca29
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc b/test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc
new file mode 100644
index 0000000000..ab98a6006b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee b/test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee
new file mode 100644
index 0000000000..5fee5335d0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06
new file mode 100644
index 0000000000..016b041c9d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53
new file mode 100644
index 0000000000..f21a84f47e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4
new file mode 100644
index 0000000000..dff4613423
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a b/test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a
new file mode 100644
index 0000000000..ba9a3e1aa7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba b/test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba
new file mode 100644
index 0000000000..219182e029
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77
new file mode 100644
index 0000000000..5e2b705d32
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c b/test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c
new file mode 100644
index 0000000000..f9524b96c3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39
new file mode 100644
index 0000000000..c05b8bf73e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac b/test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac
new file mode 100644
index 0000000000..8c6ef7ad0f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08 b/test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08
new file mode 100644
index 0000000000..08243a9176
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae b/test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae
new file mode 100644
index 0000000000..712d2a999e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093 b/test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093
new file mode 100644
index 0000000000..5cde5e081b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d
new file mode 100644
index 0000000000..f18a8569cd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee
new file mode 100644
index 0000000000..14d56dd6bf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a
new file mode 100644
index 0000000000..5adc2cf862
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85
new file mode 100644
index 0000000000..1bfc3e9746
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3
new file mode 100644
index 0000000000..5b75ff52bc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657 b/test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657
new file mode 100644
index 0000000000..245d0d651f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9
new file mode 100644
index 0000000000..65d0ca9459
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7
new file mode 100644
index 0000000000..31fae78a52
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b b/test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b
new file mode 100644
index 0000000000..8f4a63e7a8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8
new file mode 100644
index 0000000000..c79a555f32
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba b/test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba
new file mode 100644
index 0000000000..1ef06a4198
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315
new file mode 100644
index 0000000000..a502809ae8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a b/test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a
new file mode 100644
index 0000000000..74c90415e6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c b/test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c
new file mode 100644
index 0000000000..118202f932
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3
new file mode 100644
index 0000000000..f24ab1f61a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138
new file mode 100644
index 0000000000..16ffa9d81f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec b/test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec
new file mode 100644
index 0000000000..7df891c221
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5
new file mode 100644
index 0000000000..df23e880c0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50
new file mode 100644
index 0000000000..b2b21d737d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee b/test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee
new file mode 100644
index 0000000000..ba84b6d1d7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5
new file mode 100644
index 0000000000..1c0d75ac15
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e b/test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e
new file mode 100644
index 0000000000..1b86b75d84
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1
new file mode 100644
index 0000000000..a194e609d3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157
new file mode 100644
index 0000000000..7bdf2e48cc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304
new file mode 100644
index 0000000000..114700c266
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361
new file mode 100644
index 0000000000..80aa9b8a3d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b b/test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b
new file mode 100644
index 0000000000..3f5561a9e6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea b/test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea
new file mode 100644
index 0000000000..04ae4ab8e7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3
new file mode 100644
index 0000000000..52d70c37d2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820
new file mode 100644
index 0000000000..afbc92d506
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d b/test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d
new file mode 100644
index 0000000000..03239ec9f9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c b/test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c
new file mode 100644
index 0000000000..f9b3cda8ce
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f b/test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f
new file mode 100644
index 0000000000..d8830f0fef
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0
new file mode 100644
index 0000000000..44c904c8f7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e b/test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e
new file mode 100644
index 0000000000..d9b0e8c0fb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0
new file mode 100644
index 0000000000..1fb234567a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517
new file mode 100644
index 0000000000..605bf004b9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73
new file mode 100644
index 0000000000..3f2fcf27d0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin
new file mode 100644
index 0000000000..5cb3083d83
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505
new file mode 100644
index 0000000000..b22a7683a5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176
new file mode 100644
index 0000000000..af7b33e61d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a b/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a
new file mode 100644
index 0000000000..354e7f734d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c
new file mode 100644
index 0000000000..39affe1f51
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651
new file mode 100644
index 0000000000..57a17c105d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2
new file mode 100644
index 0000000000..fdc020d737
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974
new file mode 100644
index 0000000000..d7eb001092
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c
new file mode 100644
index 0000000000..f1f0f72082
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f b/test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f
new file mode 100644
index 0000000000..95ba743387
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4
new file mode 100644
index 0000000000..295f781d59
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57
new file mode 100644
index 0000000000..7f959dc70a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec
new file mode 100644
index 0000000000..19eb541dc2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2
new file mode 100644
index 0000000000..9f5433908f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9
new file mode 100644
index 0000000000..8ed1db61f4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2
new file mode 100644
index 0000000000..c4bc8989ea
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2
new file mode 100644
index 0000000000..4f3ce3af0c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53
new file mode 100644
index 0000000000..e45002295c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362 b/test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362
new file mode 100644
index 0000000000..985e30adcd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6
new file mode 100644
index 0000000000..24f445985a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4
new file mode 100644
index 0000000000..b3c115e2bb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2
new file mode 100644
index 0000000000..63cc356a73
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1
new file mode 100644
index 0000000000..5cc30a39a9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40
new file mode 100644
index 0000000000..5a6bb8e027
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73
new file mode 100644
index 0000000000..eef122a998
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0
new file mode 100644
index 0000000000..4bb3e9fd5c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed b/test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed
new file mode 100644
index 0000000000..c0223ed308
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9
new file mode 100644
index 0000000000..68e78cd81e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065
new file mode 100644
index 0000000000..240cc20c05
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103
new file mode 100644
index 0000000000..2554e37888
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191
new file mode 100644
index 0000000000..bbb533ad41
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04
new file mode 100644
index 0000000000..c7f3acdb61
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989
new file mode 100644
index 0000000000..52b683c1ca
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a b/test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a
new file mode 100644
index 0000000000..6b3f2b97bb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac b/test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac
new file mode 100644
index 0000000000..8837ba57bb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e b/test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e
new file mode 100644
index 0000000000..9714a3b5e7
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b b/test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b
new file mode 100644
index 0000000000..8428cca110
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7
new file mode 100644
index 0000000000..4073984e0e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098
new file mode 100644
index 0000000000..91351626f5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599
new file mode 100644
index 0000000000..82635d7fb6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212
new file mode 100644
index 0000000000..bf077fd225
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29
new file mode 100644
index 0000000000..3b389cbd69
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a
new file mode 100644
index 0000000000..564a12e285
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a
new file mode 100644
index 0000000000..dd9229e398
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce
new file mode 100644
index 0000000000..b9aaab39a6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a b/test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a
new file mode 100644
index 0000000000..e9fa513652
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a b/test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a
new file mode 100644
index 0000000000..ee363c75f3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9
new file mode 100644
index 0000000000..663f2164df
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298
new file mode 100644
index 0000000000..3992529d14
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221
new file mode 100644
index 0000000000..be7a1706c2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048
new file mode 100644
index 0000000000..bed26bd411
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0
new file mode 100644
index 0000000000..7b9d3a86e6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c b/test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c
new file mode 100644
index 0000000000..3c0ba41cc5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701
new file mode 100644
index 0000000000..5398b2c9e5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c
new file mode 100644
index 0000000000..8eb262bf1f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f
new file mode 100644
index 0000000000..3dbc7a033e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a
new file mode 100644
index 0000000000..66c443ea9c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b
new file mode 100644
index 0000000000..a0e609bdb1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b
new file mode 100644
index 0000000000..4f6122df4d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3
new file mode 100644
index 0000000000..61af110430
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27
new file mode 100644
index 0000000000..73d90f6a4f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00
new file mode 100644
index 0000000000..59860c684a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf
new file mode 100644
index 0000000000..44d268ffc4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08
new file mode 100644
index 0000000000..b275994cc1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219
new file mode 100644
index 0000000000..fb139f93f2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32
new file mode 100644
index 0000000000..b0777bef92
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b
new file mode 100644
index 0000000000..770cee38cb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb
new file mode 100644
index 0000000000..9618323b35
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
new file mode 100644
index 0000000000..63ab35265c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37
new file mode 100644
index 0000000000..b5adace96a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668
new file mode 100644
index 0000000000..b50fdee3ae
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5
new file mode 100644
index 0000000000..0059b4b7f9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda
new file mode 100644
index 0000000000..e3ca42a2a1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152
new file mode 100644
index 0000000000..92b9810877
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc
new file mode 100644
index 0000000000..4114505579
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a
new file mode 100644
index 0000000000..45529a8932
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7
new file mode 100644
index 0000000000..d89f32b549
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0
new file mode 100644
index 0000000000..48a51f962d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc
new file mode 100644
index 0000000000..c8c2ffde99
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3
new file mode 100644
index 0000000000..f6d8e2e03d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b
new file mode 100644
index 0000000000..2869844fab
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03
new file mode 100644
index 0000000000..d56a63a161
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738
new file mode 100644
index 0000000000..6a10e383bc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243
new file mode 100644
index 0000000000..ad8031d578
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b
new file mode 100644
index 0000000000..ce70a128a1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b
new file mode 100644
index 0000000000..d644b941f6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b
new file mode 100644
index 0000000000..59f77093f8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c
new file mode 100644
index 0000000000..62b7e814f2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
new file mode 100644
index 0000000000..8475e63da1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168
new file mode 100644
index 0000000000..464e436d2d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9
new file mode 100644
index 0000000000..d957c6053d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6
new file mode 100644
index 0000000000..6d6bd6f555
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798
new file mode 100644
index 0000000000..c3299648ec
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4
new file mode 100644
index 0000000000..f7892d30eb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e b/test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e
new file mode 100644
index 0000000000..0608163c26
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e b/test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e
new file mode 100644
index 0000000000..fe40b79c6d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38
new file mode 100644
index 0000000000..721137720f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1
new file mode 100644
index 0000000000..89ecdbc840
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03
new file mode 100644
index 0000000000..478c05f177
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2
new file mode 100644
index 0000000000..25ab2bae62
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13
new file mode 100644
index 0000000000..73c8d71e12
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6
new file mode 100644
index 0000000000..3052b6562e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd b/test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd
new file mode 100644
index 0000000000..50760fa59e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978
new file mode 100644
index 0000000000..9086fb3d5f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449
new file mode 100644
index 0000000000..51c7569fe3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef b/test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef
new file mode 100644
index 0000000000..e1236715a1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d b/test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d
new file mode 100644
index 0000000000..454c205f7a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32
new file mode 100644
index 0000000000..f077bfcc55
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4
new file mode 100644
index 0000000000..bed1f46fa6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444
new file mode 100644
index 0000000000..6817649041
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1
new file mode 100644
index 0000000000..81295b8c9f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc b/test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc
new file mode 100644
index 0000000000..64d1577640
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef b/test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef
new file mode 100644
index 0000000000..11ae89a839
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3
new file mode 100644
index 0000000000..46940bb22a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b b/test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b
new file mode 100644
index 0000000000..111b8a0095
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35
new file mode 100644
index 0000000000..6386318aac
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063
new file mode 100644
index 0000000000..d873e144b0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5
new file mode 100644
index 0000000000..1a323ad5ca
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a b/test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a
new file mode 100644
index 0000000000..8ec7fecc6e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51
new file mode 100644
index 0000000000..1cb1a80bc2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9
new file mode 100644
index 0000000000..4f07ff14a1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641
new file mode 100644
index 0000000000..7a2002453b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d b/test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d
new file mode 100644
index 0000000000..69a3dfb35a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818
new file mode 100644
index 0000000000..6cc90395bd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb b/test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb
new file mode 100644
index 0000000000..cc23afee50
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb b/test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb
new file mode 100644
index 0000000000..b293fcd023
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120 b/test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120
new file mode 100644
index 0000000000..5f84542818
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3
new file mode 100644
index 0000000000..83e059c17b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346 b/test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346
new file mode 100644
index 0000000000..5255ca38bd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829 b/test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829
new file mode 100644
index 0000000000..fc656a6473
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead b/test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead
new file mode 100644
index 0000000000..229971071f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b b/test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b
new file mode 100644
index 0000000000..6eaeab554d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e b/test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e
new file mode 100644
index 0000000000..5ad30f2d18
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad
new file mode 100644
index 0000000000..d8445c7bb8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8
new file mode 100644
index 0000000000..53daab295e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43
new file mode 100644
index 0000000000..e8dec0a4dc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95
new file mode 100644
index 0000000000..fb2d960605
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594
new file mode 100644
index 0000000000..71cdbf08d9
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e b/test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e
new file mode 100644
index 0000000000..bdfd942a04
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36
new file mode 100644
index 0000000000..9e6351cdba
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3
new file mode 100644
index 0000000000..6b3cf73f16
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0
new file mode 100644
index 0000000000..c059a1b6f4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe
new file mode 100644
index 0000000000..60e70cbd38
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe
@@ -0,0 +1 @@
+S. \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f
new file mode 100644
index 0000000000..3431cfa673
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d b/test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d
new file mode 100644
index 0000000000..92bd6e3a5f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94
new file mode 100644
index 0000000000..18305cdc13
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842
new file mode 100644
index 0000000000..e1c3566d64
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380
new file mode 100644
index 0000000000..5fed465f76
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0
new file mode 100644
index 0000000000..27e46446d8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1
new file mode 100644
index 0000000000..d17f0ba306
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f b/test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f
new file mode 100644
index 0000000000..853d3c1921
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686
new file mode 100644
index 0000000000..511d681e05
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f b/test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f
new file mode 100644
index 0000000000..9a1d60d188
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8
new file mode 100644
index 0000000000..032e07634e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0
new file mode 100644
index 0000000000..c32657f1c5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c b/test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c
new file mode 100644
index 0000000000..49790fb530
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085
new file mode 100644
index 0000000000..9e6dbef081
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424
new file mode 100644
index 0000000000..cbd97affbe
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909
new file mode 100644
index 0000000000..e2d0ca33cc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749
new file mode 100644
index 0000000000..cd03dcdfc4
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5
new file mode 100644
index 0000000000..7c3ca9098b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4
new file mode 100644
index 0000000000..28c93e6537
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4
@@ -0,0 +1 @@
+S. \ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3
new file mode 100644
index 0000000000..7b8a04edd5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f
new file mode 100644
index 0000000000..b4298ca8c6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7
new file mode 100644
index 0000000000..a1c7e56640
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864
new file mode 100644
index 0000000000..1592c1644c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c b/test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c
new file mode 100644
index 0000000000..accca98d9d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8
new file mode 100644
index 0000000000..f4f01ddf7f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220
new file mode 100644
index 0000000000..dc9c48305a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006
new file mode 100644
index 0000000000..fd2e76f49a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3
new file mode 100644
index 0000000000..7cb7b45392
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527 b/test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527
new file mode 100644
index 0000000000..cd303bac8e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad
new file mode 100644
index 0000000000..3a571ce4bb
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8
new file mode 100644
index 0000000000..e34bbe8eb6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a
new file mode 100644
index 0000000000..c6c53a949c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a b/test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a
new file mode 100644
index 0000000000..6dfb6d0bef
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42
new file mode 100644
index 0000000000..e791177dde
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088
new file mode 100644
index 0000000000..24aea11309
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc
new file mode 100644
index 0000000000..ab8e5d998c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3
new file mode 100644
index 0000000000..aef73bbb9c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57
new file mode 100644
index 0000000000..3a65338b63
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8
new file mode 100644
index 0000000000..98fb8a108d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28
new file mode 100644
index 0000000000..eb0328909f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8
new file mode 100644
index 0000000000..e464d03f46
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae b/test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae
new file mode 100644
index 0000000000..72af82218b
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b b/test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b
new file mode 100644
index 0000000000..bcc82a00d5
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e b/test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e
new file mode 100644
index 0000000000..75257d8c4f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f b/test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f
new file mode 100644
index 0000000000..429971ddcc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a
new file mode 100644
index 0000000000..f1b3ac747a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d b/test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d
new file mode 100644
index 0000000000..de01141e52
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a
new file mode 100644
index 0000000000..2f0bb88442
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208
new file mode 100644
index 0000000000..a44ca0b514
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c b/test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c
new file mode 100644
index 0000000000..37ef2a660e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc b/test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc
new file mode 100644
index 0000000000..3f5fd07552
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730
new file mode 100644
index 0000000000..32dab3be54
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037
new file mode 100644
index 0000000000..53e0161968
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be
new file mode 100644
index 0000000000..85b765083a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a
new file mode 100644
index 0000000000..e0ffaae444
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165
new file mode 100644
index 0000000000..bebe30df79
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716
new file mode 100644
index 0000000000..8359f3ad0e
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd b/test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd
new file mode 100644
index 0000000000..af6a83a11c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4
new file mode 100644
index 0000000000..01e2f4eb84
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7
new file mode 100644
index 0000000000..abf27f22b6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a
new file mode 100644
index 0000000000..e61833c194
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4
new file mode 100644
index 0000000000..b99bc9f46c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b b/test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b
new file mode 100644
index 0000000000..bf94981678
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36
new file mode 100644
index 0000000000..dd7b2dde17
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6
new file mode 100644
index 0000000000..6c2c0e32a8
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318
new file mode 100644
index 0000000000..6a5edea17d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb b/test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb
new file mode 100644
index 0000000000..02db76320c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0
new file mode 100644
index 0000000000..b1de1e2d04
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2
new file mode 100644
index 0000000000..ff673722c1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2
new file mode 100644
index 0000000000..c651ba4ff3
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4
new file mode 100644
index 0000000000..3b7c64dd95
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200
new file mode 100644
index 0000000000..54fb7270fc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579
new file mode 100644
index 0000000000..ff74700ab2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b b/test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b
new file mode 100644
index 0000000000..38bf1ad34c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a b/test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a
new file mode 100644
index 0000000000..db3b2a2ae0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78
new file mode 100644
index 0000000000..064a2007e6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc b/test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc
new file mode 100644
index 0000000000..2bd5e02037
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79
new file mode 100644
index 0000000000..af3f3f8baa
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206
new file mode 100644
index 0000000000..8a2aa7d2ce
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
new file mode 100644
index 0000000000..63ab35265c
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243
new file mode 100644
index 0000000000..ad8031d578
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3
new file mode 100644
index 0000000000..74ce06a70f
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3
Binary files differ
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
new file mode 100644
index 0000000000..8475e63da1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1 b/test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1
new file mode 100644
index 0000000000..36f5a84ee6
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6 b/test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6
new file mode 100644
index 0000000000..a4cb1f9d26
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5
new file mode 100644
index 0000000000..38e4714fda
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36 b/test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36
new file mode 100644
index 0000000000..a64e565072
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d b/test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d
new file mode 100644
index 0000000000..5b0a1b6974
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a b/test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a
new file mode 100644
index 0000000000..5580d48988
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431 b/test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431
new file mode 100644
index 0000000000..374b283186
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c b/test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c
new file mode 100644
index 0000000000..662e18e4ea
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65 b/test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65
new file mode 100644
index 0000000000..29243f9996
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829 b/test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829
new file mode 100644
index 0000000000..0b48765847
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b b/test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b
new file mode 100644
index 0000000000..df34cf3ee8
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93 b/test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93
new file mode 100644
index 0000000000..821e28a23f
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7 b/test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7
new file mode 100644
index 0000000000..8ee3910613
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827 b/test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827
new file mode 100644
index 0000000000..9a4560c158
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0 b/test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0
new file mode 100644
index 0000000000..7dc85b85bf
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c b/test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c
new file mode 100644
index 0000000000..993dfb2f2d
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600 b/test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600
new file mode 100644
index 0000000000..0f30385492
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979 b/test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979
new file mode 100644
index 0000000000..848ea7a55b
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777 b/test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777
new file mode 100644
index 0000000000..eb373a1218
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7 b/test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7
new file mode 100644
index 0000000000..010625afbd
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc b/test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc
new file mode 100644
index 0000000000..765edbcd1e
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b b/test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b
new file mode 100644
index 0000000000..19db996010
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7 b/test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7
new file mode 100644
index 0000000000..13f07aab5e
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453 b/test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453
new file mode 100644
index 0000000000..8e3d1520f1
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23 b/test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23
new file mode 100644
index 0000000000..266d9cb36d
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9 b/test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9
new file mode 100644
index 0000000000..2a20634f17
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2 b/test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2
new file mode 100644
index 0000000000..4de55b2101
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6 b/test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6
new file mode 100644
index 0000000000..7347fab861
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f b/test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f
new file mode 100644
index 0000000000..bbb34635a7
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f b/test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f
new file mode 100644
index 0000000000..ba195ae414
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77 b/test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77
new file mode 100644
index 0000000000..a8da834f94
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825 b/test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825
new file mode 100644
index 0000000000..deb05e7d6c
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265 b/test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265
new file mode 100644
index 0000000000..1ec61bf8c6
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983 b/test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983
new file mode 100644
index 0000000000..80de4dcd52
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708 b/test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708
new file mode 100644
index 0000000000..0cbead73fb
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043 b/test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043
new file mode 100644
index 0000000000..f24e8e88ce
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f b/test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f
new file mode 100644
index 0000000000..fff77e33c4
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49 b/test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49
new file mode 100644
index 0000000000..af1c15f706
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55 b/test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55
new file mode 100644
index 0000000000..7dfa020be4
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b b/test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b
new file mode 100644
index 0000000000..afbd53bdbb
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d b/test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d
new file mode 100644
index 0000000000..76cf810adf
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a b/test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a
new file mode 100644
index 0000000000..df6884ffc9
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229 b/test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229
new file mode 100644
index 0000000000..8354defbf3
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028 b/test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028
new file mode 100644
index 0000000000..bc6a444852
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84 b/test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84
new file mode 100644
index 0000000000..639fc8494e
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556 b/test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556
new file mode 100644
index 0000000000..e047fb12f7
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b b/test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b
new file mode 100644
index 0000000000..d1dc706fdf
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5
new file mode 100644
index 0000000000..12f01c19a7
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5
new file mode 100644
index 0000000000..f8315c28d5
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad b/test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad
new file mode 100644
index 0000000000..a615cb6e1a
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c b/test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c
new file mode 100644
index 0000000000..88d1c1be80
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c b/test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c
new file mode 100644
index 0000000000..1e257a2865
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e b/test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e
new file mode 100644
index 0000000000..a67ab588da
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30
new file mode 100644
index 0000000000..acce397e1c
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334
new file mode 100644
index 0000000000..5d1b4ecaf3
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97
new file mode 100644
index 0000000000..8abefd8d53
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5
new file mode 100644
index 0000000000..427937b02f
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb b/test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb
new file mode 100644
index 0000000000..828e42d5f8
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a b/test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a
new file mode 100644
index 0000000000..82c6055949
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f b/test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f
new file mode 100644
index 0000000000..3cf35b7713
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f
Binary files differ
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9 b/test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9
new file mode 100644
index 0000000000..997b3d360b
--- /dev/null
+++ b/test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450 b/test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450
new file mode 100644
index 0000000000..d4072c6921
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306 b/test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306
new file mode 100644
index 0000000000..503af15fe8
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576 b/test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576
new file mode 100644
index 0000000000..30229f98fd
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215 b/test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215
new file mode 100644
index 0000000000..5cbafc457c
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c b/test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c
new file mode 100644
index 0000000000..828275ee3c
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d b/test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d
new file mode 100644
index 0000000000..ce7a5ed788
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e b/test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e
new file mode 100644
index 0000000000..6ed060d1e3
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3 b/test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3
new file mode 100644
index 0000000000..682ed1f218
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70 b/test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70
new file mode 100644
index 0000000000..1d73a923c3
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a b/test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a
new file mode 100644
index 0000000000..1a7a213cd7
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416 b/test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416
new file mode 100644
index 0000000000..7f975251dd
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b b/test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b
new file mode 100644
index 0000000000..fa1d5f081e
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee b/test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee
new file mode 100644
index 0000000000..3038fde547
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee b/test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee
new file mode 100644
index 0000000000..366077e528
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871 b/test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871
new file mode 100644
index 0000000000..d177938892
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723 b/test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723
new file mode 100644
index 0000000000..2c2e8f32fc
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54 b/test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54
new file mode 100644
index 0000000000..9179e76ee4
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9 b/test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9
new file mode 100644
index 0000000000..9d39854fc9
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e b/test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e
new file mode 100644
index 0000000000..338f61bdce
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a b/test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a
new file mode 100644
index 0000000000..315e850428
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a b/test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a
new file mode 100644
index 0000000000..dab9c75822
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6 b/test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6
new file mode 100644
index 0000000000..3c47fb3add
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab b/test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab
new file mode 100644
index 0000000000..070a581b37
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809 b/test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809
new file mode 100644
index 0000000000..b6dfd77e67
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397 b/test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397
new file mode 100644
index 0000000000..ba3b0cd952
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83 b/test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83
new file mode 100644
index 0000000000..2a1e236936
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a b/test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a
new file mode 100644
index 0000000000..df9241dd0c
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4 b/test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4
new file mode 100644
index 0000000000..52f26cfd4e
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504 b/test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504
new file mode 100644
index 0000000000..0ba5935164
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a
new file mode 100644
index 0000000000..561f98c9b2
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0
new file mode 100644
index 0000000000..15d6f17cd3
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37
new file mode 100644
index 0000000000..34906e8b54
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c
new file mode 100644
index 0000000000..c9f22b2be5
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9
new file mode 100644
index 0000000000..9fe5d9e26a
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424
new file mode 100644
index 0000000000..8ab8cbefa9
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8
new file mode 100644
index 0000000000..ca94f4b843
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b
new file mode 100644
index 0000000000..6aac3e4373
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83
new file mode 100644
index 0000000000..a5ed8e9036
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3
new file mode 100644
index 0000000000..96c97df051
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a
new file mode 100644
index 0000000000..d745d210b2
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77
new file mode 100644
index 0000000000..9e7b002238
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed
new file mode 100644
index 0000000000..bb4bbbbb1e
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624
new file mode 100644
index 0000000000..c525f76ce3
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf
new file mode 100644
index 0000000000..380cd877ca
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc
new file mode 100644
index 0000000000..cbd18291f1
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471
new file mode 100644
index 0000000000..3f5b83987c
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148
new file mode 100644
index 0000000000..cd2506a21e
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54
new file mode 100644
index 0000000000..2d2a93da26
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6
new file mode 100644
index 0000000000..9d35a1b554
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185
new file mode 100644
index 0000000000..16489d6cbc
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b
new file mode 100644
index 0000000000..65737bfeac
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb
new file mode 100644
index 0000000000..f9db611959
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5
new file mode 100644
index 0000000000..6c4ed6d13e
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b
new file mode 100644
index 0000000000..f8ae9f02e4
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53
new file mode 100644
index 0000000000..414dc698e9
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53
Binary files differ
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833
new file mode 100644
index 0000000000..bf38fac345
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833
Binary files differ
diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index cffe5995bc..3e10ad580f 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -39,9 +39,9 @@ import hashlib
FixtureOptions = collections.namedtuple(
'FixtureOptions',
- 'fullstack includes_proxy dns_resolver secure platforms ci_mac tracing')
+ 'fullstack includes_proxy dns_resolver secure platforms ci_mac tracing exclude_configs')
default_unsecure_fixture_options = FixtureOptions(
- True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True, False)
+ True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True, False, [])
socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(fullstack=False, dns_resolver=False)
default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True)
uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
@@ -60,7 +60,7 @@ END2END_FIXTURES = {
'h2_proxy': default_unsecure_fixture_options._replace(includes_proxy=True,
ci_mac=False),
'h2_sockpair_1byte': socketpair_unsecure_fixture_options._replace(
- ci_mac=False),
+ ci_mac=False, exclude_configs=['msan']),
'h2_sockpair': socketpair_unsecure_fixture_options._replace(ci_mac=False),
'h2_sockpair+trace': socketpair_unsecure_fixture_options._replace(
ci_mac=False, tracing=True),
@@ -246,7 +246,7 @@ def main():
{
'name': '%s_nosec_test' % f,
'args': [t],
- 'exclude_configs': [],
+ 'exclude_configs': END2END_FIXTURES[f].exclude_configs,
'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac else without(
diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.c
index 9f9ee85648..99049aa6bd 100644
--- a/test/core/end2end/tests/filter_causes_close.c
+++ b/test/core/end2end/tests/filter_causes_close.c
@@ -232,8 +232,8 @@ static void start_transport_stream_op(grpc_exec_ctx *exec_ctx,
static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
grpc_call_element_args *args) {}
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ void *and_free_memory) {}
static void init_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem,
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index 0e5d6b4fe0..ae1f68a2b4 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -97,7 +97,7 @@ static void end_test(grpc_end2end_test_fixture *f) {
grpc_completion_queue_destroy(f->cq);
}
-/* Request with a large amount of metadata.*/
+// Request with a large amount of metadata.
static void test_request_with_large_metadata(grpc_end2end_test_config config) {
grpc_call *c;
grpc_call *s;
@@ -106,8 +106,13 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
gpr_timespec deadline = five_seconds_time();
grpc_metadata meta;
+ const size_t large_size = 64 * 1024;
+ grpc_arg arg = {GRPC_ARG_INTEGER,
+ GRPC_ARG_MAX_METADATA_SIZE,
+ {.integer = (int)large_size + 1024}};
+ grpc_channel_args args = {1, &arg};
grpc_end2end_test_fixture f =
- begin_test(config, "test_request_with_large_metadata", NULL, NULL);
+ begin_test(config, "test_request_with_large_metadata", &args, &args);
cq_verifier *cqv = cq_verifier_create(f.cq);
grpc_op ops[6];
grpc_op *op;
@@ -121,7 +126,6 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
char *details = NULL;
size_t details_capacity = 0;
int was_cancelled = 2;
- const size_t large_size = 64 * 1024;
c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq,
"/foo", "foo.test.google.fr", deadline, NULL);
@@ -138,6 +142,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
grpc_metadata_array_init(&request_metadata_recv);
grpc_call_details_init(&call_details);
+ // Client: send request.
op = ops;
op->op = GRPC_OP_SEND_INITIAL_METADATA;
op->data.send_initial_metadata.count = 1;
@@ -174,9 +179,11 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
grpc_server_request_call(f.server, &s, &call_details,
&request_metadata_recv, f.cq, f.cq, tag(101));
GPR_ASSERT(GRPC_CALL_OK == error);
+
cq_expect_completion(cqv, tag(101), 1);
cq_verify(cqv);
+ // Server: send initial metadata and receive request.
op = ops;
op->op = GRPC_OP_SEND_INITIAL_METADATA;
op->data.send_initial_metadata.count = 0;
@@ -194,6 +201,8 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
cq_expect_completion(cqv, tag(102), 1);
cq_verify(cqv);
+ // Server: receive close and send status. This should trigger
+ // completion of request on client.
op = ops;
op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
op->data.recv_close_on_server.cancelled = &was_cancelled;
diff --git a/test/core/end2end/tests/max_message_length.c b/test/core/end2end/tests/max_message_length.c
index b5dbc1382a..4f572789d9 100644
--- a/test/core/end2end/tests/max_message_length.c
+++ b/test/core/end2end/tests/max_message_length.c
@@ -53,7 +53,10 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
grpc_channel_args *server_args) {
grpc_end2end_test_fixture f;
gpr_log(GPR_INFO, "%s/%s", test_name, config.name);
- f = config.create_fixture(client_args, server_args);
+ // We intentionally do not pass the client and server args to
+ // create_fixture(), since we don't want the limit enforced on the
+ // proxy, only on the backend server.
+ f = config.create_fixture(NULL, NULL);
config.init_server(&f, server_args);
config.init_client(&f, client_args);
return f;
diff --git a/test/core/iomgr/resolve_address_test.c b/test/core/iomgr/resolve_address_test.c
index a66edc9df2..c3ede1801d 100644
--- a/test/core/iomgr/resolve_address_test.c
+++ b/test/core/iomgr/resolve_address_test.c
@@ -59,28 +59,36 @@ static void must_fail(grpc_exec_ctx *exec_ctx, void *evp,
static void test_localhost(void) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address("localhost:1", NULL, must_succeed, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, "localhost:1", NULL, must_succeed, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
static void test_default_port(void) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address("localhost", "1", must_succeed, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, "localhost", "1", must_succeed, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
static void test_missing_default_port(void) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address("localhost", NULL, must_fail, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, "localhost", NULL, must_fail, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
static void test_ipv6_with_port(void) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address("[2001:db8::1]:1", NULL, must_succeed, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, "[2001:db8::1]:1", NULL, must_succeed, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
@@ -92,7 +100,9 @@ static void test_ipv6_without_port(void) {
for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address(kCases[i], "80", must_succeed, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, kCases[i], "80", must_succeed, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
}
@@ -105,7 +115,9 @@ static void test_invalid_ip_addresses(void) {
for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address(kCases[i], NULL, must_fail, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, kCases[i], NULL, must_fail, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
}
@@ -118,7 +130,9 @@ static void test_unparseable_hostports(void) {
for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
gpr_event ev;
gpr_event_init(&ev);
- grpc_resolve_address(kCases[i], "1", must_fail, &ev);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_resolve_address(&exec_ctx, kCases[i], "1", must_fail, &ev);
+ grpc_exec_ctx_finish(&exec_ctx);
GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
}
}
diff --git a/test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51 b/test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51
new file mode 100644
index 0000000000..a88986e2d4
--- /dev/null
+++ b/test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51
Binary files differ
diff --git a/test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3 b/test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3
new file mode 100644
index 0000000000..a9ae5ff3e9
--- /dev/null
+++ b/test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3
Binary files differ
diff --git a/test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa b/test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa
new file mode 100644
index 0000000000..2bd503a192
--- /dev/null
+++ b/test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa
Binary files differ
diff --git a/test/core/surface/channel_create_test.c b/test/core/surface/channel_create_test.c
index 5ff66bd7a5..450cc37233 100644
--- a/test/core/surface/channel_create_test.c
+++ b/test/core/surface/channel_create_test.c
@@ -43,7 +43,8 @@ void test_unknown_scheme_target(void) {
grpc_resolver_registry_init("");
chan = grpc_insecure_channel_create("blah://blah", NULL, NULL);
- GPR_ASSERT(chan == NULL);
+ GPR_ASSERT(chan != NULL);
+ grpc_channel_destroy(chan);
}
int main(int argc, char **argv) {
diff --git a/test/core/surface/concurrent_connectivity_test.c b/test/core/surface/concurrent_connectivity_test.c
index a2fdf73596..28ddf58cc8 100644
--- a/test/core/surface/concurrent_connectivity_test.c
+++ b/test/core/surface/concurrent_connectivity_test.c
@@ -142,6 +142,12 @@ void bad_server_thread(void *vargs) {
gpr_free(args->addr);
}
+static void done_pollset_shutdown(grpc_exec_ctx *exec_ctx, void *pollset,
+ bool success) {
+ grpc_pollset_destroy(pollset);
+ gpr_free(pollset);
+}
+
int main(int argc, char **argv) {
struct server_thread_args args;
memset(&args, 0, sizeof(args));
@@ -207,8 +213,11 @@ int main(int argc, char **argv) {
gpr_atm_rel_store(&args.stop, 1);
gpr_thd_join(server);
- grpc_pollset_destroy(args.pollset);
- gpr_free(args.pollset);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_pollset_shutdown(
+ &exec_ctx, args.pollset,
+ grpc_closure_create(done_pollset_shutdown, args.pollset));
+ grpc_exec_ctx_finish(&exec_ctx);
grpc_shutdown();
return 0;
diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c
index 0eede6c23b..3eeb55d033 100644
--- a/test/core/surface/public_headers_must_be_c89.c
+++ b/test/core/surface/public_headers_must_be_c89.c
@@ -41,6 +41,7 @@
#include <grpc/impl/codegen/alloc.h>
#include <grpc/impl/codegen/atm.h>
#include <grpc/impl/codegen/byte_buffer.h>
+#include <grpc/impl/codegen/byte_buffer_reader.h>
#include <grpc/impl/codegen/compression_types.h>
#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/impl/codegen/grpc_types.h>
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
new file mode 100644
index 0000000000..ae955b1f68
--- /dev/null
+++ b/test/core/util/passthru_endpoint.c
@@ -0,0 +1,162 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "test/core/util/passthru_endpoint.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
+
+typedef struct passthru_endpoint passthru_endpoint;
+
+typedef struct {
+ grpc_endpoint base;
+ passthru_endpoint *parent;
+ gpr_slice_buffer read_buffer;
+ gpr_slice_buffer *on_read_out;
+ grpc_closure *on_read;
+} half;
+
+struct passthru_endpoint {
+ gpr_mu mu;
+ int halves;
+ bool shutdown;
+ half client;
+ half server;
+};
+
+static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ gpr_slice_buffer *slices, grpc_closure *cb) {
+ half *m = (half *)ep;
+ gpr_mu_lock(&m->parent->mu);
+ if (m->parent->shutdown) {
+ grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
+ } else if (m->read_buffer.count > 0) {
+ gpr_slice_buffer_swap(&m->read_buffer, slices);
+ grpc_exec_ctx_enqueue(exec_ctx, cb, true, NULL);
+ } else {
+ m->on_read = cb;
+ m->on_read_out = slices;
+ }
+ gpr_mu_unlock(&m->parent->mu);
+}
+
+static half *other_half(half *h) {
+ if (h == &h->parent->client) return &h->parent->server;
+ return &h->parent->client;
+}
+
+static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ gpr_slice_buffer *slices, grpc_closure *cb) {
+ half *m = other_half((half *)ep);
+ gpr_mu_lock(&m->parent->mu);
+ bool ok = true;
+ if (m->parent->shutdown) {
+ ok = false;
+ } else if (m->on_read != NULL) {
+ for (size_t i = 0; i < slices->count; i++) {
+ gpr_slice_buffer_add(m->on_read_out, gpr_slice_ref(slices->slices[i]));
+ }
+ grpc_exec_ctx_enqueue(exec_ctx, m->on_read, true, NULL);
+ m->on_read = NULL;
+ } else {
+ for (size_t i = 0; i < slices->count; i++) {
+ gpr_slice_buffer_add(&m->read_buffer, gpr_slice_ref(slices->slices[i]));
+ }
+ }
+ gpr_mu_unlock(&m->parent->mu);
+ grpc_exec_ctx_enqueue(exec_ctx, cb, ok, NULL);
+}
+
+static void me_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_pollset *pollset) {}
+
+static void me_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+ grpc_pollset_set *pollset) {}
+
+static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
+ half *m = (half *)ep;
+ gpr_mu_lock(&m->parent->mu);
+ m->parent->shutdown = true;
+ if (m->on_read) {
+ grpc_exec_ctx_enqueue(exec_ctx, m->on_read, false, NULL);
+ m->on_read = NULL;
+ }
+ m = other_half(m);
+ if (m->on_read) {
+ grpc_exec_ctx_enqueue(exec_ctx, m->on_read, false, NULL);
+ m->on_read = NULL;
+ }
+ gpr_mu_unlock(&m->parent->mu);
+}
+
+static void me_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
+ passthru_endpoint *p = ((half *)ep)->parent;
+ gpr_mu_lock(&p->mu);
+ if (0 == --p->halves) {
+ gpr_mu_unlock(&p->mu);
+ gpr_mu_destroy(&p->mu);
+ gpr_slice_buffer_destroy(&p->client.read_buffer);
+ gpr_slice_buffer_destroy(&p->server.read_buffer);
+ gpr_free(p);
+ } else {
+ gpr_mu_unlock(&p->mu);
+ }
+}
+
+static char *me_get_peer(grpc_endpoint *ep) {
+ return gpr_strdup("fake:mock_endpoint");
+}
+
+static const grpc_endpoint_vtable vtable = {
+ me_read, me_write, me_add_to_pollset, me_add_to_pollset_set,
+ me_shutdown, me_destroy, me_get_peer,
+};
+
+static void half_init(half *m, passthru_endpoint *parent) {
+ m->base.vtable = &vtable;
+ m->parent = parent;
+ gpr_slice_buffer_init(&m->read_buffer);
+ m->on_read = NULL;
+}
+
+void grpc_passthru_endpoint_create(grpc_endpoint **client,
+ grpc_endpoint **server) {
+ passthru_endpoint *m = gpr_malloc(sizeof(*m));
+ m->halves = 2;
+ m->shutdown = 0;
+ half_init(&m->client, m);
+ half_init(&m->server, m);
+ gpr_mu_init(&m->mu);
+ *client = &m->client.base;
+ *server = &m->server.base;
+}
diff --git a/test/core/util/passthru_endpoint.h b/test/core/util/passthru_endpoint.h
new file mode 100644
index 0000000000..aa1d3a1763
--- /dev/null
+++ b/test/core/util/passthru_endpoint.h
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef MOCK_ENDPOINT_H
+#define MOCK_ENDPOINT_H
+
+#include "src/core/lib/iomgr/endpoint.h"
+
+void grpc_passthru_endpoint_create(grpc_endpoint **client,
+ grpc_endpoint **server);
+
+#endif
diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c
index 2b6d3dd223..154d607ec7 100644
--- a/test/core/util/port_windows.c
+++ b/test/core/util/port_windows.c
@@ -51,6 +51,11 @@
#include "src/core/lib/support/env.h"
#include "test/core/util/port_server_client.h"
+#if GPR_GETPID_IN_UNISTD_H
+#include <sys/unistd.h>
+static int _getpid() { return getpid(); }
+#endif
+
#define NUM_RANDOM_PORTS_TO_PICK 100
static int *chosen_ports = NULL;
@@ -114,7 +119,7 @@ static int is_port_available(int *port, int is_tcp) {
/* Try binding to port */
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
- addr.sin_port = htons(*port);
+ addr.sin_port = htons((u_short)*port);
if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
gpr_log(GPR_DEBUG, "bind(port=%d) failed: %s", *port, strerror(errno));
closesocket(fd);
@@ -127,7 +132,7 @@ static int is_port_available(int *port, int is_tcp) {
closesocket(fd);
return 0;
}
- GPR_ASSERT(alen <= sizeof(addr));
+ GPR_ASSERT(alen <= (socklen_t)sizeof(addr));
actual_port = ntohs(addr.sin_port);
GPR_ASSERT(actual_port > 0);
if (*port == 0) {
diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index 3155a4ece6..270d16600d 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -50,7 +50,7 @@ static unsigned seed(void) { return (unsigned)getpid(); }
#if GPR_GETPID_IN_PROCESS_H
#include <process.h>
-static unsigned seed(void) { return _getpid(); }
+static unsigned seed(void) { return (unsigned)_getpid(); }
#endif
#if GPR_WINDOWS_CRASH_HANDLER
@@ -210,7 +210,7 @@ static void install_crash_handler() {
#include <stdio.h>
#include <string.h>
-static char g_alt_stack[MINSIGSTKSZ];
+static char g_alt_stack[GPR_MAX(MINSIGSTKSZ, 65536)];
#define MAX_FRAMES 32
diff --git a/test/cpp/codegen/compiler_test_golden b/test/cpp/codegen/compiler_test_golden
new file mode 100644
index 0000000000..ef3d1aaa51
--- /dev/null
+++ b/test/cpp/codegen/compiler_test_golden
@@ -0,0 +1,294 @@
+// Generated by the gRPC protobuf plugin.
+// If you make any local change, they will be lost.
+// source: src/proto/grpc/testing/compiler_test.proto
+// Original file comments:
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// File detached comment 1
+//
+// File detached comment 2
+//
+// File leading comment 1
+#ifndef GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
+#define GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
+
+#include "src/proto/grpc/testing/compiler_test.pb.h"
+
+#include <grpc++/impl/codegen/async_stream.h>
+#include <grpc++/impl/codegen/async_unary_call.h>
+#include <grpc++/impl/codegen/proto_utils.h>
+#include <grpc++/impl/codegen/rpc_method.h>
+#include <grpc++/impl/codegen/service_type.h>
+#include <grpc++/impl/codegen/status.h>
+#include <grpc++/impl/codegen/stub_options.h>
+#include <grpc++/impl/codegen/sync_stream.h>
+
+namespace grpc {
+class CompletionQueue;
+class Channel;
+class RpcService;
+class ServerCompletionQueue;
+class ServerContext;
+} // namespace grpc
+
+namespace grpc {
+namespace testing {
+
+// ServiceA detached comment 1
+//
+// ServiceA detached comment 2
+//
+// ServiceA leading comment 1
+class ServiceA GRPC_FINAL {
+ public:
+ class StubInterface {
+ public:
+ virtual ~StubInterface() {}
+ // MethodA1 leading comment 1
+ virtual ::grpc::Status MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) = 0;
+ std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> AsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(AsyncMethodA1Raw(context, request, cq));
+ }
+ // MethodA1 trailing comment 1
+ // MethodA2 detached leading comment 1
+ //
+ // Method A2 leading comment 1
+ // Method A2 leading comment 2
+ std::unique_ptr< ::grpc::ClientWriterInterface< ::grpc::testing::Request>> MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response) {
+ return std::unique_ptr< ::grpc::ClientWriterInterface< ::grpc::testing::Request>>(MethodA2Raw(context, response));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>> AsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) {
+ return std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>>(AsyncMethodA2Raw(context, response, cq, tag));
+ }
+ // MethodA2 trailing comment 1
+ private:
+ virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
+ virtual ::grpc::ClientWriterInterface< ::grpc::testing::Request>* MethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response) = 0;
+ virtual ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>* AsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) = 0;
+ };
+ class Stub GRPC_FINAL : public StubInterface {
+ public:
+ Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
+ ::grpc::Status MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) GRPC_OVERRIDE;
+ std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> AsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(AsyncMethodA1Raw(context, request, cq));
+ }
+ std::unique_ptr< ::grpc::ClientWriter< ::grpc::testing::Request>> MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response) {
+ return std::unique_ptr< ::grpc::ClientWriter< ::grpc::testing::Request>>(MethodA2Raw(context, response));
+ }
+ std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>> AsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) {
+ return std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>>(AsyncMethodA2Raw(context, response, cq, tag));
+ }
+
+ private:
+ std::shared_ptr< ::grpc::ChannelInterface> channel_;
+ ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) GRPC_OVERRIDE;
+ ::grpc::ClientWriter< ::grpc::testing::Request>* MethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response) GRPC_OVERRIDE;
+ ::grpc::ClientAsyncWriter< ::grpc::testing::Request>* AsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE;
+ const ::grpc::RpcMethod rpcmethod_MethodA1_;
+ const ::grpc::RpcMethod rpcmethod_MethodA2_;
+ };
+ static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
+
+ class Service : public ::grpc::Service {
+ public:
+ Service();
+ virtual ~Service();
+ // MethodA1 leading comment 1
+ virtual ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response);
+ // MethodA1 trailing comment 1
+ // MethodA2 detached leading comment 1
+ //
+ // Method A2 leading comment 1
+ // Method A2 leading comment 2
+ virtual ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response);
+ // MethodA2 trailing comment 1
+ };
+ template <class BaseClass>
+ class WithAsyncMethod_MethodA1 : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service *service) {}
+ public:
+ WithAsyncMethod_MethodA1() {
+ ::grpc::Service::MarkMethodAsync(0);
+ }
+ ~WithAsyncMethod_MethodA1() GRPC_OVERRIDE {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestMethodA1(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncResponseWriter< ::grpc::testing::Response>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
+ }
+ };
+ template <class BaseClass>
+ class WithAsyncMethod_MethodA2 : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service *service) {}
+ public:
+ WithAsyncMethod_MethodA2() {
+ ::grpc::Service::MarkMethodAsync(1);
+ }
+ ~WithAsyncMethod_MethodA2() GRPC_OVERRIDE {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestMethodA2(::grpc::ServerContext* context, ::grpc::ServerAsyncReader< ::grpc::testing::Response, ::grpc::testing::Request>* reader, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncClientStreaming(1, context, reader, new_call_cq, notification_cq, tag);
+ }
+ };
+ typedef WithAsyncMethod_MethodA1<WithAsyncMethod_MethodA2<Service > > AsyncService;
+ template <class BaseClass>
+ class WithGenericMethod_MethodA1 : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service *service) {}
+ public:
+ WithGenericMethod_MethodA1() {
+ ::grpc::Service::MarkMethodGeneric(0);
+ }
+ ~WithGenericMethod_MethodA1() GRPC_OVERRIDE {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ };
+ template <class BaseClass>
+ class WithGenericMethod_MethodA2 : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service *service) {}
+ public:
+ WithGenericMethod_MethodA2() {
+ ::grpc::Service::MarkMethodGeneric(1);
+ }
+ ~WithGenericMethod_MethodA2() GRPC_OVERRIDE {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ };
+};
+
+// ServiceB leading comment 1
+class ServiceB GRPC_FINAL {
+ public:
+ class StubInterface {
+ public:
+ virtual ~StubInterface() {}
+ // MethodB1 leading comment 1
+ virtual ::grpc::Status MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) = 0;
+ std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> AsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(AsyncMethodB1Raw(context, request, cq));
+ }
+ // MethodB1 trailing comment 1
+ private:
+ virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
+ };
+ class Stub GRPC_FINAL : public StubInterface {
+ public:
+ Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
+ ::grpc::Status MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) GRPC_OVERRIDE;
+ std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> AsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+ return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(AsyncMethodB1Raw(context, request, cq));
+ }
+
+ private:
+ std::shared_ptr< ::grpc::ChannelInterface> channel_;
+ ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) GRPC_OVERRIDE;
+ const ::grpc::RpcMethod rpcmethod_MethodB1_;
+ };
+ static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
+
+ class Service : public ::grpc::Service {
+ public:
+ Service();
+ virtual ~Service();
+ // MethodB1 leading comment 1
+ virtual ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response);
+ // MethodB1 trailing comment 1
+ };
+ template <class BaseClass>
+ class WithAsyncMethod_MethodB1 : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service *service) {}
+ public:
+ WithAsyncMethod_MethodB1() {
+ ::grpc::Service::MarkMethodAsync(0);
+ }
+ ~WithAsyncMethod_MethodB1() GRPC_OVERRIDE {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ void RequestMethodB1(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncResponseWriter< ::grpc::testing::Response>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+ ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
+ }
+ };
+ typedef WithAsyncMethod_MethodB1<Service > AsyncService;
+ template <class BaseClass>
+ class WithGenericMethod_MethodB1 : public BaseClass {
+ private:
+ void BaseClassMustBeDerivedFromService(const Service *service) {}
+ public:
+ WithGenericMethod_MethodB1() {
+ ::grpc::Service::MarkMethodGeneric(0);
+ }
+ ~WithGenericMethod_MethodB1() GRPC_OVERRIDE {
+ BaseClassMustBeDerivedFromService(this);
+ }
+ // disable synchronous version of this method
+ ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+ abort();
+ return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+ }
+ };
+};
+// ServiceB trailing comment 1
+
+} // namespace testing
+} // namespace grpc
+
+
+#endif // GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
diff --git a/test/cpp/codegen/golden_file_test.cc b/test/cpp/codegen/golden_file_test.cc
new file mode 100644
index 0000000000..ec08d08de6
--- /dev/null
+++ b/test/cpp/codegen/golden_file_test.cc
@@ -0,0 +1,64 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <fstream>
+#include <sstream>
+
+#include <gtest/gtest.h>
+
+// These paths rely on the fact that we run our tests under grpc/
+const char kGeneratedFilePath[] =
+ "gens/src/proto/grpc/testing/compiler_test.grpc.pb.h";
+const char kGoldenFilePath[] = "test/cpp/codegen/compiler_test_golden";
+
+TEST(GoldenFileTest, TestGeneratedFile) {
+ std::ifstream generated(kGeneratedFilePath);
+ std::ifstream golden(kGoldenFilePath);
+
+ ASSERT_TRUE(generated.good());
+ ASSERT_TRUE(golden.good());
+
+ std::ostringstream gen_oss;
+ std::ostringstream gold_oss;
+ gen_oss << generated.rdbuf();
+ gold_oss << golden.rdbuf();
+ EXPECT_EQ(gold_oss.str(), gen_oss.str());
+
+ generated.close();
+ golden.close();
+}
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index 7e4d6046d6..0232a9fa31 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -51,6 +51,7 @@
#include "test/core/util/port.h"
#include "test/core/util/test_config.h"
#include "test/cpp/util/string_ref_helper.h"
+#include "test/cpp/util/test_credentials_provider.h"
#ifdef GPR_POSIX_SOCKET
#include "src/core/lib/iomgr/ev_posix.h"
@@ -58,6 +59,7 @@
using grpc::testing::EchoRequest;
using grpc::testing::EchoResponse;
+using grpc::testing::kTlsCredentialsType;
using std::chrono::system_clock;
GPR_TLS_DECL(g_is_async_end2end_test);
@@ -197,20 +199,37 @@ class Verifier {
bool spin_;
};
-class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
+class TestScenario {
+ public:
+ TestScenario(bool non_block, const grpc::string& creds_type,
+ const grpc::string& content)
+ : disable_blocking(non_block),
+ credentials_type(creds_type),
+ message_content(content) {}
+ void Log() const {
+ gpr_log(GPR_INFO,
+ "Scenario: disable_blocking %d, credentials %s, message size %d",
+ disable_blocking, credentials_type.c_str(), message_content.size());
+ }
+ bool disable_blocking;
+ const grpc::string credentials_type;
+ const grpc::string message_content;
+};
+
+class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
protected:
- AsyncEnd2endTest() {}
+ AsyncEnd2endTest() { GetParam().Log(); }
void SetUp() GRPC_OVERRIDE {
- poll_overrider_.reset(new PollingOverrider(!GetParam()));
+ poll_overrider_.reset(new PollingOverrider(!GetParam().disable_blocking));
int port = grpc_pick_unused_port_or_die();
server_address_ << "localhost:" << port;
// Setup server
ServerBuilder builder;
- builder.AddListeningPort(server_address_.str(),
- grpc::InsecureServerCredentials());
+ auto server_creds = GetServerCredentials(GetParam().credentials_type);
+ builder.AddListeningPort(server_address_.str(), server_creds);
builder.RegisterService(&service_);
cq_ = builder.AddCompletionQueue();
server_ = builder.BuildAndStart();
@@ -230,8 +249,11 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
}
void ResetStub() {
+ ChannelArguments args;
+ auto channel_creds =
+ GetChannelCredentials(GetParam().credentials_type, &args);
std::shared_ptr<Channel> channel =
- CreateChannel(server_address_.str(), InsecureChannelCredentials());
+ CreateCustomChannel(server_address_.str(), channel_creds, args);
stub_ = grpc::testing::EchoTestService::NewStub(channel);
}
@@ -247,22 +269,23 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
send_response.set_message(recv_request.message());
response_writer.Finish(send_response, Status::OK, tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
-
response_reader->Finish(&recv_response, &recv_status, tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
+ .Expect(4, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
@@ -302,7 +325,7 @@ TEST_P(AsyncEnd2endTest, AsyncNextRpc) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
@@ -310,23 +333,22 @@ TEST_P(AsyncEnd2endTest, AsyncNextRpc) {
std::chrono::system_clock::now());
std::chrono::system_clock::time_point time_limit(
std::chrono::system_clock::now() + std::chrono::seconds(10));
- Verifier(GetParam()).Verify(cq_.get(), time_now);
- Verifier(GetParam()).Verify(cq_.get(), time_now);
+ Verifier(GetParam().disable_blocking).Verify(cq_.get(), time_now);
+ Verifier(GetParam().disable_blocking).Verify(cq_.get(), time_now);
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get(), time_limit);
+ Verifier(GetParam().disable_blocking)
+ .Expect(2, true)
+ .Verify(cq_.get(), time_limit);
EXPECT_EQ(send_request.message(), recv_request.message());
send_response.set_message(recv_request.message());
response_writer.Finish(send_response, Status::OK, tag(3));
- Verifier(GetParam())
- .Expect(3, true)
- .Verify(cq_.get(), std::chrono::system_clock::time_point::max());
-
response_reader->Finish(&recv_response, &recv_status, tag(4));
- Verifier(GetParam())
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
.Expect(4, true)
.Verify(cq_.get(), std::chrono::system_clock::time_point::max());
@@ -347,41 +369,48 @@ TEST_P(AsyncEnd2endTest, SimpleClientStreaming) {
ServerContext srv_ctx;
ServerAsyncReader<EchoResponse, EchoRequest> srv_stream(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncWriter<EchoRequest>> cli_stream(
stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1)));
service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
tag(2));
- Verifier(GetParam()).Expect(2, true).Expect(1, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(2, true)
+ .Expect(1, true)
+ .Verify(cq_.get());
cli_stream->Write(send_request, tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
-
srv_stream.Read(&recv_request, tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
+ .Expect(4, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
cli_stream->Write(send_request, tag(5));
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
-
srv_stream.Read(&recv_request, tag(6));
- Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(5, true)
+ .Expect(6, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
cli_stream->WritesDone(tag(7));
- Verifier(GetParam()).Expect(7, true).Verify(cq_.get());
-
srv_stream.Read(&recv_request, tag(8));
- Verifier(GetParam()).Expect(8, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(7, true)
+ .Expect(8, false)
+ .Verify(cq_.get());
send_response.set_message(recv_request.message());
srv_stream.Finish(send_response, Status::OK, tag(9));
- Verifier(GetParam()).Expect(9, true).Verify(cq_.get());
-
cli_stream->Finish(&recv_status, tag(10));
- Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(9, true)
+ .Expect(10, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
@@ -400,39 +429,45 @@ TEST_P(AsyncEnd2endTest, SimpleServerStreaming) {
ServerContext srv_ctx;
ServerAsyncWriter<EchoResponse> srv_stream(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncReader<EchoResponse>> cli_stream(
stub_->AsyncResponseStream(&cli_ctx, send_request, cq_.get(), tag(1)));
service_.RequestResponseStream(&srv_ctx, &recv_request, &srv_stream,
cq_.get(), cq_.get(), tag(2));
- Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(1, true)
+ .Expect(2, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
send_response.set_message(recv_request.message());
srv_stream.Write(send_response, tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
-
cli_stream->Read(&recv_response, tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
+ .Expect(4, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
srv_stream.Write(send_response, tag(5));
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
-
cli_stream->Read(&recv_response, tag(6));
- Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(5, true)
+ .Expect(6, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
srv_stream.Finish(Status::OK, tag(7));
- Verifier(GetParam()).Expect(7, true).Verify(cq_.get());
-
cli_stream->Read(&recv_response, tag(8));
- Verifier(GetParam()).Expect(8, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(7, true)
+ .Expect(8, false)
+ .Verify(cq_.get());
cli_stream->Finish(&recv_status, tag(9));
- Verifier(GetParam()).Expect(9, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
EXPECT_TRUE(recv_status.ok());
}
@@ -450,41 +485,48 @@ TEST_P(AsyncEnd2endTest, SimpleBidiStreaming) {
ServerContext srv_ctx;
ServerAsyncReaderWriter<EchoResponse, EchoRequest> srv_stream(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse>>
cli_stream(stub_->AsyncBidiStream(&cli_ctx, cq_.get(), tag(1)));
service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
tag(2));
- Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(1, true)
+ .Expect(2, true)
+ .Verify(cq_.get());
cli_stream->Write(send_request, tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
-
srv_stream.Read(&recv_request, tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
+ .Expect(4, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
send_response.set_message(recv_request.message());
srv_stream.Write(send_response, tag(5));
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
-
cli_stream->Read(&recv_response, tag(6));
- Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(5, true)
+ .Expect(6, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
cli_stream->WritesDone(tag(7));
- Verifier(GetParam()).Expect(7, true).Verify(cq_.get());
-
srv_stream.Read(&recv_request, tag(8));
- Verifier(GetParam()).Expect(8, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(7, true)
+ .Expect(8, false)
+ .Verify(cq_.get());
srv_stream.Finish(Status::OK, tag(9));
- Verifier(GetParam()).Expect(9, true).Verify(cq_.get());
-
cli_stream->Finish(&recv_status, tag(10));
- Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(9, true)
+ .Expect(10, true)
+ .Verify(cq_.get());
EXPECT_TRUE(recv_status.ok());
}
@@ -503,7 +545,7 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::pair<grpc::string, grpc::string> meta1("key1", "val1");
std::pair<grpc::string, grpc::string> meta2("key2", "val2");
std::pair<grpc::string, grpc::string> meta3("g.r.d-bin", "xyz");
@@ -516,7 +558,7 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
auto client_initial_metadata = srv_ctx.client_metadata();
EXPECT_EQ(meta1.second,
@@ -529,11 +571,11 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
send_response.set_message(recv_request.message());
response_writer.Finish(send_response, Status::OK, tag(3));
-
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
-
response_reader->Finish(&recv_response, &recv_status, tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
+ .Expect(4, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
@@ -552,7 +594,7 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::pair<grpc::string, grpc::string> meta1("key1", "val1");
std::pair<grpc::string, grpc::string> meta2("key2", "val2");
@@ -561,15 +603,15 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
srv_ctx.AddInitialMetadata(meta1.first, meta1.second);
srv_ctx.AddInitialMetadata(meta2.first, meta2.second);
response_writer.SendInitialMetadata(tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
response_reader->ReadInitialMetadata(tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
auto server_initial_metadata = cli_ctx.GetServerInitialMetadata();
EXPECT_EQ(meta1.second,
ToString(server_initial_metadata.find(meta1.first)->second));
@@ -579,10 +621,11 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
send_response.set_message(recv_request.message());
response_writer.Finish(send_response, Status::OK, tag(5));
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
-
response_reader->Finish(&recv_response, &recv_status, tag(6));
- Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(5, true)
+ .Expect(6, true)
+ .Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
@@ -601,7 +644,7 @@ TEST_P(AsyncEnd2endTest, ServerTrailingMetadataRpc) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::pair<grpc::string, grpc::string> meta1("key1", "val1");
std::pair<grpc::string, grpc::string> meta2("key2", "val2");
@@ -610,20 +653,22 @@ TEST_P(AsyncEnd2endTest, ServerTrailingMetadataRpc) {
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
response_writer.SendInitialMetadata(tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
send_response.set_message(recv_request.message());
srv_ctx.AddTrailingMetadata(meta1.first, meta1.second);
srv_ctx.AddTrailingMetadata(meta2.first, meta2.second);
response_writer.Finish(send_response, Status::OK, tag(4));
+ response_reader->Finish(&recv_response, &recv_status, tag(5));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(4, true)
+ .Expect(5, true)
+ .Verify(cq_.get());
- response_reader->Finish(&recv_response, &recv_status, tag(5));
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata();
@@ -647,7 +692,7 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::pair<grpc::string, grpc::string> meta1("key1", "val1");
std::pair<grpc::string, grpc::string> meta2(
"key2-bin",
@@ -671,7 +716,7 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
auto client_initial_metadata = srv_ctx.client_metadata();
EXPECT_EQ(meta1.second,
@@ -683,9 +728,9 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
srv_ctx.AddInitialMetadata(meta3.first, meta3.second);
srv_ctx.AddInitialMetadata(meta4.first, meta4.second);
response_writer.SendInitialMetadata(tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
response_reader->ReadInitialMetadata(tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
auto server_initial_metadata = cli_ctx.GetServerInitialMetadata();
EXPECT_EQ(meta3.second,
ToString(server_initial_metadata.find(meta3.first)->second));
@@ -697,11 +742,13 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
srv_ctx.AddTrailingMetadata(meta5.first, meta5.second);
srv_ctx.AddTrailingMetadata(meta6.first, meta6.second);
response_writer.Finish(send_response, Status::OK, tag(5));
+ response_reader->Finish(&recv_response, &recv_status, tag(6));
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(5, true)
+ .Expect(6, true)
+ .Verify(cq_.get());
- response_reader->Finish(&recv_response, &recv_status, tag(6));
- Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata();
@@ -726,7 +773,7 @@ TEST_P(AsyncEnd2endTest, ServerCheckCancellation) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
@@ -734,15 +781,15 @@ TEST_P(AsyncEnd2endTest, ServerCheckCancellation) {
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
cli_ctx.TryCancel();
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
EXPECT_TRUE(srv_ctx.IsCancelled());
response_reader->Finish(&recv_response, &recv_status, tag(4));
- Verifier(GetParam()).Expect(4, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(4, false).Verify(cq_.get());
EXPECT_EQ(StatusCode::CANCELLED, recv_status.error_code());
}
@@ -761,7 +808,7 @@ TEST_P(AsyncEnd2endTest, ServerCheckDone) {
ServerContext srv_ctx;
grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
@@ -769,25 +816,29 @@ TEST_P(AsyncEnd2endTest, ServerCheckDone) {
service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
send_response.set_message(recv_request.message());
response_writer.Finish(send_response, Status::OK, tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
- Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
- EXPECT_FALSE(srv_ctx.IsCancelled());
-
response_reader->Finish(&recv_response, &recv_status, tag(4));
- Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(3, true)
+ .Expect(4, true)
+ .Expect(5, true)
+ .Verify(cq_.get());
+ EXPECT_FALSE(srv_ctx.IsCancelled());
EXPECT_EQ(send_response.message(), recv_response.message());
EXPECT_TRUE(recv_status.ok());
}
TEST_P(AsyncEnd2endTest, UnimplementedRpc) {
+ ChannelArguments args;
+ auto channel_creds =
+ GetChannelCredentials(GetParam().credentials_type, &args);
std::shared_ptr<Channel> channel =
- CreateChannel(server_address_.str(), InsecureChannelCredentials());
+ CreateCustomChannel(server_address_.str(), channel_creds, args);
std::unique_ptr<grpc::testing::UnimplementedService::Stub> stub;
stub = grpc::testing::UnimplementedService::NewStub(channel);
EchoRequest send_request;
@@ -795,12 +846,12 @@ TEST_P(AsyncEnd2endTest, UnimplementedRpc) {
Status recv_status;
ClientContext cli_ctx;
- send_request.set_message("Hello");
+ send_request.set_message(GetParam().message_content);
std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
stub->AsyncUnimplemented(&cli_ctx, send_request, cq_.get()));
response_reader->Finish(&recv_response, &recv_status, tag(4));
- Verifier(GetParam()).Expect(4, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(4, false).Verify(cq_.get());
EXPECT_EQ(StatusCode::UNIMPLEMENTED, recv_status.error_code());
EXPECT_EQ("", recv_status.error_message());
@@ -847,23 +898,25 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// Initiate the 'RequestStream' call on client
std::unique_ptr<ClientAsyncWriter<EchoRequest>> cli_stream(
stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1)));
- Verifier(GetParam()).Expect(1, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(1, true).Verify(cq_.get());
// On the server, request to be notified of 'RequestStream' calls
// and receive the 'RequestStream' call just made by the client
srv_ctx.AsyncNotifyWhenDone(tag(11));
service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
// Client sends 3 messages (tags 3, 4 and 5)
for (int tag_idx = 3; tag_idx <= 5; tag_idx++) {
send_request.set_message("Ping " + std::to_string(tag_idx));
cli_stream->Write(send_request, tag(tag_idx));
- Verifier(GetParam()).Expect(tag_idx, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking)
+ .Expect(tag_idx, true)
+ .Verify(cq_.get());
}
cli_stream->WritesDone(tag(6));
- Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
bool expected_server_cq_result = true;
bool ignore_cq_result = false;
@@ -871,7 +924,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
if (server_try_cancel == CANCEL_BEFORE_PROCESSING) {
srv_ctx.TryCancel();
- Verifier(GetParam()).Expect(11, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(11, true).Verify(cq_.get());
EXPECT_TRUE(srv_ctx.IsCancelled());
// Since cancellation is done before server reads any results, we know
@@ -881,7 +934,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
std::thread* server_try_cancel_thd = NULL;
- auto verif = Verifier(GetParam());
+ auto verif = Verifier(GetParam().disable_blocking);
if (server_try_cancel == CANCEL_DURING_PROCESSING) {
server_try_cancel_thd =
@@ -939,13 +992,13 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// Server sends the final message and cancelled status (but the RPC is
// already cancelled at this point. So we expect the operation to fail)
srv_stream.Finish(send_response, Status::CANCELLED, tag(9));
- Verifier(GetParam()).Expect(9, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(9, false).Verify(cq_.get());
// Client will see the cancellation
cli_stream->Finish(&recv_status, tag(10));
// TODO(sreek): The expectation here should be true. This is a bug (github
// issue #4972)
- Verifier(GetParam()).Expect(10, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(10, false).Verify(cq_.get());
EXPECT_FALSE(recv_status.ok());
EXPECT_EQ(::grpc::StatusCode::CANCELLED, recv_status.error_code());
}
@@ -979,13 +1032,13 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// Initiate the 'ResponseStream' call on the client
std::unique_ptr<ClientAsyncReader<EchoResponse>> cli_stream(
stub_->AsyncResponseStream(&cli_ctx, send_request, cq_.get(), tag(1)));
- Verifier(GetParam()).Expect(1, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(1, true).Verify(cq_.get());
// On the server, request to be notified of 'ResponseStream' calls and
// receive the call just made by the client
srv_ctx.AsyncNotifyWhenDone(tag(11));
service_.RequestResponseStream(&srv_ctx, &recv_request, &srv_stream,
cq_.get(), cq_.get(), tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
EXPECT_EQ(send_request.message(), recv_request.message());
bool expected_cq_result = true;
@@ -994,7 +1047,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
if (server_try_cancel == CANCEL_BEFORE_PROCESSING) {
srv_ctx.TryCancel();
- Verifier(GetParam()).Expect(11, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(11, true).Verify(cq_.get());
EXPECT_TRUE(srv_ctx.IsCancelled());
// We know for sure that all cq results will be false from this point
@@ -1004,7 +1057,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
std::thread* server_try_cancel_thd = NULL;
- auto verif = Verifier(GetParam());
+ auto verif = Verifier(GetParam().disable_blocking);
if (server_try_cancel == CANCEL_DURING_PROCESSING) {
server_try_cancel_thd =
@@ -1064,7 +1117,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// Client attemts to read the three messages from the server
for (int tag_idx = 6; tag_idx <= 8; tag_idx++) {
cli_stream->Read(&recv_response, tag(tag_idx));
- Verifier(GetParam())
+ Verifier(GetParam().disable_blocking)
.Expect(tag_idx, expected_cq_result)
.Verify(cq_.get(), ignore_cq_result);
}
@@ -1075,11 +1128,11 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// Server finishes the stream (but the RPC is already cancelled)
srv_stream.Finish(Status::CANCELLED, tag(9));
- Verifier(GetParam()).Expect(9, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(9, false).Verify(cq_.get());
// Client will see the cancellation
cli_stream->Finish(&recv_status, tag(10));
- Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
EXPECT_FALSE(recv_status.ok());
EXPECT_EQ(::grpc::StatusCode::CANCELLED, recv_status.error_code());
}
@@ -1114,19 +1167,19 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// Initiate the call from the client side
std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse>>
cli_stream(stub_->AsyncBidiStream(&cli_ctx, cq_.get(), tag(1)));
- Verifier(GetParam()).Expect(1, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(1, true).Verify(cq_.get());
// On the server, request to be notified of the 'BidiStream' call and
// receive the call just made by the client
srv_ctx.AsyncNotifyWhenDone(tag(11));
service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
tag(2));
- Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
// Client sends the first and the only message
send_request.set_message("Ping");
cli_stream->Write(send_request, tag(3));
- Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
bool expected_cq_result = true;
bool ignore_cq_result = false;
@@ -1134,7 +1187,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
if (server_try_cancel == CANCEL_BEFORE_PROCESSING) {
srv_ctx.TryCancel();
- Verifier(GetParam()).Expect(11, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(11, true).Verify(cq_.get());
EXPECT_TRUE(srv_ctx.IsCancelled());
// We know for sure that all cq results will be false from this point
@@ -1144,7 +1197,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
std::thread* server_try_cancel_thd = NULL;
- auto verif = Verifier(GetParam());
+ auto verif = Verifier(GetParam().disable_blocking);
if (server_try_cancel == CANCEL_DURING_PROCESSING) {
server_try_cancel_thd =
@@ -1244,10 +1297,10 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
// know that cq results are supposed to return false on server.
srv_stream.Finish(Status::CANCELLED, tag(9));
- Verifier(GetParam()).Expect(9, false).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(9, false).Verify(cq_.get());
cli_stream->Finish(&recv_status, tag(10));
- Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+ Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
EXPECT_FALSE(recv_status.ok());
EXPECT_EQ(grpc::StatusCode::CANCELLED, recv_status.error_code());
}
@@ -1289,11 +1342,48 @@ TEST_P(AsyncEnd2endServerTryCancelTest, ServerBidiStreamingTryCancelAfter) {
TestBidiStreamingServerCancel(CANCEL_AFTER_PROCESSING);
}
+std::vector<TestScenario> CreateTestScenarios(bool test_disable_blocking,
+ bool test_secure,
+ int test_big_limit) {
+ std::vector<TestScenario> scenarios;
+ std::vector<grpc::string> credentials_types;
+ std::vector<grpc::string> messages;
+
+ credentials_types.push_back(kInsecureCredentialsType);
+ auto sec_list = GetSecureCredentialsTypeList();
+ for (auto sec = sec_list.begin(); sec != sec_list.end(); sec++) {
+ credentials_types.push_back(*sec);
+ }
+
+ messages.push_back("Hello");
+ for (int sz = 1; sz < test_big_limit; sz *= 2) {
+ grpc::string big_msg;
+ for (int i = 0; i < sz * 1024; i++) {
+ char c = 'a' + (i % 26);
+ big_msg += c;
+ }
+ messages.push_back(big_msg);
+ }
+
+ for (auto cred = credentials_types.begin(); cred != credentials_types.end();
+ ++cred) {
+ for (auto msg = messages.begin(); msg != messages.end(); msg++) {
+ scenarios.push_back(TestScenario(false, *cred, *msg));
+ if (test_disable_blocking) {
+ scenarios.push_back(TestScenario(true, *cred, *msg));
+ }
+ }
+ }
+ return scenarios;
+}
+
INSTANTIATE_TEST_CASE_P(AsyncEnd2end, AsyncEnd2endTest,
- ::testing::Values(false, true));
+ ::testing::ValuesIn(CreateTestScenarios(true, true,
+ 1024)));
INSTANTIATE_TEST_CASE_P(AsyncEnd2endServerTryCancel,
AsyncEnd2endServerTryCancelTest,
- ::testing::Values(false));
+ ::testing::ValuesIn(CreateTestScenarios(false, false,
+ 0)));
} // namespace
} // namespace testing
diff --git a/test/cpp/interop/stress_interop_client.cc b/test/cpp/interop/stress_interop_client.cc
index 04671fb935..f287a5aa3b 100644
--- a/test/cpp/interop/stress_interop_client.cc
+++ b/test/cpp/interop/stress_interop_client.cc
@@ -84,49 +84,37 @@ StressTestInteropClient::StressTestInteropClient(
int test_id, const grpc::string& server_address,
std::shared_ptr<Channel> channel,
const WeightedRandomTestSelector& test_selector, long test_duration_secs,
- long sleep_duration_ms, long metrics_collection_interval_secs)
+ long sleep_duration_ms)
: test_id_(test_id),
server_address_(server_address),
channel_(channel),
interop_client_(new InteropClient(channel, false)),
test_selector_(test_selector),
test_duration_secs_(test_duration_secs),
- sleep_duration_ms_(sleep_duration_ms),
- metrics_collection_interval_secs_(metrics_collection_interval_secs) {}
+ sleep_duration_ms_(sleep_duration_ms) {}
-void StressTestInteropClient::MainLoop(std::shared_ptr<Gauge> qps_gauge) {
+void StressTestInteropClient::MainLoop(std::shared_ptr<QpsGauge> qps_gauge) {
gpr_log(GPR_INFO, "Running test %d. ServerAddr: %s", test_id_,
server_address_.c_str());
- gpr_timespec test_end_time =
- gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
- gpr_time_from_seconds(test_duration_secs_, GPR_TIMESPAN));
+ gpr_timespec test_end_time;
+ if (test_duration_secs_ < 0) {
+ test_end_time = gpr_inf_future(GPR_CLOCK_REALTIME);
+ } else {
+ test_end_time =
+ gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_seconds(test_duration_secs_, GPR_TIMESPAN));
+ }
- gpr_timespec current_time = gpr_now(GPR_CLOCK_REALTIME);
- gpr_timespec next_stat_collection_time = current_time;
- gpr_timespec collection_interval =
- gpr_time_from_seconds(metrics_collection_interval_secs_, GPR_TIMESPAN);
- long num_calls_per_interval = 0;
+ qps_gauge->Reset();
- while (test_duration_secs_ < 0 ||
- gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) {
+ while (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) {
// Select the test case to execute based on the weights and execute it
TestCaseType test_case = test_selector_.GetNextTest();
gpr_log(GPR_DEBUG, "%d - Executing the test case %d", test_id_, test_case);
RunTest(test_case);
- num_calls_per_interval++;
-
- // See if its time to collect stats yet
- current_time = gpr_now(GPR_CLOCK_REALTIME);
- if (gpr_time_cmp(next_stat_collection_time, current_time) < 0) {
- qps_gauge->Set(num_calls_per_interval /
- metrics_collection_interval_secs_);
-
- num_calls_per_interval = 0;
- next_stat_collection_time =
- gpr_time_add(current_time, collection_interval);
- }
+ qps_gauge->Incr();
// Sleep between successive calls if needed
if (sleep_duration_ms_ > 0) {
diff --git a/test/cpp/interop/stress_interop_client.h b/test/cpp/interop/stress_interop_client.h
index 6fd303d6b7..cb0cd98821 100644
--- a/test/cpp/interop/stress_interop_client.h
+++ b/test/cpp/interop/stress_interop_client.h
@@ -87,12 +87,11 @@ class StressTestInteropClient {
StressTestInteropClient(int test_id, const grpc::string& server_address,
std::shared_ptr<Channel> channel,
const WeightedRandomTestSelector& test_selector,
- long test_duration_secs, long sleep_duration_ms,
- long metrics_collection_interval_secs);
+ long test_duration_secs, long sleep_duration_ms);
// The main function. Use this as the thread entry point.
- // qps_gauge is the Gauge to record the requests per second metric
- void MainLoop(std::shared_ptr<Gauge> qps_gauge);
+ // qps_gauge is the QpsGauge to record the requests per second metric
+ void MainLoop(std::shared_ptr<QpsGauge> qps_gauge);
private:
void RunTest(TestCaseType test_case);
@@ -104,7 +103,6 @@ class StressTestInteropClient {
const WeightedRandomTestSelector& test_selector_;
long test_duration_secs_;
long sleep_duration_ms_;
- long metrics_collection_interval_secs_;
};
} // namespace testing
diff --git a/test/cpp/interop/stress_test.cc b/test/cpp/interop/stress_test.cc
index 38caf31b76..d9e3fd25c5 100644
--- a/test/cpp/interop/stress_test.cc
+++ b/test/cpp/interop/stress_test.cc
@@ -56,9 +56,6 @@ extern void gpr_default_log(gpr_log_func_args* args);
DEFINE_int32(metrics_port, 8081, "The metrics server port.");
-DEFINE_int32(metrics_collection_interval_secs, 5,
- "How often (in seconds) should metrics be recorded.");
-
DEFINE_int32(sleep_duration_ms, 0,
"The duration (in millisec) between two"
" consecutive test calls (per server) issued by the server.");
@@ -275,19 +272,19 @@ int main(int argc, char** argv) {
stub_idx++) {
StressTestInteropClient* client = new StressTestInteropClient(
++thread_idx, *it, channel, test_selector, FLAGS_test_duration_secs,
- FLAGS_sleep_duration_ms, FLAGS_metrics_collection_interval_secs);
+ FLAGS_sleep_duration_ms);
- bool is_already_created;
- // Gauge name
+ bool is_already_created = false;
+ // QpsGauge name
std::snprintf(buffer, sizeof(buffer),
"/stress_test/server_%d/channel_%d/stub_%d/qps",
server_idx, channel_idx, stub_idx);
test_threads.emplace_back(grpc::thread(
&StressTestInteropClient::MainLoop, client,
- metrics_service.CreateGauge(buffer, &is_already_created)));
+ metrics_service.CreateQpsGauge(buffer, &is_already_created)));
- // The Gauge should not have been already created
+ // The QpsGauge should not have been already created
GPR_ASSERT(!is_already_created);
}
}
diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h
index 5a9027a4a2..175529f01b 100644
--- a/test/cpp/qps/client.h
+++ b/test/cpp/qps/client.h
@@ -39,6 +39,7 @@
#include <vector>
#include <grpc++/support/byte_buffer.h>
+#include <grpc++/support/channel_arguments.h>
#include <grpc++/support/slice.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
@@ -280,7 +281,7 @@ class ClientImpl : public Client {
create_stub_(create_stub) {
for (int i = 0; i < config.client_channels(); i++) {
channels_[i].init(config.server_targets(i % config.server_targets_size()),
- config, create_stub_);
+ config, create_stub_, i);
}
ClientRequestCreator<RequestType> create_req(&request_,
@@ -303,14 +304,17 @@ class ClientImpl : public Client {
}
void init(const grpc::string& target, const ClientConfig& config,
std::function<std::unique_ptr<StubType>(std::shared_ptr<Channel>)>
- create_stub) {
+ create_stub,
+ int shard) {
// We have to use a 2-phase init like this with a default
// constructor followed by an initializer function to make
// old compilers happy with using this in std::vector
+ ChannelArguments args;
+ args.SetInt("shard_to_ensure_no_subchannel_merges", shard);
channel_ = CreateTestChannel(
target, config.security_params().server_host_override(),
- config.has_security_params(),
- !config.security_params().use_test_ca());
+ config.has_security_params(), !config.security_params().use_test_ca(),
+ std::shared_ptr<CallCredentials>(), args);
stub_ = create_stub(channel_);
}
Channel* get_channel() { return channel_.get(); }
diff --git a/test/cpp/qps/driver.cc b/test/cpp/qps/driver.cc
index 2583ceb819..04b2b453f9 100644
--- a/test/cpp/qps/driver.cc
+++ b/test/cpp/qps/driver.cc
@@ -83,6 +83,7 @@ static std::unordered_map<string, std::deque<int>> get_hosts_and_cores(
auto stub = WorkerService::NewStub(
CreateChannel(*it, InsecureChannelCredentials()));
grpc::ClientContext ctx;
+ ctx.set_fail_fast(false);
CoreRequest dummy;
CoreResponse cores;
grpc::Status s = stub->CoreCount(&ctx, dummy, &cores);
@@ -166,6 +167,7 @@ namespace runsc {
static ClientContext* AllocContext(list<ClientContext>* contexts) {
contexts->emplace_back();
auto context = &contexts->back();
+ context->set_fail_fast(false);
return context;
}
@@ -435,6 +437,7 @@ void RunQuit() {
CreateChannel(workers[i], InsecureChannelCredentials()));
Void dummy;
grpc::ClientContext ctx;
+ ctx.set_fail_fast(false);
GPR_ASSERT(stub->QuitWorker(&ctx, dummy, &dummy).ok());
}
}
diff --git a/test/cpp/qps/gen_build_yaml.py b/test/cpp/qps/gen_build_yaml.py
index 9d6bf2ab73..6b3329b046 100755
--- a/test/cpp/qps/gen_build_yaml.py
+++ b/test/cpp/qps/gen_build_yaml.py
@@ -43,12 +43,16 @@ sys.path.append(run_tests_root)
import performance.scenario_config as scenario_config
+def _scenario_json_string(scenario_json):
+ return json.dumps(scenario_config.remove_nonproto_fields(scenario_json))
+
print yaml.dump({
'tests': [
{
'name': 'json_run_localhost',
- 'shortname': 'json_run_localhost:%s' % js['name'],
- 'args': ['--scenario_json', pipes.quote(json.dumps(js))],
+ 'shortname': 'json_run_localhost:%s' % scenario_json['name'],
+ 'args': ['--scenario_json',
+ pipes.quote(_scenario_json_string(scenario_json))],
'ci_platforms': ['linux', 'mac', 'posix', 'windows'],
'platforms': ['linux', 'mac', 'posix', 'windows'],
'flaky': False,
@@ -58,6 +62,6 @@ print yaml.dump({
'cpu_cost': 1000.0,
'exclude_configs': []
}
- for js in scenario_config.CXXLanguage().scenarios()
+ for scenario_json in scenario_config.CXXLanguage().scenarios()
]
})
diff --git a/test/cpp/util/metrics_server.cc b/test/cpp/util/metrics_server.cc
index d9b44a6a92..cc6b39b753 100644
--- a/test/cpp/util/metrics_server.cc
+++ b/test/cpp/util/metrics_server.cc
@@ -42,16 +42,26 @@
namespace grpc {
namespace testing {
-Gauge::Gauge(long initial_val) : val_(initial_val) {}
+QpsGauge::QpsGauge()
+ : start_time_(gpr_now(GPR_CLOCK_REALTIME)), num_queries_(0) {}
-void Gauge::Set(long new_val) {
- std::lock_guard<std::mutex> lock(val_mu_);
- val_ = new_val;
+void QpsGauge::Reset() {
+ std::lock_guard<std::mutex> lock(num_queries_mu_);
+ num_queries_ = 0;
+ start_time_ = gpr_now(GPR_CLOCK_REALTIME);
}
-long Gauge::Get() {
- std::lock_guard<std::mutex> lock(val_mu_);
- return val_;
+void QpsGauge::Incr() {
+ std::lock_guard<std::mutex> lock(num_queries_mu_);
+ num_queries_++;
+}
+
+long QpsGauge::Get() {
+ std::lock_guard<std::mutex> lock(num_queries_mu_);
+ gpr_timespec time_diff =
+ gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), start_time_);
+ long duration_secs = time_diff.tv_sec > 0 ? time_diff.tv_sec : 1;
+ return num_queries_ / duration_secs;
}
grpc::Status MetricsServiceImpl::GetAllGauges(
@@ -60,7 +70,7 @@ grpc::Status MetricsServiceImpl::GetAllGauges(
gpr_log(GPR_DEBUG, "GetAllGauges called");
std::lock_guard<std::mutex> lock(mu_);
- for (auto it = gauges_.begin(); it != gauges_.end(); it++) {
+ for (auto it = qps_gauges_.begin(); it != qps_gauges_.end(); it++) {
GaugeResponse resp;
resp.set_name(it->first); // Gauge name
resp.set_long_value(it->second->Get()); // Gauge value
@@ -75,8 +85,8 @@ grpc::Status MetricsServiceImpl::GetGauge(ServerContext* context,
GaugeResponse* response) {
std::lock_guard<std::mutex> lock(mu_);
- const auto it = gauges_.find(request->name());
- if (it != gauges_.end()) {
+ const auto it = qps_gauges_.find(request->name());
+ if (it != qps_gauges_.end()) {
response->set_name(it->first);
response->set_long_value(it->second->Get());
}
@@ -84,16 +94,17 @@ grpc::Status MetricsServiceImpl::GetGauge(ServerContext* context,
return Status::OK;
}
-std::shared_ptr<Gauge> MetricsServiceImpl::CreateGauge(const grpc::string& name,
- bool* already_present) {
+std::shared_ptr<QpsGauge> MetricsServiceImpl::CreateQpsGauge(
+ const grpc::string& name, bool* already_present) {
std::lock_guard<std::mutex> lock(mu_);
- std::shared_ptr<Gauge> gauge(new Gauge(0));
- const auto p = gauges_.emplace(name, gauge);
+ std::shared_ptr<QpsGauge> qps_gauge(new QpsGauge());
+ const auto p = qps_gauges_.emplace(name, qps_gauge);
- // p.first is an iterator pointing to <name, shared_ptr<Gauge>> pair. p.second
- // is a boolean which is set to 'true' if the Gauge is inserted in the guages_
- // map and 'false' if it is already present in the map
+ // p.first is an iterator pointing to <name, shared_ptr<QpsGauge>> pair.
+ // p.second is a boolean which is set to 'true' if the QpsGauge is
+ // successfully inserted in the guages_ map and 'false' if it is already
+ // present in the map
*already_present = !p.second;
return p.first->second;
}
diff --git a/test/cpp/util/metrics_server.h b/test/cpp/util/metrics_server.h
index ce05e0be64..aa9bfed23d 100644
--- a/test/cpp/util/metrics_server.h
+++ b/test/cpp/util/metrics_server.h
@@ -48,10 +48,13 @@
* Example:
* MetricsServiceImpl metricsImpl;
* ..
- * // Create Gauge(s). Note: Gauges can be created even after calling
+ * // Create QpsGauge(s). Note: QpsGauges can be created even after calling
* // 'StartServer'.
- * Gauge gauge1 = metricsImpl.CreateGauge("foo",is_present);
- * // gauge1 can now be used anywhere in the program to set values.
+ * QpsGauge qps_gauge1 = metricsImpl.CreateQpsGauge("foo", is_present);
+ * // qps_gauge1 can now be used anywhere in the program by first making a
+ * // one-time call qps_gauge1.Reset() and then calling qps_gauge1.Incr()
+ * // every time to increment a query counter
+ *
* ...
* // Create the metrics server
* std::unique_ptr<grpc::Server> server = metricsImpl.StartServer(port);
@@ -60,17 +63,24 @@
namespace grpc {
namespace testing {
-// TODO(sreek): Add support for other types of Gauges like Double, String in
-// future
-class Gauge {
+class QpsGauge {
public:
- Gauge(long initial_val);
- void Set(long new_val);
+ QpsGauge();
+
+ // Initialize the internal timer and reset the query count to 0
+ void Reset();
+
+ // Increment the query count by 1
+ void Incr();
+
+ // Return the current qps (i.e query count divided by the time since this
+ // QpsGauge object created (or Reset() was called))
long Get();
private:
- long val_;
- std::mutex val_mu_;
+ gpr_timespec start_time_;
+ long num_queries_;
+ std::mutex num_queries_mu_;
};
class MetricsServiceImpl GRPC_FINAL : public MetricsService::Service {
@@ -81,17 +91,17 @@ class MetricsServiceImpl GRPC_FINAL : public MetricsService::Service {
grpc::Status GetGauge(ServerContext* context, const GaugeRequest* request,
GaugeResponse* response) GRPC_OVERRIDE;
- // Create a Gauge with name 'name'. is_present is set to true if the Gauge
+ // Create a QpsGauge with name 'name'. is_present is set to true if the Gauge
// is already present in the map.
- // NOTE: CreateGauge can be called anytime (i.e before or after calling
+ // NOTE: CreateQpsGauge can be called anytime (i.e before or after calling
// StartServer).
- std::shared_ptr<Gauge> CreateGauge(const grpc::string& name,
- bool* already_present);
+ std::shared_ptr<QpsGauge> CreateQpsGauge(const grpc::string& name,
+ bool* already_present);
std::unique_ptr<grpc::Server> StartServer(int port);
private:
- std::map<string, std::shared_ptr<Gauge>> gauges_;
+ std::map<string, std::shared_ptr<QpsGauge>> qps_gauges_;
std::mutex mu_;
};
diff --git a/test/distrib/csharp/DistribTest/DistribTest.csproj b/test/distrib/csharp/DistribTest/DistribTest.csproj
index 7605495f0f..1acb34d1b2 100644
--- a/test/distrib/csharp/DistribTest/DistribTest.csproj
+++ b/test/distrib/csharp/DistribTest/DistribTest.csproj
@@ -113,12 +113,12 @@
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <Import Project="..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets" Condition="Exists('..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets')" />
+ <Import Project="..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
- <Error Condition="!Exists('..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets'))" />
+ <Error Condition="!Exists('..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets'))" />
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
</Target>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
@@ -129,4 +129,4 @@
<Target Name="AfterBuild">
</Target>
-->
-</Project> \ No newline at end of file
+</Project>
diff --git a/test/distrib/csharp/DistribTest/packages.config b/test/distrib/csharp/DistribTest/packages.config
index aca09f600c..69630193d0 100644
--- a/test/distrib/csharp/DistribTest/packages.config
+++ b/test/distrib/csharp/DistribTest/packages.config
@@ -6,11 +6,10 @@
<package id="Grpc" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
<package id="Grpc.Auth" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
<package id="Grpc.Core" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
- <package id="grpc.native.csharp" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
<package id="Ix-Async" version="1.2.3" targetFramework="net45" />
<package id="Microsoft.Bcl" version="1.1.10" targetFramework="net45" />
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net45" />
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
-</packages> \ No newline at end of file
+</packages>
diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index 79893af8e5..8a983bc248 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -33,8 +33,8 @@ set -ex
cd $(dirname $0)
# Pick up the source dist archive whatever its version is
-SDIST_ARCHIVE=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-*.tar.gz
-BDIST_DIR="file://$EXTERNAL_GIT_ROOT/input_artifacts"
+BDIST_ARCHIVES=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-*.whl
+TOOLS_BDIST_ARCHIVES=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio_tools-*.whl
if [ ! -f ${SDIST_ARCHIVE} ]
then
@@ -42,17 +42,25 @@ then
exit 1
fi
-PIP=pip2
-which $PIP || PIP=pip
PYTHON=python2
+PIP=pip2
which $PYTHON || PYTHON=python
+which $PIP || PIP=pip
# TODO(jtattermusch): this shouldn't be required
-$PIP install --upgrade six
+# TODO(jtattermusch): run the command twice to workaround docker-on-overlay
+# issue https://github.com/docker/docker/issues/12327
+# (first attempt will fail when using docker with overlayFS)
+${PIP} install --upgrade six pip || ${PIP} install --upgrade six pip
-GRPC_PYTHON_BINARIES_REPOSITORY="${BDIST_DIR}" \
- $PIP install \
- ${SDIST_ARCHIVE}
+# At least one of the bdist packages has to succeed (whichever one matches the
+# test machine, anyway).
+for bdist in ${BDIST_ARCHIVES} ${TOOLS_BDIST_ARCHIVES}; do
+ ($PYTHON -m pip install $bdist) || true
+done
-$PYTHON distribtest.py
+# TODO(jtattermusch): add a .proto file to the distribtest, generate python
+# code from it and then use the generated code from distribtest.py
+$PYTHON -m grpc.tools.protoc
+$PYTHON distribtest.py
diff --git a/tools/buildgen/plugins/expand_version.py b/tools/buildgen/plugins/expand_version.py
index dd77f7af12..c6cc5621c9 100755
--- a/tools/buildgen/plugins/expand_version.py
+++ b/tools/buildgen/plugins/expand_version.py
@@ -27,10 +27,10 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Buildgen .proto files list plugin.
+"""Buildgen package version plugin
This parses the list of targets from the yaml build file, and creates
-a list called "protos" that contains all of the proto file names.
+a custom version string for each language's package.
"""
diff --git a/tools/buildgen/plugins/list_api.py b/tools/buildgen/plugins/list_api.py
index ff937a0ab8..1fc4f4123c 100755
--- a/tools/buildgen/plugins/list_api.py
+++ b/tools/buildgen/plugins/list_api.py
@@ -64,12 +64,13 @@ def headers_under(directory):
def mako_plugin(dictionary):
apis = []
+ headers = []
-# for lib in dictionary['libs']:
-# if lib['name'] == 'grpc':
-# apis.extend(list_c_apis(lib['public_headers']))
- apis.extend(list_c_apis(sorted(headers_under('include/grpc'))))
+ for lib in dictionary['libs']:
+ if lib['name'] in ['grpc', 'gpr']:
+ headers.extend(lib['public_headers'])
+ apis.extend(list_c_apis(sorted(set(headers))))
dictionary['c_apis'] = apis
diff --git a/tools/buildgen/plugins/make_fuzzer_tests.py b/tools/buildgen/plugins/make_fuzzer_tests.py
index e8e1bd0aa6..9d0006973a 100644
--- a/tools/buildgen/plugins/make_fuzzer_tests.py
+++ b/tools/buildgen/plugins/make_fuzzer_tests.py
@@ -50,8 +50,8 @@ def mako_plugin(dictionary):
'name': new_target['name'],
'args': [fn],
'exclude_configs': [],
- 'platforms': ['linux', 'mac', 'windows', 'posix'],
- 'ci_platforms': ['linux', 'mac', 'windows', 'posix'],
+ 'platforms': ['linux'],
+ 'ci_platforms': ['linux'],
'flaky': False,
'language': 'c',
'cpu_cost': 0.1,
diff --git a/tools/codegen/core/gen_header_frame.py b/tools/codegen/core/gen_header_frame.py
index 96e6c67fa6..ee476267f2 100755
--- a/tools/codegen/core/gen_header_frame.py
+++ b/tools/codegen/core/gen_header_frame.py
@@ -38,6 +38,8 @@
import json
import sys
+set_end_stream = len(sys.argv) > 1 and sys.argv[1] == '--set_end_stream'
+
# parse input, fill in vals
vals = []
for line in sys.stdin:
@@ -65,6 +67,9 @@ for key, value in vals:
payload_bytes.append(payload_line)
# fill in header
+flags = 0x04 # END_HEADERS
+if set_end_stream:
+ flags |= 0x01 # END_STREAM
payload_bytes[0].extend([
(payload_len >> 16) & 0xff,
(payload_len >> 8) & 0xff,
@@ -72,7 +77,7 @@ payload_bytes[0].extend([
# header frame
0x01,
# flags
- 0x04,
+ flags,
# stream id
0x00,
0x00,
diff --git a/tools/distrib/check_include_guards.py b/tools/distrib/check_include_guards.py
index b1fdb942cd..8207f5cce0 100755
--- a/tools/distrib/check_include_guards.py
+++ b/tools/distrib/check_include_guards.py
@@ -31,6 +31,7 @@
import argparse
import os
+import os.path
import re
import sys
import subprocess
@@ -187,6 +188,8 @@ filename_list = []
try:
filename_list = subprocess.check_output(FILE_LIST_COMMAND,
shell=True).splitlines()
+ # Filter out non-existent files (ie, file removed or renamed)
+ filename_list = (f for f in filename_list if os.path.isfile(f))
except subprocess.CalledProcessError:
sys.exit(0)
diff --git a/tools/distrib/python/bazel_deps.sh b/tools/distrib/python/bazel_deps.sh
new file mode 100755
index 0000000000..de3ee07970
--- /dev/null
+++ b/tools/distrib/python/bazel_deps.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0)/../../../
+
+# First check if bazel is installed on the machine. If it is, then we don't need
+# to invoke the docker bazel.
+if [ "bazel version" ]
+then
+ cd third_party/protobuf
+ bazel query 'deps('$1')'
+else
+ docker build -t bazel `realpath ./tools/dockerfile/bazel/`
+ docker run -v "`realpath .`:/src/grpc/" \
+ -w /src/grpc/third_party/protobuf \
+ bazel \
+ bazel query 'deps('$1')'
+fi
diff --git a/tools/distrib/python/check_grpcio_tools.py b/tools/distrib/python/check_grpcio_tools.py
new file mode 100755
index 0000000000..baf2ff4eff
--- /dev/null
+++ b/tools/distrib/python/check_grpcio_tools.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import cStringIO
+
+import make_grpcio_tools as make
+
+OUT_OF_DATE_MESSAGE = """file {} is out of date
+
+Have you called tools/distrib/python/make_grpcio_tools.py since upgrading protobuf?"""
+
+check_protoc_lib_deps_content = make.get_deps(make.BAZEL_DEPS_PROTOC_LIB_QUERY)
+
+with open(make.GRPC_PYTHON_PROTOC_LIB_DEPS, 'r') as protoc_lib_deps_file:
+ if protoc_lib_deps_file.read() != check_protoc_lib_deps_content:
+ print(OUT_OF_DATE_MESSAGE.format(make.GRPC_PYTHON_PROTOC_LIB_DEPS))
+ raise SystemExit(1)
diff --git a/tools/distrib/python/grpcio_tools/.gitignore b/tools/distrib/python/grpcio_tools/.gitignore
new file mode 100644
index 0000000000..979704d970
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/.gitignore
@@ -0,0 +1,7 @@
+build/
+protobuf/
+grpc_plugin/
+grpc_root/
+*.c
+*.cpp
+*.egg-info
diff --git a/tools/distrib/python/grpcio_tools/MANIFEST.in b/tools/distrib/python/grpcio_tools/MANIFEST.in
new file mode 100644
index 0000000000..7712834d64
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/MANIFEST.in
@@ -0,0 +1,7 @@
+include grpc_version.py
+include protoc_deps.py
+include protoc_lib_deps.py
+include README.rst
+graft grpc
+graft grpc_root
+graft third_party
diff --git a/tools/distrib/python/grpcio_tools/README.rst b/tools/distrib/python/grpcio_tools/README.rst
new file mode 100644
index 0000000000..10d2fe8c30
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/README.rst
@@ -0,0 +1,128 @@
+gRPC Python Tools
+=================
+
+Package for gRPC Python tools.
+
+Installation
+------------
+
+The gRPC Python tools package is available for Linux, Mac OS X, and Windows
+running Python 2.7.
+
+From PyPI
+~~~~~~~~~
+
+If you are installing locally...
+
+::
+
+ $ pip install grpcio-tools
+
+Else system wide (on Ubuntu)...
+
+::
+
+ $ sudo pip install grpcio-tools
+
+If you're on Windows make sure that you installed the :code:`pip.exe` component
+when you installed Python (if not go back and install it!) then invoke:
+
+::
+
+ $ pip.exe install grpcio-tools
+
+Windows users may need to invoke :code:`pip.exe` from a command line ran as
+administrator.
+
+n.b. On Windows and on Mac OS X one *must* have a recent release of :code:`pip`
+to retrieve the proper wheel from PyPI. Be sure to upgrade to the latest
+version!
+
+You might also need to install Cython to handle installation via the source
+distribution if gRPC Python's system coverage with wheels does not happen to
+include your system.
+
+From Source
+~~~~~~~~~~~
+
+Building from source requires that you have the Python headers (usually a
+package named :code:`python-dev`) and Cython installed. It further requires a
+GCC-like compiler to go smoothly; you can probably get it to work without
+GCC-like stuff, but you may end up having a bad time.
+
+::
+
+ $ export REPO_ROOT=grpc # REPO_ROOT can be any directory of your choice
+ $ git clone https://github.com/grpc/grpc.git $REPO_ROOT
+ $ cd $REPO_ROOT
+ $ git submodule update --init
+
+ $ cd tools/distrib/python/grpcio_tools
+ $ python ../make_grpcio_tools.py
+
+ # For the next command do `sudo pip install` if you get permission-denied errors
+ $ pip install .
+
+You cannot currently install Python from source on Windows. Things might work
+out for you in MSYS2 (follow the Linux instructions), but it isn't officially
+supported at the moment.
+
+Troubleshooting
+~~~~~~~~~~~~~~~
+
+Help, I ...
+
+* **... see a** :code:`pkg_resources.VersionConflict` **when I try to install
+ grpc**
+
+ This is likely because :code:`pip` doesn't own the offending dependency,
+ which in turn is likely because your operating system's package manager owns
+ it. You'll need to force the installation of the dependency:
+
+ :code:`pip install --ignore-installed $OFFENDING_DEPENDENCY`
+
+ For example, if you get an error like the following:
+
+ ::
+
+ Traceback (most recent call last):
+ File "<string>", line 17, in <module>
+ ...
+ File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 509, in find
+ raise VersionConflict(dist, req)
+ pkg_resources.VersionConflict: (six 1.8.0 (/usr/lib/python2.7/dist-packages), Requirement.parse('six>=1.10'))
+
+ You can fix it by doing:
+
+ ::
+
+ sudo pip install --ignore-installed six
+
+* **... see compiler errors on some platforms when either installing from source or from the source distribution**
+
+ If you see
+
+ ::
+
+ /tmp/pip-build-U8pSsr/cython/Cython/Plex/Scanners.c:4:20: fatal error: Python.h: No such file or directory
+ #include "Python.h"
+ ^
+ compilation terminated.
+
+ You can fix it by installing `python-dev` package. i.e
+
+ ::
+
+ sudo apt-get install python-dev
+
+ If you see something similar to:
+
+ ::
+
+ third_party/protobuf/src/google/protobuf/stubs/mathlimits.h:173:31: note: in expansion of macro 'SIGNED_INT_MAX'
+ static const Type kPosMax = SIGNED_INT_MAX(Type); \\
+ ^
+ And your toolchain is GCC (at the time of this writing, up through at least
+ GCC 6.0), this is probably a bug where GCC chokes on constant expressions
+ when the :code:`-fwrapv` flag is specified. You should consider setting your
+ environment with :code:`CFLAGS=-fno-wrapv` or using clang (:code:`CC=clang`).
diff --git a/tools/distrib/python/grpcio_tools/grpc/__init__.py b/tools/distrib/python/grpcio_tools/grpc/__init__.py
new file mode 100644
index 0000000000..70ac5edd48
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/grpc/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/src/python/grpcio/tests/unit/framework/face/__init__.py b/tools/distrib/python/grpcio_tools/grpc/tools/__init__.py
index 7086519106..d5ad73a74a 100644
--- a/src/python/grpcio/tests/unit/framework/face/__init__.py
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/__init__.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,4 +27,3 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/tools/distrib/python/grpcio_tools/grpc/tools/main.cc b/tools/distrib/python/grpcio_tools/grpc/tools/main.cc
new file mode 100644
index 0000000000..81675b4e6f
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/main.cc
@@ -0,0 +1,54 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <google/protobuf/compiler/command_line_interface.h>
+#include <google/protobuf/compiler/python/python_generator.h>
+
+#include "src/compiler/python_generator.h"
+
+#include "grpc/tools/main.h"
+
+int protoc_main(int argc, char* argv[]) {
+ google::protobuf::compiler::CommandLineInterface cli;
+ cli.AllowPlugins("protoc-");
+
+ // Proto2 Python
+ google::protobuf::compiler::python::Generator py_generator;
+ cli.RegisterGenerator("--python_out", &py_generator,
+ "Generate Python source file.");
+
+ // gRPC Python
+ grpc_python_generator::GeneratorConfiguration grpc_py_config;
+ grpc_py_config.beta_package_root = "grpc.beta";
+ grpc_python_generator::PythonGrpcGenerator grpc_py_generator(grpc_py_config);
+ cli.RegisterGenerator("--grpc_python_out", &grpc_py_generator,
+ "Generate Python source file.");
+
+ return cli.Run(argc, argv);
+}
diff --git a/src/python/grpcio/tests/interop/empty.proto b/tools/distrib/python/grpcio_tools/grpc/tools/main.h
index 6d0eb937d6..ea2860ff02 100644
--- a/src/python/grpcio/tests/interop/empty.proto
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/main.h
@@ -1,5 +1,4 @@
-
-// Copyright 2015, Google Inc.
+// Copyright 2016, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
@@ -28,16 +27,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-syntax = "proto3";
-
-package grpc.testing;
-// An empty message that you can re-use to avoid defining duplicated empty
-// messages in your project. A typical example is to use it as argument or the
-// return value of a service API. For instance:
-//
-// service Foo {
-// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
-// };
-//
-message Empty {}
+// We declare `protoc_main` here since we want access to it from Cython as an
+// extern but *without* triggering a dllimport declspec when on Windows.
+int protoc_main(int argc, char *argv[]);
diff --git a/src/python/grpcio/grpc/framework/base/_constants.py b/tools/distrib/python/grpcio_tools/grpc/tools/protoc.py
index 8fbdc82782..b4dd0ecae2 100644
--- a/src/python/grpcio/grpc/framework/base/_constants.py
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/protoc.py
@@ -1,4 +1,6 @@
-# Copyright 2015, Google Inc.
+#!/usr/bin/env python
+
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,6 +29,10 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Private constants for the package."""
+import sys
+
+from grpc.tools import protoc_compiler
+
-INTERNAL_ERROR_LOG_MESSAGE = ':-( RPC Framework (Base) internal error! :-('
+if __name__ == '__main__':
+ protoc_compiler.run_main(sys.argv)
diff --git a/src/python/grpcio/grpc/framework/base/__init__.py b/tools/distrib/python/grpcio_tools/grpc/tools/protoc_compiler.pyx
index bff74be2c7..a6530127c0 100644
--- a/src/python/grpcio/grpc/framework/base/__init__.py
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/protoc_compiler.pyx
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,9 +27,13 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import warnings
+from libc cimport stdlib
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
- 'unmaintained, and no longer tested. Please migrate to the beta '
- 'API.', DeprecationWarning, stacklevel=2)
+cdef extern from "grpc/tools/main.h":
+ int protoc_main(int argc, char *argv[])
+
+def run_main(list args not None):
+ cdef char **argv = <char **>stdlib.malloc(len(args)*sizeof(char *))
+ for i in range(len(args)):
+ argv[i] = args[i]
+ return protoc_main(len(args), argv)
diff --git a/src/ruby/bin/grpc_ruby_interop_client b/tools/distrib/python/grpcio_tools/grpc_version.py
index e79fd33aa5..1267d0e45d 100755..100644
--- a/src/ruby/bin/grpc_ruby_interop_client
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env ruby
-
# Copyright 2015, Google Inc.
# All rights reserved.
#
@@ -29,5 +27,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Provides a gem binary entry point for the interop client.
-require 'test/client'
+# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
+
+VERSION='0.15.0.dev0'
diff --git a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
new file mode 100644
index 0000000000..9f31172170
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
@@ -0,0 +1,32 @@
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# AUTO-GENERATED BY make_grpcio_tools.py!
+CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
new file mode 100644
index 0000000000..576f7ae32a
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -0,0 +1,96 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from distutils import extension
+import os
+import os.path
+import shlex
+import sys
+
+import setuptools
+from setuptools.command import build_ext
+
+# TODO(atash) add flag to disable Cython use
+
+os.chdir(os.path.dirname(os.path.abspath(__file__)))
+sys.path.insert(0, os.path.abspath('.'))
+
+# There are some situations (like on Windows) where CC, CFLAGS, and LDFLAGS are
+# entirely ignored/dropped/forgotten by distutils and its Cygwin/MinGW support.
+# We use these environment variables to thus get around that without locking
+# ourselves in w.r.t. the multitude of operating systems this ought to build on.
+# By default we assume a GCC-like compiler.
+EXTRA_COMPILE_ARGS = shlex.split(os.environ.get('GRPC_PYTHON_CFLAGS',
+ '-frtti -std=c++11'))
+EXTRA_LINK_ARGS = shlex.split(os.environ.get('GRPC_PYTHON_LDFLAGS',
+ '-lpthread'))
+
+import protoc_lib_deps
+import grpc_version
+
+def protoc_ext_module():
+ plugin_sources = [
+ 'grpc/tools/main.cc',
+ 'grpc_root/src/compiler/python_generator.cc'] + [
+ os.path.join('third_party/protobuf/src', cc_file)
+ for cc_file in protoc_lib_deps.CC_FILES]
+ plugin_ext = extension.Extension(
+ name='grpc.tools.protoc_compiler',
+ sources=['grpc/tools/protoc_compiler.pyx'] + plugin_sources,
+ include_dirs=[
+ '.',
+ 'grpc_root',
+ 'grpc_root/include',
+ 'third_party/protobuf/src',
+ ],
+ language='c++',
+ define_macros=[('HAVE_PTHREAD', 1)],
+ extra_compile_args=EXTRA_COMPILE_ARGS,
+ extra_link_args=EXTRA_LINK_ARGS,
+ )
+ return plugin_ext
+
+def maybe_cythonize(exts):
+ from Cython import Build
+ return Build.cythonize(exts)
+
+setuptools.setup(
+ name='grpcio_tools',
+ version=grpc_version.VERSION,
+ license='3-clause BSD',
+ ext_modules=maybe_cythonize([
+ protoc_ext_module(),
+ ]),
+ packages=setuptools.find_packages('.'),
+ # TODO(atash): Figure out why auditwheel doesn't like namespace packages.
+ #namespace_packages=['grpc'],
+ install_requires=[
+ 'protobuf>=3.0.0a3',
+ ],
+)
diff --git a/tools/distrib/python/make_grpcio_tools.py b/tools/distrib/python/make_grpcio_tools.py
new file mode 100755
index 0000000000..50fbdbb14c
--- /dev/null
+++ b/tools/distrib/python/make_grpcio_tools.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import os.path
+import shutil
+import subprocess
+import sys
+import traceback
+
+DEPS_FILE_CONTENT="""
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# AUTO-GENERATED BY make_grpcio_tools.py!
+CC_FILES={}
+"""
+
+# Bazel query result prefix for expected source files in protobuf.
+PROTOBUF_CC_PREFIX = '//:src/'
+
+GRPC_ROOT = os.path.abspath(
+ os.path.join(os.path.dirname(os.path.abspath(__file__)),
+ '..', '..', '..'))
+
+GRPC_PYTHON_ROOT = os.path.join(GRPC_ROOT, 'tools/distrib/python/grpcio_tools')
+
+GRPC_PROTOBUF = os.path.join(GRPC_ROOT, 'third_party/protobuf/src')
+GRPC_PROTOC_PLUGINS = os.path.join(GRPC_ROOT, 'src/compiler')
+GRPC_PYTHON_PROTOBUF = os.path.join(GRPC_PYTHON_ROOT,
+ 'third_party/protobuf/src')
+GRPC_PYTHON_PROTOC_PLUGINS = os.path.join(GRPC_PYTHON_ROOT,
+ 'grpc_root/src/compiler')
+GRPC_PYTHON_PROTOC_LIB_DEPS = os.path.join(GRPC_PYTHON_ROOT,
+ 'protoc_lib_deps.py')
+
+GRPC_INCLUDE = os.path.join(GRPC_ROOT, 'include')
+GRPC_PYTHON_INCLUDE = os.path.join(GRPC_PYTHON_ROOT, 'grpc_root/include')
+
+BAZEL_DEPS = os.path.join(GRPC_ROOT, 'tools/distrib/python/bazel_deps.sh')
+BAZEL_DEPS_PROTOC_LIB_QUERY = '//:protoc_lib'
+
+
+def get_deps(query):
+ """Write the result of the bazel query `query` against protobuf to
+ `out_file`."""
+ output = subprocess.check_output([BAZEL_DEPS, query])
+ output = output.splitlines()
+ cc_files = [
+ name for name in output
+ if name.endswith('.cc') and name.startswith(PROTOBUF_CC_PREFIX)]
+ cc_files = [cc_file[len(PROTOBUF_CC_PREFIX):] for cc_file in cc_files]
+ deps_file_content = DEPS_FILE_CONTENT.format(cc_files)
+ return deps_file_content
+
+
+def main():
+ os.chdir(GRPC_ROOT)
+
+ for tree in [GRPC_PYTHON_PROTOBUF,
+ GRPC_PYTHON_PROTOC_PLUGINS,
+ GRPC_PYTHON_INCLUDE]:
+ try:
+ shutil.rmtree(tree)
+ except Exception as _:
+ pass
+ shutil.copytree(GRPC_PROTOBUF, GRPC_PYTHON_PROTOBUF)
+ shutil.copytree(GRPC_PROTOC_PLUGINS, GRPC_PYTHON_PROTOC_PLUGINS)
+ shutil.copytree(GRPC_INCLUDE, GRPC_PYTHON_INCLUDE)
+
+ try:
+ protoc_lib_deps_content = get_deps(BAZEL_DEPS_PROTOC_LIB_QUERY)
+ except Exception as error:
+ # We allow this script to succeed even if we couldn't get the dependencies,
+ # as then we can assume that even without a successful bazel run the
+ # dependencies currently in source control are 'good enough'.
+ sys.stderr.write("Got non-fatal error:\n")
+ traceback.print_exc(file=sys.stderr)
+ return
+ # If we successfully got the dependencies, truncate and rewrite the deps file.
+ with open(GRPC_PYTHON_PROTOC_LIB_DEPS, 'w') as deps_file:
+ deps_file.write(protoc_lib_deps_content)
+
+if __name__ == '__main__':
+ main()
+
diff --git a/tools/dockerfile/bazel/Dockerfile b/tools/dockerfile/bazel/Dockerfile
new file mode 100644
index 0000000000..2a80a4d4d5
--- /dev/null
+++ b/tools/dockerfile/bazel/Dockerfile
@@ -0,0 +1,52 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM ubuntu:wily
+RUN apt-get update
+RUN apt-get -y install software-properties-common python-software-properties
+RUN add-apt-repository ppa:webupd8team/java
+RUN apt-get update
+RUN apt-get -y install \
+ vim \
+ wget \
+ openjdk-8-jdk \
+ pkg-config \
+ zip \
+ g++ \
+ zlib1g-dev \
+ unzip \
+ git
+
+RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+RUN cd /bazel && ./compile.sh
+
+RUN ln -s /bazel/output/bazel /bin/
+
+# ensure the installation has been extracted
+RUN bazel
diff --git a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
index d048b725c8..4ae4ebdb06 100644
--- a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
@@ -31,12 +31,15 @@
FROM debian:jessie
+RUN apt-get update && apt-get install debian-keyring && apt-key update
+
# Install Git and basic packages.
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-key update && apt-get install -y \
autoconf \
autotools-dev \
build-essential \
bzip2 \
+ clang \
curl \
gcc \
gcc-multilib \
diff --git a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
index 46bc9f8f52..9c2fd52eee 100644
--- a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
@@ -31,12 +31,15 @@
FROM 32bit/debian:jessie
+RUN apt-get update && apt-get install debian-keyring && apt-key update
+
# Install Git and basic packages.
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-key update && apt-get install -y \
autoconf \
autotools-dev \
build-essential \
bzip2 \
+ clang \
curl \
gcc \
gcc-multilib \
diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
new file mode 100644
index 0000000000..3e31a2b623
--- /dev/null
+++ b/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
@@ -0,0 +1,43 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Docker file for building gRPC manylinux Python artifacts.
+
+FROM quay.io/pypa/manylinux1_x86_64
+
+# Update the package manager
+RUN yum update -y
+
+###################################
+# Install Python build requirements
+RUN /opt/python/cp27-cp27m/bin/pip install cython
+RUN /opt/python/cp27-cp27mu/bin/pip install cython
+RUN /opt/python/cp34-cp34m/bin/pip install cython
+RUN /opt/python/cp35-cp35m/bin/pip install cython
+
diff --git a/src/python/grpcio/grpc/framework/alpha/exceptions.py b/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
index 09359c5e94..5fe62c28b7 100644
--- a/src/python/grpcio/grpc/framework/alpha/exceptions.py
+++ b/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,21 +27,17 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Exceptions raised by GRPC.
+# Docker file for building gRPC manylinux Python artifacts.
-Only GRPC should instantiate and raise these exceptions.
-"""
-import abc
+FROM quay.io/pypa/manylinux1_i686
-import six
+# Update the package manager
+RUN yum update -y
-class RpcError(six.with_metaclass(abc.ABCMeta, Exception)):
- """Common super type for all exceptions raised by GRPC."""
+###################################
+# Install Python build requirements
+RUN /opt/python/cp27-cp27m/bin/pip install cython
+RUN /opt/python/cp27-cp27mu/bin/pip install cython
+RUN /opt/python/cp34-cp34m/bin/pip install cython
+RUN /opt/python/cp35-cp35m/bin/pip install cython
-
-class CancellationError(RpcError):
- """Indicates that an RPC has been cancelled."""
-
-
-class ExpirationError(RpcError):
- """Indicates that an RPC has expired ("timed out")."""
diff --git a/tools/dockerfile/grpc_base/Dockerfile b/tools/dockerfile/grpc_base/Dockerfile
deleted file mode 100644
index 91862773d5..0000000000
--- a/tools/dockerfile/grpc_base/Dockerfile
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Base Dockerfile for gRPC dev images
-FROM debian:latest
-
-# Install Git.
-RUN apt-get update && apt-get install -y \
- autoconf \
- autotools-dev \
- build-essential \
- bzip2 \
- curl \
- gcc \
- git \
- libc6 \
- libc6-dbg \
- libc6-dev \
- libgtest-dev \
- libtool \
- make \
- strace \
- python-dev \
- python-setuptools \
- telnet \
- unzip \
- wget \
- zip && apt-get clean
-
-# Install useful useful python modules
-RUN easy_install -U pip
-RUN pip install -U crcmod # makes downloads from cloud storage faster
-
-# Install GCloud
-RUN wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.zip \
- && unzip google-cloud-sdk.zip && rm google-cloud-sdk.zip
-ENV CLOUD_SDK /google-cloud-sdk
-RUN $CLOUD_SDK/install.sh --usage-reporting=true --path-update=true --bash-completion=true --rc-path=/.bashrc --disable-installation-options
-ENV PATH $CLOUD_SDK/bin:$PATH
-
-# Define the default command.
-CMD ["bash"]
diff --git a/tools/dockerfile/grpc_base/README.md b/tools/dockerfile/grpc_base/README.md
deleted file mode 100644
index 5c81b02425..0000000000
--- a/tools/dockerfile/grpc_base/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Base GRPC Dockerfile
-====================
-
-Dockerfile for creating the base gRPC development Docker instance.
-For now, this assumes that the development will be done on GCE instances,
-with source code on GitHub.
-
-As of 2015/02/02, it includes
-- git
-- some useful tools like curl, emacs, strace, telnet etc
-- a patched version of protoc, to allow protos with stream tags to work
diff --git a/tools/dockerfile/grpc_linuxbrew/Dockerfile b/tools/dockerfile/grpc_linuxbrew/Dockerfile
deleted file mode 100644
index 848489e091..0000000000
--- a/tools/dockerfile/grpc_linuxbrew/Dockerfile
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# A work-in-progress Dockerfile that allows running gRPC homebrew
-# installations inside docker containers
-FROM debian:jessie
-
-# Core dependencies
-RUN apt-get update && apt-get install -y \
- bzip2 curl git ruby wget
-
-# Install linuxbrew
-ENV PATH /home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH
-RUN git clone https://github.com/Homebrew/linuxbrew.git /home/linuxbrew/.linuxbrew
-RUN brew doctor || true
-
-# Python dependency
-RUN apt-get update && apt-get install -y python-dev
-RUN curl https://bootstrap.pypa.io/get-pip.py | python
-
-# NodeJS dependency
-RUN touch .profile
-RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
-RUN /bin/bash -l -c "nvm install 0.12"
-
-# Ruby dependency
-RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
-RUN /bin/bash -l -c "\curl -sSL https://get.rvm.io | bash -s stable"
-RUN /bin/bash -l -c "rvm install ruby-2.1"
-
-# PHP dependency
-RUN apt-get update && apt-get install -y php5 php5-dev php-pear phpunit unzip
-
-RUN /bin/bash -l -c "echo 'export PATH=/home/linuxbrew/.linuxbrew/bin:\$PATH' >> ~/.bashrc"
-
-CMD ["bash"]
diff --git a/tools/dockerfile/grpc_interop_csharp/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
index 93cd25010e..baab2f5638 100644
--- a/tools/dockerfile/grpc_interop_csharp/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
@@ -27,12 +27,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
FROM debian:jessie
-# Install Git.
+# Install Git and basic packages.
RUN apt-get update && apt-get install -y \
autoconf \
autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
+ golang \
gyp \
+ lcov \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
libtool \
make \
+ perl \
strace \
python-dev \
python-setuptools \
@@ -59,15 +59,11 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
-# Prepare ccache
-RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
-RUN ln -s /usr/bin/ccache /usr/local/bin/g++
-RUN ln -s /usr/bin/ccache /usr/local/bin/cc
-RUN ln -s /usr/bin/ccache /usr/local/bin/c++
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
-#################
+#================
# C# dependencies
# Update to a newer version of mono
@@ -84,5 +80,20 @@ RUN apt-get update && apt-get -y dist-upgrade && apt-get install -y \
nuget \
&& apt-get clean
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/grpc_interop_csharp/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_csharp/build_interop.sh
index fd5436c44f..fd5436c44f 100755
--- a/tools/dockerfile/grpc_interop_csharp/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_csharp/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_cxx/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
index 1fa1907533..2bbccca9e5 100644
--- a/tools/dockerfile/grpc_interop_cxx/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
@@ -27,12 +27,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
FROM debian:jessie
-# Install Git.
+# Install Git and basic packages.
RUN apt-get update && apt-get install -y \
autoconf \
autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
+ golang \
gyp \
+ lcov \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
libtool \
make \
+ perl \
strace \
python-dev \
python-setuptools \
@@ -59,6 +59,14 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
RUN ln -s /usr/bin/ccache /usr/local/bin/g++
@@ -67,9 +75,12 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++
RUN ln -s /usr/bin/ccache /usr/local/bin/clang
RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
-##################
-# C++ dependencies
-RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/grpc_interop_cxx/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_cxx/build_interop.sh
index 1c0828d23a..1c0828d23a 100755
--- a/tools/dockerfile/grpc_interop_cxx/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_cxx/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_go/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile
index ec71a53c2d..ec71a53c2d 100644
--- a/tools/dockerfile/grpc_interop_go/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_go/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_go/build_interop.sh
index e891549342..e891549342 100755
--- a/tools/dockerfile/grpc_interop_go/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_go/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_http2/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
index ec71a53c2d..ec71a53c2d 100644
--- a/tools/dockerfile/grpc_interop_http2/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_http2/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_http2/build_interop.sh
index 46ddaf929a..46ddaf929a 100755
--- a/tools/dockerfile/grpc_interop_http2/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_http2/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_java/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
index 370657b651..252c9bc928 100644
--- a/tools/dockerfile/grpc_interop_java/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
@@ -31,23 +31,23 @@ FROM debian:jessie
# Install JDK 8 and Git
#
-# TODO(temiola): simplify this if/when a simpler process is available.
-#
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \
- apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \
- apt-get update && \
- apt-get -y install \
+ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
+
+RUN apt-get update && apt-get -y install \
git \
libapr1 \
oracle-java8-installer \
&& \
- apt-get clean && rm -r /var/cache/oracle-jdk8-installer/
+ apt-get clean && rm -r /var/cache/oracle-jdk8-installer/
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
ENV PATH $PATH:$JAVA_HOME/bin
+
+
# Trigger download of as many Gradle artifacts as possible.
RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git && \
cd grpc-java && \
diff --git a/tools/dockerfile/grpc_interop_java/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_java/build_interop.sh
index 9997c63308..9997c63308 100755
--- a/tools/dockerfile/grpc_interop_java/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_java/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_node/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
index db5aff844d..2a8d35a5dc 100644
--- a/tools/dockerfile/grpc_interop_node/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
@@ -27,12 +27,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
FROM debian:jessie
-# Install Git.
+# Install Git and basic packages.
RUN apt-get update && apt-get install -y \
autoconf \
autotools-dev \
@@ -43,14 +40,16 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
+ golang \
gyp \
+ lcov \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
- libssl-dev \
libtool \
make \
+ perl \
strace \
python-dev \
python-setuptools \
@@ -60,6 +59,21 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#==================
+# Node dependencies
+
+# Install nvm
+RUN touch .profile
+RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
+RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
RUN ln -s /usr/bin/ccache /usr/local/bin/g++
@@ -68,13 +82,12 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++
RUN ln -s /usr/bin/ccache /usr/local/bin/clang
RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
-##################
-# Node dependencies
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
-# Install nvm
-RUN touch .profile
-RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
-RUN /bin/bash -l -c "nvm install 0.12"
+RUN mkdir /var/local/jenkins
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/grpc_interop_node/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
index 4d4290d0b4..976f55d9ab 100755
--- a/tools/dockerfile/grpc_interop_node/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
@@ -38,10 +38,6 @@ git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
cp -r /var/local/jenkins/service_account $HOME || true
cd /var/local/git/grpc
-nvm use 0.12
-nvm alias default 0.12 # prevent the need to run 'nvm use' in every shell
-
-make install-certs
# build Node interop client & server
npm install -g node-gyp
diff --git a/tools/dockerfile/grpc_interop_php/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
index cf3e79176a..e27a6a2301 100644
--- a/tools/dockerfile/grpc_interop_php/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
@@ -27,12 +27,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
FROM debian:jessie
-# Install Git.
+# Install Git and basic packages.
RUN apt-get update && apt-get install -y \
autoconf \
autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
+ golang \
gyp \
+ lcov \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
libtool \
make \
+ perl \
strace \
python-dev \
python-setuptools \
@@ -59,15 +59,11 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
-# Prepare ccache
-RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
-RUN ln -s /usr/bin/ccache /usr/local/bin/g++
-RUN ln -s /usr/bin/ccache /usr/local/bin/cc
-RUN ln -s /usr/bin/ccache /usr/local/bin/c++
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
-##################
+#==================
# Ruby dependencies
# Install rvm
@@ -82,14 +78,35 @@ RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
-##################
+#=================
# PHP dependencies
# Install dependencies
+RUN /bin/bash -l -c "echo 'deb http://packages.dotdeb.org wheezy-php55 all' \
+ >> /etc/apt/sources.list.d/dotdeb.list"
+RUN /bin/bash -l -c "echo 'deb-src http://packages.dotdeb.org wheezy-php55 all' \
+ >> /etc/apt/sources.list.d/dotdeb.list"
+RUN wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add -
+
RUN apt-get update && apt-get install -y \
git php5 php5-dev phpunit unzip
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
# ronn: a ruby tool used to convert markdown to man pages, used during the
# install of Protobuf extensions
#
diff --git a/tools/dockerfile/grpc_interop_php/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_php/build_interop.sh
index 87262f1d62..87262f1d62 100755
--- a/tools/dockerfile/grpc_interop_php/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_php/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_python/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
index 047604b1b7..071fb2c93b 100644
--- a/tools/dockerfile/grpc_interop_python/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
@@ -27,12 +27,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
FROM debian:jessie
-# Install Git.
+# Install Git and basic packages.
RUN apt-get update && apt-get install -y \
autoconf \
autotools-dev \
@@ -43,17 +40,18 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
+ golang \
gyp \
+ lcov \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
- libssl-dev \
libtool \
make \
+ perl \
strace \
python-dev \
- python-pip \
python-setuptools \
python-yaml \
telnet \
@@ -61,6 +59,25 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#====================
+# Python dependencies
+
+# Install dependencies
+
+RUN apt-get update && apt-get install -y \
+ python-all-dev \
+ python3-all-dev \
+ python-pip
+
+# Install Python packages from PyPI
+RUN pip install pip --upgrade
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 tox
+
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
RUN ln -s /usr/bin/ccache /usr/local/bin/g++
@@ -69,14 +86,12 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++
RUN ln -s /usr/bin/ccache /usr/local/bin/clang
RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
-#####################
-# Python dependencies
-
-# Install Python requisites
-RUN /bin/bash -l -c "pip install --upgrade pip"
-RUN /bin/bash -l -c "pip install virtualenv"
-RUN /bin/bash -l -c "pip install tox"
+RUN mkdir /var/local/jenkins
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/grpc_interop_python/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_python/build_interop.sh
index 6454a4f5e2..f29c59da8e 100755
--- a/tools/dockerfile/grpc_interop_python/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_python/build_interop.sh
@@ -39,8 +39,4 @@ cp -r /var/local/jenkins/service_account $HOME || true
cd /var/local/git/grpc
-make
-
-# build Python interop client and server
-CONFIG=opt ./tools/run_tests/build_python.sh
-
+tools/run_tests/run_tests.py -l python -c opt --build_only
diff --git a/tools/dockerfile/grpc_interop_ruby/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
index ff201fa291..df8eef5438 100644
--- a/tools/dockerfile/grpc_interop_ruby/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
@@ -27,12 +27,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
FROM debian:jessie
-# Install Git.
+# Install Git and basic packages.
RUN apt-get update && apt-get install -y \
autoconf \
autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
+ golang \
gyp \
+ lcov \
libc6 \
libc6-dbg \
libc6-dev \
libgtest-dev \
libtool \
make \
+ perl \
strace \
python-dev \
python-setuptools \
@@ -59,16 +59,11 @@ RUN apt-get update && apt-get install -y \
wget \
zip && apt-get clean
-# Prepare ccache
-RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
-RUN ln -s /usr/bin/ccache /usr/local/bin/g++
-RUN ln -s /usr/bin/ccache /usr/local/bin/cc
-RUN ln -s /usr/bin/ccache /usr/local/bin/c++
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
-
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
-##################
+#==================
# Ruby dependencies
# Install rvm
@@ -83,5 +78,20 @@ RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/grpc_interop_ruby/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh
index 685397bac2..97b3860f98 100755
--- a/tools/dockerfile/grpc_interop_ruby/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh
@@ -40,7 +40,5 @@ cp -r /var/local/jenkins/service_account $HOME || true
cd /var/local/git/grpc
rvm --default use ruby-2.1
-make install-certs
-
# build Ruby interop client and server
(cd src/ruby && gem update bundler && bundle && rake compile)
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile
new file mode 100644
index 0000000000..823fe948fb
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile
@@ -0,0 +1,101 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM debian:jessie
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+ autoconf \
+ autotools-dev \
+ build-essential \
+ bzip2 \
+ ccache \
+ curl \
+ gcc \
+ gcc-multilib \
+ git \
+ golang \
+ gyp \
+ lcov \
+ libc6 \
+ libc6-dbg \
+ libc6-dev \
+ libgtest-dev \
+ libtool \
+ make \
+ perl \
+ strace \
+ python-dev \
+ python-setuptools \
+ python-yaml \
+ telnet \
+ unzip \
+ wget \
+ zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Google Cloud platform API libraries
+RUN apt-get update && apt-get install -y python-pip && apt-get clean
+RUN pip install --upgrade google-api-python-client
+
+
+#================
+# C# dependencies
+
+# Update to a newer version of mono
+RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+
+# Install dependencies
+RUN apt-get update && apt-get -y dist-upgrade && apt-get install -y \
+ mono-devel \
+ ca-certificates-mono \
+ nuget \
+ && apt-get clean
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh
new file mode 100755
index 0000000000..1f4bf893cc
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Builds C# interop server and client in a base image.
+set -e
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+# Copy service account keys if available
+cp -r /var/local/jenkins/service_account $HOME || true
+
+cd /var/local/git/grpc
+
+# Build C++ metrics client (to query the metrics from csharp stress client)
+make metrics_client -j
+
+# Build C# interop client & server
+tools/run_tests/run_tests.py -l csharp -c dbg --build_only
+
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile
index f70add4e31..4fd7cc29a3 100644
--- a/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile
@@ -69,8 +69,11 @@ RUN apt-get update && apt-get install -y time && apt-get clean
# Install nvm
RUN touch .profile
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
# Google Cloud platform API libraries
RUN apt-get update && apt-get install -y python-pip && apt-get clean
RUN pip install --upgrade google-api-python-client
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh
index b99fd444ee..976f55d9ab 100755
--- a/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh
@@ -38,8 +38,6 @@ git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
cp -r /var/local/jenkins/service_account $HOME || true
cd /var/local/git/grpc
-nvm use 0.12
-nvm alias default 0.12 # prevent the need to run 'nvm use' in every shell
# build Node interop client & server
npm install -g node-gyp
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile
new file mode 100644
index 0000000000..606b765457
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile
@@ -0,0 +1,103 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM debian:jessie
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+ autoconf \
+ autotools-dev \
+ build-essential \
+ bzip2 \
+ ccache \
+ curl \
+ gcc \
+ gcc-multilib \
+ git \
+ golang \
+ gyp \
+ lcov \
+ libc6 \
+ libc6-dbg \
+ libc6-dev \
+ libgtest-dev \
+ libtool \
+ make \
+ perl \
+ strace \
+ python-dev \
+ python-setuptools \
+ python-yaml \
+ telnet \
+ unzip \
+ wget \
+ zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Google Cloud platform API libraries
+RUN apt-get update && apt-get install -y python-pip && apt-get clean
+RUN pip install --upgrade google-api-python-client
+
+
+#====================
+# Python dependencies
+
+# Install dependencies
+
+RUN apt-get update && apt-get install -y \
+ python-all-dev \
+ python3-all-dev \
+ python-pip
+
+# Install Python packages from PyPI
+RUN pip install pip --upgrade
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 tox
+
+
+RUN pip install coverage
+RUN pip install oauth2client
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh
new file mode 100755
index 0000000000..e65332f2f3
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Builds Python interop server and client in a base image.
+set -e
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+# copy service account keys if available
+cp -r /var/local/jenkins/service_account $HOME || true
+
+cd /var/local/git/grpc
+
+tools/run_tests/run_tests.py -l python -c opt --build_only
+
+# Build c++ interop client
+make metrics_client -j
+
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile
new file mode 100644
index 0000000000..36b54ddafe
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile
@@ -0,0 +1,99 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM debian:jessie
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+ autoconf \
+ autotools-dev \
+ build-essential \
+ bzip2 \
+ ccache \
+ curl \
+ gcc \
+ gcc-multilib \
+ git \
+ golang \
+ gyp \
+ lcov \
+ libc6 \
+ libc6-dbg \
+ libc6-dev \
+ libgtest-dev \
+ libtool \
+ make \
+ perl \
+ strace \
+ python-dev \
+ python-setuptools \
+ python-yaml \
+ telnet \
+ unzip \
+ wget \
+ zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Google Cloud platform API libraries
+RUN apt-get update && apt-get install -y python-pip && apt-get clean
+RUN pip install --upgrade google-api-python-client
+
+
+#==================
+# Ruby dependencies
+
+# Install rvm
+RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
+RUN \curl -sSL https://get.rvm.io | bash -s stable
+
+# Install Ruby 2.1
+RUN /bin/bash -l -c "rvm install ruby-2.1"
+RUN /bin/bash -l -c "rvm use --default ruby-2.1"
+RUN /bin/bash -l -c "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
+RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
+RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
+RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh
new file mode 100755
index 0000000000..1b7567d87a
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Builds Ruby interop server and client in a base image.
+set -e
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+# Copy service account keys if available
+cp -r /var/local/jenkins/service_account $HOME || true
+
+cd /var/local/git/grpc
+rvm --default use ruby-2.1
+
+# Build Ruby interop client and server
+(cd src/ruby && gem update bundler && bundle && rake compile)
+
+# Build c++ metrics client to query the metrics from ruby stress client
+make metrics_client -j
+
diff --git a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
index 71ebf2bf71..5c3f77405e 100644
--- a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
+++ b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
@@ -90,8 +90,11 @@ RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev c
# Install nvm
RUN touch .profile
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
#=================
# PHP dependencies
diff --git a/tools/dockerfile/test/node_jessie_x64/Dockerfile b/tools/dockerfile/test/node_jessie_x64/Dockerfile
index 64314f8864..2a8d35a5dc 100644
--- a/tools/dockerfile/test/node_jessie_x64/Dockerfile
+++ b/tools/dockerfile/test/node_jessie_x64/Dockerfile
@@ -69,8 +69,11 @@ RUN apt-get update && apt-get install -y time && apt-get clean
# Install nvm
RUN touch .profile
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
RUN ln -s /usr/bin/ccache /usr/local/bin/g++
diff --git a/tools/dockerfile/test/sanity/Dockerfile b/tools/dockerfile/test/sanity/Dockerfile
index 3146a922b7..43b2a0c3d9 100644
--- a/tools/dockerfile/test/sanity/Dockerfile
+++ b/tools/dockerfile/test/sanity/Dockerfile
@@ -75,6 +75,15 @@ RUN apt-get update && apt-get install -y \
python-lxml
RUN pip install simplejson mako
+#======================================
+# More sanity test dependencies (bazel)
+RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list
+RUN apt-get update
+RUN apt-get -t jessie-backports install -y openjdk-8-jdk
+RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+RUN cd /bazel && ./compile.sh
+RUN ln -s /bazel/output/bazel /bin/
+
#===================
# Docker "inception"
# Note this is quite the ugly hack.
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 7dc0496047..2a319db979 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 0.14.0-dev
+PROJECT_NUMBER = 0.15.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -833,6 +833,7 @@ include/grpc++/impl/codegen/sync_no_cxx11.h \
include/grpc++/impl/codegen/sync_stream.h \
include/grpc++/impl/codegen/time.h \
include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 312fd17cb2..5fdfafbf3e 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 0.14.0-dev
+PROJECT_NUMBER = 0.15.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -833,6 +833,7 @@ include/grpc++/impl/codegen/sync_no_cxx11.h \
include/grpc++/impl/codegen/sync_stream.h \
include/grpc++/impl/codegen/time.h \
include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 034d9c6e6f..eed84252cc 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Core"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 0.14.0-dev
+PROJECT_NUMBER = 0.15.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -766,6 +766,7 @@ include/grpc/compression.h \
include/grpc/grpc.h \
include/grpc/status.h \
include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index ebf573d3b2..7e0d5ebd37 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Core"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 0.14.0-dev
+PROJECT_NUMBER = 0.15.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -766,6 +766,7 @@ include/grpc/compression.h \
include/grpc/grpc.h \
include/grpc/status.h \
include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
include/grpc/impl/codegen/compression_types.h \
include/grpc/impl/codegen/connectivity_state.h \
include/grpc/impl/codegen/grpc_types.h \
@@ -1170,6 +1171,7 @@ src/core/lib/support/slice_buffer.c \
src/core/lib/support/stack_lockfree.c \
src/core/lib/support/string.c \
src/core/lib/support/string_posix.c \
+src/core/lib/support/string_util_win32.c \
src/core/lib/support/string_win32.c \
src/core/lib/support/subprocess_posix.c \
src/core/lib/support/subprocess_windows.c \
@@ -1184,6 +1186,7 @@ src/core/lib/support/time_posix.c \
src/core/lib/support/time_precise.c \
src/core/lib/support/time_win32.c \
src/core/lib/support/tls_pthread.c \
+src/core/lib/support/tmpfile_msys.c \
src/core/lib/support/tmpfile_posix.c \
src/core/lib/support/tmpfile_win32.c \
src/core/lib/support/wrap_memcpy.c
diff --git a/tools/fuzzer/runners/api_fuzzer.sh b/tools/fuzzer/runners/api_fuzzer.sh
new file mode 100644
index 0000000000..d1c1e7da0d
--- /dev/null
+++ b/tools/fuzzer/runners/api_fuzzer.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
+
+flags="$flags -dict=test/core/end2end/fuzzers/api_fuzzer.dictionary"
+
+if [ "$jobs" != "1" ]
+then
+ flags="-jobs=$jobs -workers=$jobs $flags"
+fi
+
+if [ "$config" == "asan-trace-cmp" ]
+then
+ flags="-use_traces=1 $flags"
+fi
+
+bins/$config/api_fuzzer $flags fuzzer_output test/core/end2end/fuzzers/api_fuzzer_corpus
diff --git a/tools/fuzzer/runners/client_fuzzer.sh b/tools/fuzzer/runners/client_fuzzer.sh
index 39bdbc8d8a..df03e2705c 100644
--- a/tools/fuzzer/runners/client_fuzzer.sh
+++ b/tools/fuzzer/runners/client_fuzzer.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
diff --git a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
index 0cc468eeb7..e49c082835 100644
--- a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
+++ b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512 -timeout=120"
flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
diff --git a/tools/fuzzer/runners/http_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh
index a86d765509..d8dde1491e 100644
--- a/tools/fuzzer/runners/http_fuzzer_test.sh
+++ b/tools/fuzzer/runners/http_fuzzer_test.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/json_fuzzer_test.sh b/tools/fuzzer/runners/json_fuzzer_test.sh
index 9d38ed8d55..9eaef87e4e 100644
--- a/tools/fuzzer/runners/json_fuzzer_test.sh
+++ b/tools/fuzzer/runners/json_fuzzer_test.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512 -timeout=120"
if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh b/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
index b55d23b165..9db425bdcf 100644
--- a/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
+++ b/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128 -timeout=120"
if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh b/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
index a75aad6f36..33cfe67221 100644
--- a/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
+++ b/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128 -timeout=120"
if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/server_fuzzer.sh b/tools/fuzzer/runners/server_fuzzer.sh
index 9d1d9dc17d..337307a4d2 100644
--- a/tools/fuzzer/runners/server_fuzzer.sh
+++ b/tools/fuzzer/runners/server_fuzzer.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
diff --git a/tools/fuzzer/runners/uri_fuzzer_test.sh b/tools/fuzzer/runners/uri_fuzzer_test.sh
index 8890a2b86a..84d63bf414 100644
--- a/tools/fuzzer/runners/uri_fuzzer_test.sh
+++ b/tools/fuzzer/runners/uri_fuzzer_test.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128 -timeout=120"
if [ "$jobs" != "1" ]
diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index 478e04ef37..df29581e69 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -83,16 +83,21 @@ sudo apt-get install -y libgflags-dev libgtest-dev libc++-dev clang
# Python dependencies
sudo pip install tabulate
sudo pip install google-api-python-client
+sudo pip install tox
curl -O https://bootstrap.pypa.io/get-pip.py
sudo pypy get-pip.py
sudo pypy -m pip install tabulate
sudo pip install google-api-python-client
+sudo pip install tox
# Node dependencies (nvm has to be installed under user jenkins)
touch .profile
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
nvm install 0.12 && npm config set cache /tmp/npm-cache
+nvm install 4 && npm config set cache /tmp/npm-cache
+nvm install 5 && npm config set cache /tmp/npm-cache
+nvm alias default 4
# C# dependencies (http://www.mono-project.com/docs/getting-started/install/linux/#debian-ubuntu-and-derivatives)
diff --git a/src/python/grpcio/grpc/framework/base/exceptions.py b/tools/gcp/stress_test/run_ruby.sh
index b8f4752184..80d0567447 100644..100755
--- a/src/python/grpcio/grpc/framework/base/exceptions.py
+++ b/tools/gcp/stress_test/run_ruby.sh
@@ -1,4 +1,5 @@
-# Copyright 2015, Google Inc.
+#!/bin/bash
+# Copyright 2015-2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,8 +28,10 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Exceptions defined and used by the base layer of RPC Framework."""
+# This is a wrapper script that was created to help run_server.py and
+# run_client.py to launch 'node js' stress clients and stress servers
+source /etc/profile.d/rvm.sh
+set -ex
-class NoSuchMethodError(Exception):
- """Indicates that an operation with an unrecognized name has been called."""
+$@
diff --git a/tools/jenkins/README.md b/tools/jenkins/README.md
new file mode 100644
index 0000000000..8e06b68466
--- /dev/null
+++ b/tools/jenkins/README.md
@@ -0,0 +1 @@
+Scripts invoked by Jenkins (our CI platform) to run gRPC test suites.
diff --git a/tools/jenkins/run_distribution.sh b/tools/jenkins/run_distribution.sh
deleted file mode 100755
index 306b85b045..0000000000
--- a/tools/jenkins/run_distribution.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/bin/bash
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# This script is invoked by Jenkins and triggers a test run of
-# linuxbrew installation of a selected language
-set -ex
-
-# Our homebrew installation script command, per language
-# Can be used in both linux and macos
-if [ "$language" == "core" ]; then
- command="curl -fsSL https://goo.gl/getgrpc | bash -"
-elif [[ "python nodejs ruby php" =~ "$language" ]]; then
- command="curl -fsSL https://goo.gl/getgrpc | bash -s $language"
-else
- echo "unsupported language $language"
- exit 1
-fi
-
-if [ "$platform" == "linux" ]; then
-
- if [ "$dist_channel" == "homebrew" ]; then
-
- sha1=$(sha1sum tools/dockerfile/grpc_linuxbrew/Dockerfile | cut -f1 -d\ )
- DOCKER_IMAGE_NAME=grpc_linuxbrew_$sha1
-
- # build docker image, contains all pre-requisites
- docker build -t $DOCKER_IMAGE_NAME tools/dockerfile/grpc_linuxbrew
-
- # run per-language homebrew installation script
- docker run --rm=true $DOCKER_IMAGE_NAME bash -l \
- -c "nvm use 0.12; \
- npm set unsafe-perm true; \
- rvm use ruby-2.1; \
- $command"
-
- else
- echo "Unsupported $platform dist_channel $dist_channel"
- exit 1
- fi
-
-elif [ "$platform" == "macos" ]; then
-
- if [ "$dist_channel" == "homebrew" ]; then
-
- echo "Formulas installed by system-wide homebrew (before)"
- brew list -l
-
- # Save the original PATH so that we can run the system `brew` command
- # again at the end of the script
- export ORIGINAL_PATH=$PATH
-
- # Set up temp directories for test installation of homebrew
- brew_root=/tmp/homebrew-test-$language
- rm -rf $brew_root
- mkdir -p $brew_root
- git clone https://github.com/Homebrew/homebrew.git $brew_root
-
- # Make sure we are operating at the right copy of temp homebrew
- # installation
- export PATH=$brew_root/bin:$PATH
-
- # Set up right environment for each language
- case $language in
- *python*)
- rm -rf jenkins_python_venv
- virtualenv jenkins_python_venv
- source jenkins_python_venv/bin/activate
- ;;
- *nodejs*)
- export PATH=$HOME/.nvm/versions/node/v0.12.7/bin:$PATH
- ;;
- *ruby*)
- export PATH=/usr/local/rvm/rubies/ruby-2.2.1/bin:$PATH
- ;;
- *php*)
- export CFLAGS="-Wno-parentheses-equality"
- ;;
- esac
-
- # Run our homebrew installation script
- bash -c "$command"
-
- # Uninstall / clean up per-language modules/extensions after the test
- case $language in
- *python*)
- deactivate
- rm -rf jenkins_python_venv
- ;;
- *nodejs*)
- npm list -g | grep grpc
- npm uninstall -g grpc
- ;;
- *ruby*)
- gem list | grep grpc
- gem uninstall grpc
- ;;
- *php*)
- rm grpc.so
- ;;
- esac
-
- # Clean up
- rm -rf $brew_root
-
- echo "Formulas installed by system-wide homebrew (after, should be unaffected)"
- export PATH=$ORIGINAL_PATH
- brew list -l
-
- else
- echo "Unsupported $platform dist_channel $dist_channel"
- exit 1
- fi
-
-else
- echo "unsupported platform $platform"
- exit 1
-fi
diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh
index 3f25a93319..cfa7acefab 100755
--- a/tools/jenkins/run_fuzzer.sh
+++ b/tools/jenkins/run_fuzzer.sh
@@ -33,14 +33,14 @@
set -ex
export RUN_COMMAND="tools/fuzzer/build_and_run_fuzzer.sh $1"
-export DOCKER_RUN_SCRIPT=tools/jenkins/docker_run.sh
+export DOCKER_RUN_SCRIPT=tools/run_tests/dockerize/docker_run.sh
export DOCKERFILE_DIR=tools/dockerfile/test/fuzzer
export OUTPUT_DIR=fuzzer_output
runtime=${runtime:-3600}
jobs=${jobs:-3}
-tools/jenkins/build_and_run_docker.sh \
+tools/run_tests/dockerize/build_and_run_docker.sh \
-e RUN_COMMAND="$RUN_COMMAND" \
-e OUTPUT_DIR="$OUTPUT_DIR" \
-e config="$config" \
diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index 903a144215..13a332751b 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -34,4 +34,4 @@ set -ex
# Enter the gRPC repo root
cd $(dirname $0)/../..
-tools/run_tests/run_performance_tests.py -l c++ node ruby csharp
+tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index e61c46d8b5..bd1269ceb7 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -43,10 +43,10 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
for k,v in environ.iteritems():
docker_args += ['-e', '%s=%s' % (k, v)]
docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
- 'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh',
+ 'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh',
'OUTPUT_DIR': 'artifacts'}
jobspec = jobset.JobSpec(
- cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+ cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
environ=docker_env,
shortname='build_artifact.%s' % (name),
timeout_seconds=30*60,
@@ -84,12 +84,16 @@ python_version_arch_map = {
class PythonArtifact:
"""Builds Python artifacts."""
- def __init__(self, platform, arch):
- self.name = 'python_%s_%s' % (platform, arch)
+ def __init__(self, platform, arch, manylinux_build=None):
+ if manylinux_build:
+ self.name = 'python_%s_%s_%s' % (platform, arch, manylinux_build)
+ else:
+ self.name = 'python_%s_%s' % (platform, arch)
self.platform = platform
self.arch = arch
self.labels = ['artifact', 'python', platform, arch]
self.python_version = python_version_arch_map[arch]
+ self.manylinux_build = manylinux_build
def pre_build_jobspecs(self):
return []
@@ -99,14 +103,26 @@ class PythonArtifact:
if self.platform == 'linux':
if self.arch == 'x86':
environ['SETARCH_CMD'] = 'linux32'
+ # Inside the manylinux container, the python installations are located in
+ # special places...
+ environ['PYTHON'] = '/opt/python/{}/bin/python'.format(self.manylinux_build)
+ environ['PIP'] = '/opt/python/{}/bin/pip'.format(self.manylinux_build)
+ # Our docker image has all the prerequisites pip-installed already.
+ environ['SKIP_PIP_INSTALL'] = '1'
+ # Platform autodetection for the manylinux1 image breaks so we set the
+ # defines ourselves.
+ # TODO(atash) get better platform-detection support in core so we don't
+ # need to do this manually...
+ environ['CFLAGS'] = '-DGPR_MANYLINUX1=1'
return create_docker_jobspec(self.name,
- 'tools/dockerfile/grpc_artifact_linux_%s' % self.arch,
+ 'tools/dockerfile/grpc_artifact_python_manylinux_%s' % self.arch,
'tools/run_tests/build_artifact_python.sh',
environ=environ)
elif self.platform == 'windows':
return create_jobspec(self.name,
['tools\\run_tests\\build_artifact_python.bat',
- self.python_version
+ self.python_version,
+ '32' if self.arch == 'x86' else '64'
],
shell=True)
else:
@@ -307,8 +323,10 @@ def targets():
for Cls in (CSharpExtArtifact, NodeExtArtifact, ProtocArtifact)
for platform in ('linux', 'macos', 'windows')
for arch in ('x86', 'x64')] +
- [PythonArtifact('linux', 'x86'),
- PythonArtifact('linux', 'x64'),
+ [PythonArtifact('linux', 'x86', 'cp27-cp27m'),
+ PythonArtifact('linux', 'x86', 'cp27-cp27mu'),
+ PythonArtifact('linux', 'x64', 'cp27-cp27m'),
+ PythonArtifact('linux', 'x64', 'cp27-cp27mu'),
PythonArtifact('macos', 'x64'),
PythonArtifact('windows', 'x86'),
PythonArtifact('windows', 'x64'),
diff --git a/tools/run_tests/build_artifact_node.bat b/tools/run_tests/build_artifact_node.bat
index 84c63c28a2..c5bd726db7 100644
--- a/tools/run_tests/build_artifact_node.bat
+++ b/tools/run_tests/build_artifact_node.bat
@@ -27,7 +27,7 @@
@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-set node_versions=0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0
+set node_versions=0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0
set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm
@@ -38,12 +38,12 @@ call npm update || goto :error
mkdir artifacts
for %%v in (%node_versions%) do (
- call node-pre-gyp configure build --target=%%v --target_arch=%1
+ call .\node_modules\.bin\node-pre-gyp.cmd configure build --target=%%v --target_arch=%1
@rem Try again after removing openssl headers
rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\%%v\include\node\openssl" /S /Q
rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\iojs-%%v\include\node\openssl" /S /Q
- call node-pre-gyp build package testpackage --target=%%v --target_arch=%1 || goto :error
+ call .\node_modules\.bin\node-pre-gyp.cmd build package testpackage --target=%%v --target_arch=%1 || goto :error
xcopy /Y /I /S build\stage\* artifacts\ || goto :error
)
diff --git a/tools/run_tests/build_artifact_node.sh b/tools/run_tests/build_artifact_node.sh
index ef3476a038..9d06472aa4 100755
--- a/tools/run_tests/build_artifact_node.sh
+++ b/tools/run_tests/build_artifact_node.sh
@@ -42,7 +42,7 @@ mkdir -p artifacts
npm update
-node_versions=( 0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 )
+node_versions=( 0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0 )
for version in ${node_versions[@]}
do
diff --git a/tools/run_tests/build_artifact_python.bat b/tools/run_tests/build_artifact_python.bat
index 023d394549..fea0275426 100644
--- a/tools/run_tests/build_artifact_python.bat
+++ b/tools/run_tests/build_artifact_python.bat
@@ -41,7 +41,7 @@ copy /Y vsprojects\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\
copy /Y vsprojects\x64\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\grpc_c.64.python || goto :error
-set PATH=C:\%1;C:\%1\scripts;%PATH%
+set PATH=C:\%1;C:\%1\scripts;C:\msys64\mingw%2\bin;%PATH%
pip install --upgrade six
pip install --upgrade setuptools
@@ -50,10 +50,37 @@ pip install -rrequirements.txt
set GRPC_PYTHON_USE_CUSTOM_BDIST=0
set GRPC_PYTHON_BUILD_WITH_CYTHON=1
+@rem TODO(atash): maybe we could avoid the grpc_c.(32|64).python shim above if
+@rem this used the right python build?
python setup.py bdist_wheel
+@rem Build gRPC Python tools
+@rem
+@rem Because this is windows and *everything seems to hate Windows* we have to
+@rem set all of these flags ourselves because Python won't help us (see the
+@rem setup.py of the grpcio_tools project).
+set GRPC_PYTHON_CFLAGS=-fno-wrapv -frtti -std=c++11
+@rem Further confusing things, MSYS2's mingw64 tries to dynamically link
+@rem libgcc, libstdc++, and winpthreads. We have to override this or our
+@rem extensions end up linking to MSYS2 DLLs, which the normal Python on
+@rem Windows user won't have... and ON TOP OF THIS, there's MinGW's GCC default
+@rem behavior of linking msvcrt.dll as the C runtime library, which we need to
+@rem override so that Python's distutils doesn't link us against multiple C
+@rem runtimes.
+python -c "from distutils.cygwinccompiler import get_msvcr; print(get_msvcr()[0])" > temp.txt
+set /p PYTHON_MSVCR=<temp.txt
+set GRPC_PYTHON_LDFLAGS=-static-libgcc -static-libstdc++ -mcrtdll=%PYTHON_MSVCR% -static -lpthread
+python tools\distrib\python\make_grpcio_tools.py
+if %2 == 32 (
+ python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
+) else (
+ python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
+)
+python tools\distrib\python\grpcio_tools\setup.py bdist_wheel
+
mkdir artifacts
xcopy /Y /I /S dist\* artifacts\ || goto :error
+xcopy /Y /I /S tools\distrib\python\grpcio_tools\dist\* artifacts\ || goto :error
goto :EOF
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 1f23f9fade..4320f978e3 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -32,36 +32,52 @@ set -ex
cd $(dirname $0)/../..
+export GRPC_PYTHON_USE_CUSTOM_BDIST=0
+export GRPC_PYTHON_BUILD_WITH_CYTHON=1
+export PYTHON=${PYTHON:-python}
+export PIP=${PIP:-pip}
+export AUDITWHEEL=${AUDITWHEEL:-auditwheel}
+
+
if [ "$SKIP_PIP_INSTALL" == "" ]
then
- pip install --upgrade six
+ ${PIP} install --upgrade six
# There's a bug in newer versions of setuptools (see
# https://bitbucket.org/pypa/setuptools/issues/503/pkg_resources_vendorpackagingrequirementsi)
- pip install --upgrade 'setuptools==18'
- pip install -rrequirements.txt
+ ${PIP} pip install --upgrade 'setuptools==18'
+ ${PIP} install -rrequirements.txt
fi
-export GRPC_PYTHON_USE_CUSTOM_BDIST=0
-export GRPC_PYTHON_BUILD_WITH_CYTHON=1
-
# Build the source distribution first because MANIFEST.in cannot override
# exclusion of built shared objects among package resources (for some
# inexplicable reason).
-${SETARCH_CMD} python setup.py \
+${SETARCH_CMD} ${PYTHON} setup.py \
sdist
-# The bdist_wheel_grpc_custom command is finicky about command output ordering
-# and thus ought to be run in a shell command separate of others. Further, it
-# trashes the actual bdist_wheel output, so it should be run first so that
-# bdist_wheel may be run unmolested.
-${SETARCH_CMD} python setup.py \
- build_tagged_ext
-
# Wheel has a bug where directories don't get excluded.
# https://bitbucket.org/pypa/wheel/issues/99/cannot-exclude-directory
-${SETARCH_CMD} python setup.py \
+${SETARCH_CMD} ${PYTHON} setup.py \
bdist_wheel
+# Build gRPC tools package source distribution
+${SETARCH_CMD} ${PYTHON} tools/distrib/python/grpcio_tools/setup.py \
+ sdist
+
+# Build gRPC tools package binary distribution
+${PYTHON} tools/distrib/python/make_grpcio_tools.py
+CFLAGS="$CFLAGS -fno-wrapv" ${SETARCH_CMD} \
+ ${PYTHON} tools/distrib/python/grpcio_tools/setup.py bdist_wheel
+
mkdir -p artifacts
+if command -v ${AUDITWHEEL}
+then
+ for wheel in dist/*.whl; do
+ ${AUDITWHEEL} repair $wheel -w artifacts/
+ done
+ for wheel in tools/distrib/python/grpcio_tools/dist/*.whl; do
+ ${AUDITWHEEL} repair $wheel -w artifacts/
+ done
+fi
cp -r dist/* artifacts
+cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 540c826311..6bc9466b63 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -35,10 +35,54 @@ set -ex
cd $(dirname $0)/../..
-mkdir -p artifacts/
-cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=node,platform={windows,linux,macos}/artifacts/* artifacts/ || true
+base=$(pwd)
+artifacts=$base/artifacts
+
+mkdir -p $artifacts
+cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=node,platform={windows,linux,macos}/artifacts/* $artifacts/ || true
+
+npm update
+npm pack
+
+cp grpc-*.tgz $artifacts/grpc.tgz
+
+mkdir -p bin
+
+cd src/node/tools
npm update
npm pack
+cp grpc-tools-*.tgz $artifacts/
+tools_version=$(npm list | grep -oP '(?<=grpc-tools@)\S+')
+
+output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/$tools_version
+mkdir -p $output_dir
-cp grpc-*.tgz artifacts/grpc.tgz
+for arch in {x86,x64}; do
+ case arch in
+ x86)
+ node_arch=ia32
+ ;;
+ *)
+ node_arch=$arch
+ ;;
+ esac
+ for plat in {windows,linux,macos}; do
+ case plat in
+ windows)
+ node_plat=win32
+ ;;
+ macos)
+ node_plat=darwin
+ ;;
+ *)
+ node_plat=$plat
+ ;;
+ esac
+ rm bin/*
+ input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
+ cp $input_dir/protoc* bin/
+ cp $input_dir/grpc_node_plugin* bin/
+ tar -czf $output_dir/$node_plat-$node_arch.tar.gz bin/
+ done
+done
diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh
index 1a5b94348d..e44428bf7e 100755
--- a/tools/run_tests/build_package_ruby.sh
+++ b/tools/run_tests/build_package_ruby.sh
@@ -32,6 +32,8 @@ set -ex
cd $(dirname $0)/../..
+base=$(pwd)
+
mkdir -p artifacts/
# All the ruby packages have been built in the artifact phase already
@@ -41,3 +43,25 @@ cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=ruby,platform={windows,
# TODO: all the artifact builder configurations generate a grpc-VERSION.gem
# source distribution package, and only one of them will end up
# in the artifacts/ directory. They should be all equivalent though.
+
+for arch in {x86,x64}; do
+ case $arch in
+ x64)
+ ruby_arch=x86_64
+ ;;
+ *)
+ ruby_arch=$arch
+ ;;
+ esac
+ for plat in {windows,linux,macos}; do
+ input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
+ output_dir="$base/src/ruby/tools/bin/${ruby_arch}-${plat}"
+ mkdir -p $output_dir
+ cp $input_dir/protoc* $output_dir/
+ cp $input_dir/grpc_ruby_plugin* $output_dir/
+ done
+done
+
+cd $base/src/ruby/tools
+gem build grpc-tools.gemspec
+cp ./grpc-tools*.gem $base/artifacts/
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index 30d121007f..594c20b14c 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -33,6 +33,8 @@ set -ex
# change to grpc repo root
cd $(dirname $0)/../..
+TOX_PYTHON_ENV="$1"
+
ROOT=`pwd`
export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG
export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG
@@ -47,9 +49,9 @@ then
export GRPC_PYTHON_ENABLE_CYTHON_TRACING=1
fi
-tox --notest
+tox -e ${TOX_PYTHON_ENV} --notest
-$ROOT/.tox/py27/bin/python $ROOT/setup.py build
-$ROOT/.tox/py27/bin/python $ROOT/setup.py build_py
-$ROOT/.tox/py27/bin/python $ROOT/setup.py build_ext --inplace
-$ROOT/.tox/py27/bin/python $ROOT/setup.py gather --test
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build_py
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build_ext --inplace
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py gather --test
diff --git a/tools/run_tests/distribtest_targets.py b/tools/run_tests/distribtest_targets.py
index 34cc1cd710..ae918be21d 100644
--- a/tools/run_tests/distribtest_targets.py
+++ b/tools/run_tests/distribtest_targets.py
@@ -44,9 +44,9 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
for k,v in environ.iteritems():
docker_args += ['-e', '%s=%s' % (k, v)]
docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
- 'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh'}
+ 'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh'}
jobspec = jobset.JobSpec(
- cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+ cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
environ=docker_env,
shortname='distribtest.%s' % (name),
timeout_seconds=30*60,
diff --git a/tools/jenkins/build_and_run_docker.sh b/tools/run_tests/dockerize/build_and_run_docker.sh
index 92dbbc6f38..1ef34b2f96 100755
--- a/tools/jenkins/build_and_run_docker.sh
+++ b/tools/run_tests/dockerize/build_and_run_docker.sh
@@ -33,7 +33,7 @@
set -ex
-cd $(dirname $0)/../..
+cd $(dirname $0)/../../..
git_root=$(pwd)
cd -
diff --git a/tools/jenkins/build_docker_and_run_tests.sh b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
index 5779e63db9..c2ea6f2c6e 100755
--- a/tools/jenkins/build_docker_and_run_tests.sh
+++ b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
@@ -33,7 +33,7 @@
set -ex
-cd $(dirname $0)/../..
+cd $(dirname $0)/../../..
git_root=$(pwd)
cd -
diff --git a/tools/jenkins/build_interop_image.sh b/tools/run_tests/dockerize/build_interop_image.sh
index 26687a5a85..48a216a124 100755
--- a/tools/jenkins/build_interop_image.sh
+++ b/tools/run_tests/dockerize/build_interop_image.sh
@@ -40,7 +40,7 @@ set -x
# BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the
# docker run command
-cd `dirname $0`/../..
+cd `dirname $0`/../../..
GRPC_ROOT=`pwd`
MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro"
@@ -71,10 +71,10 @@ then
fi
# Use image name based on Dockerfile checksum
-BASE_IMAGE=${BASE_NAME}_base:`sha1sum tools/dockerfile/$BASE_NAME/Dockerfile | cut -f1 -d\ `
+BASE_IMAGE=${BASE_NAME}_base:`sha1sum tools/dockerfile/interoptest/$BASE_NAME/Dockerfile | cut -f1 -d\ `
# Make sure base docker image has been built. Should be instantaneous if so.
-docker build -t $BASE_IMAGE --force-rm=true tools/dockerfile/$BASE_NAME || exit $?
+docker build -t $BASE_IMAGE --force-rm=true tools/dockerfile/interoptest/$BASE_NAME || exit $?
# Create a local branch so the child Docker script won't complain
git branch -f jenkins-docker
@@ -92,7 +92,7 @@ CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)"
-v /tmp/ccache:/tmp/ccache \
--name=$CONTAINER_NAME \
$BASE_IMAGE \
- bash -l /var/local/jenkins/grpc/tools/dockerfile/$BASE_NAME/build_interop.sh \
+ bash -l /var/local/jenkins/grpc/tools/dockerfile/interoptest/$BASE_NAME/build_interop.sh \
&& docker commit $CONTAINER_NAME $INTEROP_IMAGE \
&& echo "Successfully built image $INTEROP_IMAGE")
EXITCODE=$?
diff --git a/tools/jenkins/build_interop_stress_image.sh b/tools/run_tests/dockerize/build_interop_stress_image.sh
index 31ffa752ab..4407c8da90 100755
--- a/tools/jenkins/build_interop_stress_image.sh
+++ b/tools/run_tests/dockerize/build_interop_stress_image.sh
@@ -44,7 +44,7 @@ set -x
# BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the
# docker run command
-cd `dirname $0`/../..
+cd `dirname $0`/../../..
GRPC_ROOT=`pwd`
MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro"
diff --git a/tools/jenkins/docker_run.sh b/tools/run_tests/dockerize/docker_run.sh
index f04b1cfb55..f04b1cfb55 100755
--- a/tools/jenkins/docker_run.sh
+++ b/tools/run_tests/dockerize/docker_run.sh
diff --git a/tools/jenkins/docker_run_tests.sh b/tools/run_tests/dockerize/docker_run_tests.sh
index 2fc66c21f5..2fc66c21f5 100755
--- a/tools/jenkins/docker_run_tests.sh
+++ b/tools/run_tests/dockerize/docker_run_tests.sh
diff --git a/tools/run_tests/package_targets.py b/tools/run_tests/package_targets.py
index 87bc4865ce..820b539b59 100644
--- a/tools/run_tests/package_targets.py
+++ b/tools/run_tests/package_targets.py
@@ -42,10 +42,10 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
for k,v in environ.iteritems():
docker_args += ['-e', '%s=%s' % (k, v)]
docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
- 'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh',
+ 'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh',
'OUTPUT_DIR': 'artifacts'}
jobspec = jobset.JobSpec(
- cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+ cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
environ=docker_env,
shortname='build_package.%s' % (name),
timeout_seconds=30*60,
diff --git a/src/python/grpcio/grpc/framework/base/null.py b/tools/run_tests/performance/kill_workers.sh
index 1e30d4557b..7a8763424d 100644..100755
--- a/src/python/grpcio/grpc/framework/base/null.py
+++ b/tools/run_tests/performance/kill_workers.sh
@@ -1,3 +1,4 @@
+#!/bin/bash
# Copyright 2015, Google Inc.
# All rights reserved.
#
@@ -27,30 +28,27 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""Null links that ignore tickets passed to them."""
+set -ex
-from grpc.framework.base import interfaces
+cd $(dirname $0)/../../..
+# Make sure there are no pre-existing QPS workers around before starting
+# the performance test suite
-class _NullForeLink(interfaces.ForeLink):
- """A do-nothing ForeLink."""
+# C++
+killall -9 qps_worker || true
- def accept_back_to_front_ticket(self, ticket):
- pass
+# C#
+ps -C mono -o pid=,cmd= | grep QpsWorker | awk '{print $1}' | xargs kill -9
- def join_rear_link(self, rear_link):
- raise NotImplementedError()
+# Ruby
+ps -C ruby -o pid=,cmd= | grep 'qps/worker.rb' | awk '{print $1}' | xargs kill -9
+# Node
+ps -C node -o pid=,cmd= | grep 'performance/worker.js' | awk '{print $1}' | xargs kill -9
-class _NullRearLink(interfaces.RearLink):
- """A do-nothing RearLink."""
+# Python
+ps -C python -o pid=,cmd= | grep 'qps_worker.py' | awk '{print $1}' | xargs kill -9
- def accept_front_to_back_ticket(self, ticket):
- pass
-
- def join_fore_link(self, fore_link):
- raise NotImplementedError()
-
-
-NULL_FORE_LINK = _NullForeLink()
-NULL_REAR_LINK = _NullRearLink()
+# Java
+jps | grep LoadWorker | awk '{print $1}' | xargs kill -9
diff --git a/tools/run_tests/performance/remote_host_prepare.sh b/tools/run_tests/performance/remote_host_prepare.sh
index 17cfa1a599..d7f539a74e 100755
--- a/tools/run_tests/performance/remote_host_prepare.sh
+++ b/tools/run_tests/performance/remote_host_prepare.sh
@@ -41,10 +41,9 @@ ssh "${USER_AT_HOST}" "rm -rf ~/performance_workspace && mkdir -p ~/performance_
# could also kill jenkins.
ssh "${USER_AT_HOST}" "killall -9 qps_worker mono node ruby || true"
-# Kill all java LoadWorker processes. We can't just killall java
-# as one of the processes might be jenkins.
-ssh "${USER_AT_HOST}" 'kill -9 $(jps | grep LoadWorker | cut -f1 -d" ") || true'
-
# push the current sources to the slave and unpack it.
scp ../grpc.tar "${USER_AT_HOST}:~/performance_workspace"
ssh "${USER_AT_HOST}" "tar -xf ~/performance_workspace/grpc.tar -C ~/performance_workspace"
+
+# For consistency with local run, invoke the kill_workers script remotely.
+ssh "${USER_AT_HOST}" "~/performance_workspace/grpc/tools/run_tests/performance/kill_workers.sh"
diff --git a/tools/run_tests/performance/run_worker_node.sh b/tools/run_tests/performance/run_worker_node.sh
index 46b6ff0177..9a53a311f4 100755
--- a/tools/run_tests/performance/run_worker_node.sh
+++ b/tools/run_tests/performance/run_worker_node.sh
@@ -29,7 +29,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
source ~/.nvm/nvm.sh
-nvm use 0.12
+nvm use 4
set -ex
diff --git a/tools/run_tests/performance/run_worker_python.sh b/tools/run_tests/performance/run_worker_python.sh
new file mode 100755
index 0000000000..0da8deda58
--- /dev/null
+++ b/tools/run_tests/performance/run_worker_python.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../../..
+
+PYTHONPATH=src/python/grpcio:src/python/gens .tox/py27/bin/python src/python/grpcio/tests/qps/qps_worker.py $@
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 55657f8d8a..8b23995149 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -34,6 +34,8 @@ WARMUP_SECONDS=5
JAVA_WARMUP_SECONDS=15 # Java needs more warmup time for JIT to kick in.
BENCHMARK_SECONDS=30
+SMOKETEST='smoketest'
+
SECURE_SECARGS = {'use_test_ca': True,
'server_host_override': 'foo.test.google.fr'}
@@ -69,6 +71,86 @@ DEEP=100
WIDE=64
+def _get_secargs(is_secure):
+ if is_secure:
+ return SECURE_SECARGS
+ else:
+ return None
+
+
+def remove_nonproto_fields(scenario):
+ """Remove special-purpose that contains some extra info about the scenario
+ but don't belong to the ScenarioConfig protobuf message"""
+ scenario.pop('CATEGORIES', None)
+ scenario.pop('SERVER_LANGUAGE', None)
+ return scenario
+
+
+def _ping_pong_scenario(name, rpc_type,
+ client_type, server_type,
+ secure=True,
+ use_generic_payload=False,
+ use_unconstrained_client=False,
+ server_language=None,
+ server_core_limit=0,
+ async_server_threads=0,
+ warmup_seconds=WARMUP_SECONDS,
+ categories=[]):
+ """Creates a basic ping pong scenario."""
+ scenario = {
+ 'name': name,
+ 'num_servers': 1,
+ 'num_clients': 1,
+ 'client_config': {
+ 'client_type': client_type,
+ 'security_params': _get_secargs(secure),
+ 'outstanding_rpcs_per_channel': 1,
+ 'client_channels': 1,
+ 'async_client_threads': 1,
+ 'rpc_type': rpc_type,
+ 'load_params': {
+ 'closed_loop': {}
+ },
+ 'histogram_params': HISTOGRAM_PARAMS,
+ },
+ 'server_config': {
+ 'server_type': server_type,
+ 'security_params': _get_secargs(secure),
+ 'core_limit': server_core_limit,
+ 'async_server_threads': async_server_threads,
+ },
+ 'warmup_seconds': warmup_seconds,
+ 'benchmark_seconds': BENCHMARK_SECONDS
+ }
+ if use_generic_payload:
+ if server_type != 'ASYNC_GENERIC_SERVER':
+ raise Exception('Use ASYNC_GENERIC_SERVER for generic payload.')
+ scenario['client_config']['payload_config'] = EMPTY_GENERIC_PAYLOAD
+ scenario['server_config']['payload_config'] = EMPTY_GENERIC_PAYLOAD
+ else:
+ # For proto payload, only the client should get the config.
+ scenario['client_config']['payload_config'] = EMPTY_PROTO_PAYLOAD
+
+ if use_unconstrained_client:
+ scenario['num_clients'] = 0 # use as many client as available.
+ # TODO(jtattermusch): for SYNC_CLIENT, this will create 100*64 threads
+ # and that's probably too much (at least for wrapped languages).
+ scenario['client_config']['outstanding_rpcs_per_channel'] = DEEP
+ scenario['client_config']['client_channels'] = WIDE
+ scenario['client_config']['async_client_threads'] = 0
+ else:
+ scenario['client_config']['outstanding_rpcs_per_channel'] = 1
+ scenario['client_config']['client_channels'] = 1
+ scenario['client_config']['async_client_threads'] = 1
+
+ if server_language:
+ # the SERVER_LANGUAGE field is recognized by run_performance_tests.py
+ scenario['SERVER_LANGUAGE'] = server_language
+ if categories:
+ scenario['CATEGORIES'] = categories
+ return scenario
+
+
class CXXLanguage:
def __init__(self):
@@ -83,205 +165,64 @@ class CXXLanguage:
def scenarios(self):
# TODO(ctiller): add 70% load latency test
for secure in [True, False]:
- if secure:
- secstr = 'secure'
- secargs = SECURE_SECARGS
- else:
- secstr = 'insecure'
- secargs = None
-
- yield {
- 'name': 'cpp_generic_async_streaming_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_generic_async_streaming_qps_unconstrained_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 0,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': DEEP,
- 'client_channels': WIDE,
- 'async_client_threads': 0,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': SINGLE_MACHINE_CORES/2,
- 'async_server_threads': 0,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_generic_async_streaming_qps_one_server_core_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 0,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': DEEP,
- 'client_channels': WIDE,
- 'async_client_threads': 0,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_async_streaming_qps_unconstrained_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 0,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': DEEP,
- 'client_channels': WIDE,
- 'async_client_threads': 0,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': SINGLE_MACHINE_CORES/2,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_async_streaming_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_sync_unary_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 0,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'cpp_protobuf_async_unary_ping_pong_%s'
- % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ secstr = 'secure' if secure else 'insecure'
+ smoketest_categories = [SMOKETEST] if secure else None
+
+ yield _ping_pong_scenario(
+ 'cpp_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True, server_core_limit=1, async_server_threads=1,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=1, async_server_threads=1,
+ secure=secure)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=1, async_server_threads=1,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_sync_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_core_limit=1, async_server_threads=1,
+ secure=secure)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=SINGLE_MACHINE_CORES/2,
+ use_unconstrained_client=True,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_core_limit=SINGLE_MACHINE_CORES/2,
+ use_unconstrained_client=True,
+ secure=secure)
+
+ yield _ping_pong_scenario(
+ 'cpp_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ server_core_limit=SINGLE_MACHINE_CORES/2,
+ secure=secure,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'cpp_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ server_core_limit=1, async_server_threads=1,
+ secure=secure)
def __str__(self):
return 'c++'
@@ -299,113 +240,46 @@ class CSharpLanguage:
return 100
def scenarios(self):
- secargs = SECURE_SECARGS
- yield {
- 'name': 'csharp_generic_async_streaming_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'STREAMING',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_GENERIC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 0,
- 'payload_config': EMPTY_GENERIC_PAYLOAD,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'csharp_protobuf_async_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'csharp_protobuf_sync_to_async_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 0,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
- yield {
- 'name': 'csharp_to_cpp_protobuf_sync_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 1,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS,
- 'SERVER_LANGUAGE': 'c++' # recognized by run_performance_tests.py
- }
+ yield _ping_pong_scenario(
+ 'csharp_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True,
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_sync_to_async_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True)
+
+ yield _ping_pong_scenario(
+ 'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1,
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'csharp_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1)
def __str__(self):
return 'csharp'
@@ -424,38 +298,109 @@ class NodeLanguage:
return 200
def scenarios(self):
- # TODO(jtattermusch): add more scenarios
- secargs = SECURE_SECARGS
- yield {
- 'name': 'node_protobuf_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'ASYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'ASYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ # use_generic_payload=True)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'node_protobuf_unary_ping_pong', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'node_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_to_cpp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # server_language='c++', server_core_limit=1, async_server_threads=1)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'node_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # server_language='c++', server_core_limit=1, async_server_threads=1)
def __str__(self):
return 'node'
+class PythonLanguage:
+
+ def __init__(self):
+ self.safename = 'python'
+
+ def worker_cmdline(self):
+ return ['tools/run_tests/performance/run_worker_python.sh']
+
+ def worker_port_offset(self):
+ return 500
+
+ def scenarios(self):
+ # TODO(jtattermusch): this scenario reports QPS 0.0
+ yield _ping_pong_scenario(
+ 'python_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True,
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+ yield _ping_pong_scenario(
+ 'python_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+ # client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ yield _ping_pong_scenario(
+ 'python_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1,
+ categories=[SMOKETEST])
+
+ # TODO(jtattermusch): make this scenario work
+ #yield _ping_pong_scenario(
+ # 'python_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # server_language='c++', server_core_limit=1, async_server_threads=1)
+
+ def __str__(self):
+ return 'python'
class RubyLanguage:
@@ -470,34 +415,37 @@ class RubyLanguage:
return 300
def scenarios(self):
- # TODO(jtattermusch): add more scenarios
- secargs = SECURE_SECARGS
- yield {
- 'name': 'ruby_protobuf_unary_ping_pong',
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ yield _ping_pong_scenario(
+ 'ruby_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ categories=[SMOKETEST])
+
+ yield _ping_pong_scenario(
+ 'ruby_protobuf_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ categories=[SMOKETEST])
+
+ # TODO: scenario reports QPS of 0.0
+ #yield _ping_pong_scenario(
+ # 'ruby_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ # TODO: scenario reports QPS of 0.0
+ #yield _ping_pong_scenario(
+ # 'ruby_protobuf_sync_streaming_qps_unconstrained', rpc_type='STREAMING',
+ # client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ # use_unconstrained_client=True)
+
+ yield _ping_pong_scenario(
+ 'ruby_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1)
+
+ yield _ping_pong_scenario(
+ 'ruby_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ server_language='c++', server_core_limit=1, async_server_threads=1)
def __str__(self):
return 'ruby'
@@ -516,41 +464,63 @@ class JavaLanguage:
return 400
def scenarios(self):
- # TODO(jtattermusch): add more scenarios
for secure in [True, False]:
- if secure:
- secstr = 'secure'
- secargs = SECURE_SECARGS
- else:
- secstr = 'insecure'
- secargs = None
-
- yield {
- 'name': 'java_protobuf_unary_ping_pong_%s' % secstr,
- 'num_servers': 1,
- 'num_clients': 1,
- 'client_config': {
- 'client_type': 'SYNC_CLIENT',
- 'security_params': secargs,
- 'outstanding_rpcs_per_channel': 1,
- 'client_channels': 1,
- 'async_client_threads': 1,
- 'rpc_type': 'UNARY',
- 'load_params': {
- 'closed_loop': {}
- },
- 'payload_config': EMPTY_PROTO_PAYLOAD,
- 'histogram_params': HISTOGRAM_PARAMS,
- },
- 'server_config': {
- 'server_type': 'SYNC_SERVER',
- 'security_params': secargs,
- 'core_limit': 0,
- 'async_server_threads': 1,
- },
- 'warmup_seconds': JAVA_WARMUP_SECONDS,
- 'benchmark_seconds': BENCHMARK_SECONDS
- }
+ secstr = 'secure' if secure else 'insecure'
+ smoketest_categories = [SMOKETEST] if secure else None
+
+ yield _ping_pong_scenario(
+ 'java_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_generic_payload=True, async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+ client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+ categories=smoketest_categories)
+
+ yield _ping_pong_scenario(
+ 'java_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+ use_unconstrained_client=True,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ yield _ping_pong_scenario(
+ 'java_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+ client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+ use_unconstrained_client=True, use_generic_payload=True,
+ async_server_threads=1,
+ secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+ # TODO(jtattermusch): add scenarios java vs C++
def __str__(self):
return 'java'
@@ -562,4 +532,5 @@ LANGUAGES = {
'node' : NodeLanguage(),
'ruby' : RubyLanguage(),
'java' : JavaLanguage(),
+ 'python' : PythonLanguage(),
}
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 28b91f8b62..e813473421 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -111,8 +111,7 @@ class CSharpLanguage:
return {}
def unimplemented_test_cases(self):
- # TODO: status_code_and_message doesn't work against node_server
- return _SKIP_COMPRESSION + ['status_code_and_message']
+ return _SKIP_COMPRESSION
def unimplemented_test_cases_server(self):
return _SKIP_COMPRESSION
@@ -270,13 +269,13 @@ class RubyLanguage:
self.safename = str(self)
def client_cmd(self, args):
- return ['ruby', 'src/ruby/bin/interop/interop_client.rb'] + args
+ return ['ruby', 'src/ruby/pb/test/client.rb'] + args
def cloud_to_prod_env(self):
return {}
def server_cmd(self, args):
- return ['ruby', 'src/ruby/bin/interop/interop_server.rb', '--use_tls=true'] + args
+ return ['ruby', 'src/ruby/pb/test/server.rb', '--use_tls=true'] + args
def global_env(self):
return {}
@@ -314,7 +313,8 @@ class PythonLanguage:
]
def global_env(self):
- return {'LD_LIBRARY_PATH': '{}/libs/opt'.format(DOCKER_WORKDIR_ROOT)}
+ return {'LD_LIBRARY_PATH': '{}/libs/opt'.format(DOCKER_WORKDIR_ROOT),
+ 'PYTHONPATH': '{}/src/python/gens'.format(DOCKER_WORKDIR_ROOT)}
def unimplemented_test_cases(self):
return _SKIP_ADVANCED + _SKIP_COMPRESSION + ['jwt_token_creds',
@@ -542,7 +542,7 @@ def build_interop_image_jobspec(language, tag=None):
env['BUILD_INTEROP_DOCKER_EXTRA_ARGS'] = \
'-v %s:/root/.composer/auth.json:ro' % host_file
build_job = jobset.JobSpec(
- cmdline=['tools/jenkins/build_interop_image.sh'],
+ cmdline=['tools/run_tests/dockerize/build_interop_image.sh'],
environ=env,
shortname='build_docker_%s' % (language),
timeout_seconds=30*60)
@@ -590,8 +590,8 @@ prod_servers = {
False),
'cloud_gateway_v2': ('216.239.32.255', 'grpc-test2.sandbox.googleapis.com',
True),
- 'gateway_v4': ('grpc-test4.sandbox.googleapis.com',
- 'grpc-test4.sandbox.googleapis.com', True),
+ 'gateway_v4': ('grpc-test4.sandbox.googleapis.com',
+ 'grpc-test4.sandbox.googleapis.com', True),
'cloud_gateway_v4': ('216.239.32.255', 'grpc-test4.sandbox.googleapis.com',
True),
}
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index ada341abf5..b1f5889e54 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -89,7 +89,7 @@ def create_qpsworker_job(language, shortname=None,
jobspec = jobset.JobSpec(
cmdline=cmdline,
shortname=shortname,
- timeout_seconds=30*60)
+ timeout_seconds=2*60*60)
return QpsWorkerJob(jobspec, language, host_and_port)
@@ -157,8 +157,9 @@ def archive_repo(languages):
sys.exit(1)
-def prepare_remote_hosts(hosts):
- """Prepares remote hosts."""
+def prepare_remote_hosts(hosts, prepare_local=False):
+ """Prepares remote hosts (and maybe prepare localhost as well)."""
+ prepare_timeout = 5*60
prepare_jobs = []
for host in hosts:
user_at_host = '%s@%s' % (_REMOTE_HOST_USERNAME, host)
@@ -167,13 +168,20 @@ def prepare_remote_hosts(hosts):
cmdline=['tools/run_tests/performance/remote_host_prepare.sh'],
shortname='remote_host_prepare.%s' % host,
environ = {'USER_AT_HOST': user_at_host},
- timeout_seconds=5*60))
- jobset.message('START', 'Preparing remote hosts.', do_newline=True)
+ timeout_seconds=prepare_timeout))
+ if prepare_local:
+ # Prepare localhost as well
+ prepare_jobs.append(
+ jobset.JobSpec(
+ cmdline=['tools/run_tests/performance/kill_workers.sh'],
+ shortname='local_prepare',
+ timeout_seconds=prepare_timeout))
+ jobset.message('START', 'Preparing hosts.', do_newline=True)
num_failures, _ = jobset.run(
prepare_jobs, newline_on_success=True, maxjobs=10)
if num_failures == 0:
jobset.message('SUCCESS',
- 'Remote hosts ready to start build.',
+ 'Prepare step completed successfully.',
do_newline=True)
else:
jobset.message('FAILED', 'Failed to prepare remote hosts.',
@@ -236,36 +244,37 @@ def start_qpsworkers(languages, worker_hosts):
def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
- bq_result_table=None):
+ category='all', bq_result_table=None):
"""Create jobspecs for scenarios to run."""
+ all_workers = [worker
+ for workers in workers_by_lang.values()
+ for worker in workers]
scenarios = []
for language in languages:
for scenario_json in language.scenarios():
if re.search(args.regex, scenario_json['name']):
- workers = workers_by_lang[str(language)]
- # 'SERVER_LANGUAGE' is an indicator for this script to pick
- # a server in different language. It doesn't belong to the Scenario
- # schema, so we also need to remove it.
- custom_server_lang = scenario_json.pop('SERVER_LANGUAGE', None)
- if custom_server_lang:
- if not workers_by_lang.get(custom_server_lang, []):
- print 'Warning: Skipping scenario %s as' % scenario_json['name']
- print('SERVER_LANGUAGE is set to %s yet the language has '
- 'not been selected with -l' % custom_server_lang)
- continue
- for idx in range(0, scenario_json['num_servers']):
- # replace first X workers by workers of a different language
- workers[idx] = workers_by_lang[custom_server_lang][idx]
- scenario = create_scenario_jobspec(scenario_json,
- workers,
- remote_host=remote_host,
- bq_result_table=bq_result_table)
- scenarios.append(scenario)
+ if category in scenario_json.get('CATEGORIES', []) or category == 'all':
+ workers = workers_by_lang[str(language)]
+ # 'SERVER_LANGUAGE' is an indicator for this script to pick
+ # a server in different language.
+ custom_server_lang = scenario_json.get('SERVER_LANGUAGE', None)
+ scenario_json = scenario_config.remove_nonproto_fields(scenario_json)
+ if custom_server_lang:
+ if not workers_by_lang.get(custom_server_lang, []):
+ print 'Warning: Skipping scenario %s as' % scenario_json['name']
+ print('SERVER_LANGUAGE is set to %s yet the language has '
+ 'not been selected with -l' % custom_server_lang)
+ continue
+ for idx in range(0, scenario_json['num_servers']):
+ # replace first X workers by workers of a different language
+ workers[idx] = workers_by_lang[custom_server_lang][idx]
+ scenario = create_scenario_jobspec(scenario_json,
+ workers,
+ remote_host=remote_host,
+ bq_result_table=bq_result_table)
+ scenarios.append(scenario)
# the very last scenario requests shutting down the workers.
- all_workers = [worker
- for workers in workers_by_lang.values()
- for worker in workers]
scenarios.append(create_quit_jobspec(all_workers, remote_host=remote_host))
return scenarios
@@ -290,7 +299,7 @@ argp = argparse.ArgumentParser(description='Run performance tests.')
argp.add_argument('-l', '--language',
choices=['all'] + sorted(scenario_config.LANGUAGES.keys()),
nargs='+',
- default=['all'],
+ required=True,
help='Languages to benchmark.')
argp.add_argument('--remote_driver_host',
default=None,
@@ -303,6 +312,10 @@ argp.add_argument('-r', '--regex', default='.*', type=str,
help='Regex to select scenarios to run.')
argp.add_argument('--bq_result_table', default=None, type=str,
help='Bigquery "dataset.table" to upload results to.')
+argp.add_argument('--category',
+ choices=['smoketest','all'],
+ default='smoketest',
+ help='Select a category of tests to run. Smoketest runs by default.')
args = argp.parse_args()
@@ -322,7 +335,9 @@ if args.remote_driver_host:
if remote_hosts:
archive_repo(languages=[str(l) for l in languages])
- prepare_remote_hosts(remote_hosts)
+ prepare_remote_hosts(remote_hosts, prepare_local=True)
+else:
+ prepare_remote_hosts([], prepare_local=True)
build_local = False
if not args.remote_driver_host:
@@ -344,6 +359,7 @@ try:
workers_by_lang=worker_addresses,
remote_host=args.remote_driver_host,
regex=args.regex,
+ category=args.category,
bq_result_table=args.bq_result_table)
if not scenarios:
raise Exception('No scenarios to run')
diff --git a/tools/run_tests/run_python.sh b/tools/run_tests/run_python.sh
index a93ef2576d..7a3ce6b821 100755
--- a/tools/run_tests/run_python.sh
+++ b/tools/run_tests/run_python.sh
@@ -33,6 +33,8 @@ set -ex
# change to grpc repo root
cd $(dirname $0)/../..
+TOX_PYTHON_ENV="$1"
+
ROOT=`pwd`
export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG
export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG
@@ -45,9 +47,9 @@ export GRPC_PYTHON_USE_PRECOMPILED_BINARIES=0
if [ "$CONFIG" = "gcov" ]
then
export GRPC_PYTHON_ENABLE_CYTHON_TRACING=1
- tox
+ tox -e ${TOX_PYTHON_ENV}
else
- $ROOT/.tox/py27/bin/python $ROOT/setup.py test_lite
+ $ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py test_lite
fi
mkdir -p $ROOT/reports
diff --git a/tools/run_tests/run_stress_tests.py b/tools/run_tests/run_stress_tests.py
index 0ba8f51c58..e42ee24ffb 100755
--- a/tools/run_tests/run_stress_tests.py
+++ b/tools/run_tests/run_stress_tests.py
@@ -195,7 +195,7 @@ def build_interop_stress_image_jobspec(language, tag=None):
tag = 'grpc_interop_stress_%s:%s' % (language.safename, uuid.uuid4())
env = {'INTEROP_IMAGE': tag,
'BASE_NAME': 'grpc_interop_stress_%s' % language.safename}
- build_job = jobset.JobSpec(cmdline=['tools/jenkins/build_interop_stress_image.sh'],
+ build_job = jobset.JobSpec(cmdline=['tools/run_tests/dockerize/build_interop_stress_image.sh'],
environ=env,
shortname='build_docker_%s' % (language),
timeout_seconds=30 * 60)
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 9dff686bbf..37291f4d3f 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -272,12 +272,17 @@ class NodeLanguage(object):
def __init__(self):
self.platform = platform_string()
- self.node_version = '0.12'
def configure(self, config, args):
self.config = config
self.args = args
- _check_compiler(self.args.compiler, ['default'])
+ _check_compiler(self.args.compiler, ['default', 'node0.12',
+ 'node4', 'node5'])
+ if self.args.compiler == 'default':
+ self.node_version = '4'
+ else:
+ # Take off the word "node"
+ self.node_version = self.args.compiler[4:]
def test_specs(self):
if self.platform == 'windows':
@@ -356,24 +361,20 @@ class PhpLanguage(object):
class PythonLanguage(object):
- def __init__(self):
- self._build_python_versions = ['2.7']
- self._has_python_versions = []
-
def configure(self, config, args):
self.config = config
self.args = args
- _check_compiler(self.args.compiler, ['default'])
+ self._tox_env = self._get_tox_env(self.args.compiler)
def test_specs(self):
# load list of known test suites
with open('src/python/grpcio/tests/tests.json') as tests_json_file:
tests_json = json.load(tests_json_file)
environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
- environment['PYVER'] = '2.7'
+ environment['PYTHONPATH'] = os.path.abspath('src/python/gens')
if self.config.build_config != 'gcov':
return [self.config.job_spec(
- ['tools/run_tests/run_python.sh'],
+ ['tools/run_tests/run_python.sh', self._tox_env],
None,
environ=dict(environment.items() +
[('GRPC_PYTHON_TESTRUNNER_FILTER', suite_name)]),
@@ -398,18 +399,7 @@ class PythonLanguage(object):
return []
def build_steps(self):
- commands = []
- for python_version in self._build_python_versions:
- try:
- with open(os.devnull, 'w') as output:
- subprocess.check_call(['which', 'python' + python_version],
- stdout=output, stderr=output)
- commands.append(['tools/run_tests/build_python.sh', python_version])
- self._has_python_versions.append(python_version)
- except:
- jobset.message('WARNING', 'Missing Python ' + python_version,
- do_newline=True)
- return commands
+ return [['tools/run_tests/build_python.sh', self._tox_env]]
def post_tests_steps(self):
return []
@@ -420,6 +410,15 @@ class PythonLanguage(object):
def dockerfile_dir(self):
return 'tools/dockerfile/test/python_jessie_%s' % _docker_arch_suffix(self.args.arch)
+ def _get_tox_env(self, compiler):
+ """Returns name of tox environment based on selected compiler."""
+ if compiler == 'python2.7' or compiler == 'default':
+ return 'py27'
+ elif compiler == 'python3.4':
+ return 'py34'
+ else:
+ raise Exception('Compiler %s not supported.' % compiler)
+
def __str__(self):
return 'python'
@@ -807,7 +806,9 @@ argp.add_argument('--compiler',
choices=['default',
'gcc4.4', 'gcc4.9', 'gcc5.3',
'clang3.4', 'clang3.6',
- 'vs2010', 'vs2013', 'vs2015'],
+ 'vs2010', 'vs2013', 'vs2015',
+ 'python2.7', 'python3.4',
+ 'node0.12', 'node4', 'node5'],
default='default',
help='Selects compiler to use. Allowed values depend on the platform and language.')
argp.add_argument('--build_only',
@@ -911,13 +912,13 @@ if args.use_docker:
env = os.environ.copy()
env['RUN_TESTS_COMMAND'] = run_tests_cmd
env['DOCKERFILE_DIR'] = dockerfile_dir
- env['DOCKER_RUN_SCRIPT'] = 'tools/jenkins/docker_run_tests.sh'
+ env['DOCKER_RUN_SCRIPT'] = 'tools/run_tests/dockerize/docker_run_tests.sh'
if args.xml_report:
env['XML_REPORT'] = args.xml_report
if not args.travis:
env['TTY_FLAG'] = '-t' # enables Ctrl-C when not on Jenkins.
- subprocess.check_call(['tools/jenkins/build_docker_and_run_tests.sh'],
+ subprocess.check_call(['tools/run_tests/dockerize/build_docker_and_run_tests.sh'],
shell=True,
env=env)
sys.exit(0)
diff --git a/tools/run_tests/sanity/sanity_tests.yaml b/tools/run_tests/sanity/sanity_tests.yaml
index efc21e6591..c5945c602f 100644
--- a/tools/run_tests/sanity/sanity_tests.yaml
+++ b/tools/run_tests/sanity/sanity_tests.yaml
@@ -10,3 +10,4 @@
- script: tools/distrib/check_trailing_newlines.sh
- script: tools/distrib/check_nanopb_output.sh
- script: tools/distrib/check_include_guards.py
+- script: tools/distrib/python/check_grpcio_tools.py
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 2599df2303..8b1aa574e8 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -65,6 +65,22 @@
},
{
"deps": [
+ "gpr",
+ "gpr_test_util",
+ "grpc",
+ "grpc_test_util"
+ ],
+ "headers": [],
+ "language": "c",
+ "name": "api_fuzzer",
+ "src": [
+ "test/core/end2end/fuzzers/api_fuzzer.c"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
"grpc",
"grpc_test_util"
],
@@ -2112,6 +2128,24 @@
{
"deps": [
"gpr",
+ "grpc",
+ "grpc++"
+ ],
+ "headers": [
+ "src/proto/grpc/testing/compiler_test.grpc.pb.h",
+ "src/proto/grpc/testing/compiler_test.pb.h"
+ ],
+ "language": "c++",
+ "name": "golden_file_test",
+ "src": [
+ "test/cpp/codegen/golden_file_test.cc"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "gpr",
"gpr_test_util",
"grpc",
"grpc++",
@@ -2160,6 +2194,19 @@
],
"headers": [],
"language": "c++",
+ "name": "grpc_node_plugin",
+ "src": [
+ "src/compiler/node_plugin.cc"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "grpc_plugin_support"
+ ],
+ "headers": [],
+ "language": "c++",
"name": "grpc_objective_c_plugin",
"src": [
"src/compiler/objective_c_plugin.cc"
@@ -3350,6 +3397,23 @@
],
"headers": [],
"language": "c",
+ "name": "large_metadata_bad_client_test",
+ "src": [
+ "test/core/bad_client/tests/large_metadata.c"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "bad_client_test",
+ "gpr",
+ "gpr_test_util",
+ "grpc_test_util_unsecure",
+ "grpc_unsecure"
+ ],
+ "headers": [],
+ "language": "c",
"name": "server_registered_method_bad_client_test",
"src": [
"test/core/bad_client/tests/server_registered_method.c"
@@ -3908,6 +3972,23 @@
],
"headers": [],
"language": "c",
+ "name": "api_fuzzer_one_entry",
+ "src": [
+ "test/core/end2end/fuzzers/api_fuzzer.c",
+ "test/core/util/one_corpus_entry_fuzzer.c"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "gpr",
+ "gpr_test_util",
+ "grpc",
+ "grpc_test_util"
+ ],
+ "headers": [],
+ "language": "c",
"name": "client_fuzzer_one_entry",
"src": [
"test/core/end2end/fuzzers/client_fuzzer.c",
@@ -4330,6 +4411,8 @@
"src/compiler/csharp_generator.h",
"src/compiler/csharp_generator_helpers.h",
"src/compiler/generator_helpers.h",
+ "src/compiler/node_generator.h",
+ "src/compiler/node_generator_helpers.h",
"src/compiler/objective_c_generator.h",
"src/compiler/objective_c_generator_helpers.h",
"src/compiler/python_generator.h",
@@ -4349,6 +4432,9 @@
"src/compiler/csharp_generator.h",
"src/compiler/csharp_generator_helpers.h",
"src/compiler/generator_helpers.h",
+ "src/compiler/node_generator.cc",
+ "src/compiler/node_generator.h",
+ "src/compiler/node_generator_helpers.h",
"src/compiler/objective_c_generator.cc",
"src/compiler/objective_c_generator.h",
"src/compiler/objective_c_generator_helpers.h",
@@ -5446,6 +5532,7 @@
"src/core/lib/support/string.c",
"src/core/lib/support/string.h",
"src/core/lib/support/string_posix.c",
+ "src/core/lib/support/string_util_win32.c",
"src/core/lib/support/string_win32.c",
"src/core/lib/support/string_win32.h",
"src/core/lib/support/subprocess_posix.c",
@@ -5464,6 +5551,7 @@
"src/core/lib/support/time_win32.c",
"src/core/lib/support/tls_pthread.c",
"src/core/lib/support/tmpfile.h",
+ "src/core/lib/support/tmpfile_msys.c",
"src/core/lib/support/tmpfile_posix.c",
"src/core/lib/support/tmpfile_win32.c",
"src/core/lib/support/wrap_memcpy.c"
@@ -5832,6 +5920,7 @@
],
"headers": [
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -5842,6 +5931,7 @@
"name": "grpc_codegen",
"src": [
"include/grpc/impl/codegen/byte_buffer.h",
+ "include/grpc/impl/codegen/byte_buffer_reader.h",
"include/grpc/impl/codegen/compression_types.h",
"include/grpc/impl/codegen/connectivity_state.h",
"include/grpc/impl/codegen/grpc_types.h",
@@ -6000,6 +6090,7 @@
"test/core/util/memory_counters.h",
"test/core/util/mock_endpoint.h",
"test/core/util/parse_hexstring.h",
+ "test/core/util/passthru_endpoint.h",
"test/core/util/port.h",
"test/core/util/port_server_client.h",
"test/core/util/slice_splitter.h"
@@ -6021,6 +6112,8 @@
"test/core/util/mock_endpoint.h",
"test/core/util/parse_hexstring.c",
"test/core/util/parse_hexstring.h",
+ "test/core/util/passthru_endpoint.c",
+ "test/core/util/passthru_endpoint.h",
"test/core/util/port.h",
"test/core/util/port_posix.c",
"test/core/util/port_server_client.c",
diff --git a/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md b/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md
index 62ca8aff2c..9f079beebc 100644
--- a/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md
+++ b/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md
@@ -6,8 +6,8 @@ This document specifies the features a stress test client should implement in or
--------------
**1.** A stress test client should be able to repeatedly execute one or more of the existing 'interop test cases'. It may just be a wrapper around the existing interop test client. The exact command line arguments the client should support are listed in _Table 1_ below.
-**2.** The stress test client must implement a metrics server defined by _[metrics.proto](https://github.com/grpc/grpc/blob/master/src/proto/grpc/testing/metrics.proto)_ and must expose _qps_ as a long-valued Gauge. The client can track the overall _qps_ in one Gauge or in multiple Gauges (for example: One per Channel or Stub).
- The framework periodically queries the _qps_ by calling the `GetAllGauges()` method (the framework assumes that all the returned Gauges are _qps_ Gauges) and uses this to determine if the stress test client is running or crashed or stalled.
+**2.** The stress test client must implement a metrics server defined by _[metrics.proto](https://github.com/grpc/grpc/blob/master/src/proto/grpc/testing/metrics.proto)_ and must expose _qps_ as a `Long`-valued Gauge. The client can track the overall _qps_ in one Gauge or in multiple Gauges (for example: One per Channel or Stub).
+ The framework periodically queries the _qps_ by calling the `GetAllGauges()` method (the framework assumes that all the returned Gauges are _qps_ Gauges and adds them up to determine the final qps) and uses this to determine if the stress test client is running or crashed or stalled.
> *Note:* In this context, the term _**qps**_ means _interop test cases per second_ (not _messages per second_ or _rpc calls per second_)
diff --git a/tools/run_tests/stress_test/configs/asan.json b/tools/run_tests/stress_test/configs/asan.json
index c558855314..7ae11ccbf1 100644
--- a/tools/run_tests/stress_test/configs/asan.json
+++ b/tools/run_tests/stress_test/configs/asan.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_cxx_asan" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "asan"
}
@@ -16,8 +16,7 @@
"num_channels_per_server":5,
"num_stubs_per_channel":10,
"test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
- "metrics_port": 8081,
- "metrics_collection_interval_secs":120
+ "metrics_port": 8081
},
"metricsPort": 8081,
"metricsArgs": {
diff --git a/tools/run_tests/stress_test/configs/csharp.json b/tools/run_tests/stress_test/configs/csharp.json
new file mode 100644
index 0000000000..587e1552b9
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/csharp.json
@@ -0,0 +1,90 @@
+{
+ "dockerImages": {
+ "grpc_stress_csharp" : {
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
+ "dockerFileDir": "grpc_interop_stress_csharp"
+ }
+ },
+
+ "clientTemplates": {
+ "baseTemplates": {
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+ "pollIntervalSecs": 60,
+ "clientArgs": {
+ "num_channels_per_server":5,
+ "num_stubs_per_channel":10,
+ "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+ "metrics_port": 8081
+ },
+ "metricsPort": 8081,
+ "metricsArgs": {
+ "metrics_server_address": "localhost:8081",
+ "total_only": "true"
+ }
+ }
+ },
+ "templates": {
+ "csharp_client": {
+ "baseTemplate": "default",
+ "stressClientCmd": [
+ "mono",
+ "/var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.StressClient/bin/Debug/Grpc.IntegrationTesting.StressClient.exe"
+ ],
+ "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+ }
+ }
+ },
+
+ "serverTemplates": {
+ "baseTemplates":{
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+ "serverPort": 8080,
+ "serverArgs": {
+ "port": 8080
+ }
+ }
+ },
+ "templates": {
+ "csharp_server": {
+ "baseTemplate": "default",
+ "stressServerCmd": [
+ "mono",
+ "/var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug/Grpc.IntegrationTesting.Server.exe"
+ ]
+ }
+ }
+ },
+
+ "testMatrix": {
+ "serverPodSpecs": {
+ "stress-server-csharp": {
+ "serverTemplate": "csharp_server",
+ "dockerImage": "grpc_stress_csharp",
+ "numInstances": 1
+ }
+ },
+
+ "clientPodSpecs": {
+ "stress-client-csharp": {
+ "clientTemplate": "csharp_client",
+ "dockerImage": "grpc_stress_csharp",
+ "numInstances": 10,
+ "serverPodSpec": "stress-server-csharp"
+ }
+ }
+ },
+
+ "globalSettings": {
+ "buildDockerImages": true,
+ "pollIntervalSecs": 60,
+ "testDurationSecs": 7200,
+ "kubernetesProxyPort": 8009,
+ "datasetIdNamePrefix": "stress_test_csharp",
+ "summaryTableId": "summary",
+ "qpsTableId": "qps",
+ "podWarmupSecs": 60
+ }
+}
+
diff --git a/tools/run_tests/stress_test/configs/go.json b/tools/run_tests/stress_test/configs/go.json
index 36b465e763..f1b2b523d3 100644
--- a/tools/run_tests/stress_test/configs/go.json
+++ b/tools/run_tests/stress_test/configs/go.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_go" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_go"
}
},
diff --git a/tools/run_tests/stress_test/configs/java.json b/tools/run_tests/stress_test/configs/java.json
index 275384c066..2ce6c00780 100644
--- a/tools/run_tests/stress_test/configs/java.json
+++ b/tools/run_tests/stress_test/configs/java.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_java" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_java"
}
},
diff --git a/tools/run_tests/stress_test/configs/node-cxx.json b/tools/run_tests/stress_test/configs/node-cxx.json
index c4245bf9df..094c1236e7 100644
--- a/tools/run_tests/stress_test/configs/node-cxx.json
+++ b/tools/run_tests/stress_test/configs/node-cxx.json
@@ -1,12 +1,12 @@
{
"dockerImages": {
"grpc_stress_cxx_opt" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "opt"
},
"grpc_stress_node": {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_node"
}
},
diff --git a/tools/run_tests/stress_test/configs/node.json b/tools/run_tests/stress_test/configs/node.json
index 7a48c56a5e..85eb9e0003 100644
--- a/tools/run_tests/stress_test/configs/node.json
+++ b/tools/run_tests/stress_test/configs/node.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_node" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_node"
}
},
diff --git a/tools/run_tests/stress_test/configs/opt-tsan-asan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
index 4f172ef30b..fcb3678c02 100644
--- a/tools/run_tests/stress_test/configs/opt-tsan-asan.json
+++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
@@ -1,17 +1,17 @@
{
"dockerImages": {
"grpc_stress_cxx_opt" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "opt"
},
"grpc_stress_cxx_tsan": {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "tsan"
},
"grpc_stress_cxx_asan": {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "asan"
}
@@ -26,8 +26,7 @@
"num_channels_per_server":5,
"num_stubs_per_channel":10,
"test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
- "metrics_port": 8081,
- "metrics_collection_interval_secs": 60
+ "metrics_port": 8081
},
"metricsPort": 8081,
"metricsArgs": {
diff --git a/tools/run_tests/stress_test/configs/opt.json b/tools/run_tests/stress_test/configs/opt.json
index 75505186f2..5e0e930d45 100644
--- a/tools/run_tests/stress_test/configs/opt.json
+++ b/tools/run_tests/stress_test/configs/opt.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_cxx_opt" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "opt"
}
@@ -16,8 +16,7 @@
"num_channels_per_server":5,
"num_stubs_per_channel":10,
"test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
- "metrics_port": 8081,
- "metrics_collection_interval_secs": 60
+ "metrics_port": 8081
},
"metricsPort": 8081,
"metricsArgs": {
diff --git a/tools/run_tests/stress_test/configs/python.json b/tools/run_tests/stress_test/configs/python.json
new file mode 100644
index 0000000000..4f85de1d5f
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/python.json
@@ -0,0 +1,98 @@
+{
+ "dockerImages": {
+ "grpc_stress_python" : {
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
+ "dockerFileDir": "grpc_interop_stress_python"
+ }
+ },
+
+ "clientTemplates": {
+ "baseTemplates": {
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+ "pollIntervalSecs": 60,
+ "clientArgs": {
+ "num_channels_per_server":5,
+ "num_stubs_per_channel":10,
+ "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+ "metrics_port": 8081
+ },
+ "metricsPort": 8081,
+ "metricsArgs": {
+ "metrics_server_address": "localhost:8081",
+ "total_only": "true"
+ },
+ "env": {
+ "PYTHONPATH": "/var/local/git/grpc/src/python/gens:/var/local/git/grpc/src/python/grpcio",
+ "LD_LIBRARY_PATH":"/var/local/git/grpc/libs/opt"
+ }
+ }
+ },
+ "templates": {
+ "python_client": {
+ "baseTemplate": "default",
+ "stressClientCmd": [
+ "python",
+ "/var/local/git/grpc/src/python/grpcio/tests/stress/client.py"
+ ],
+ "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+ }
+ }
+ },
+
+ "serverTemplates": {
+ "baseTemplates":{
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+ "serverPort": 8080,
+ "serverArgs": {
+ "port": 8080
+ },
+ "env": {
+ "PYTHONPATH": "/var/local/git/grpc/src/python/gens:/var/local/git/grpc/src/python/grpcio",
+ "LD_LIBRARY_PATH":"/var/local/git/grpc/libs/opt"
+ }
+ }
+ },
+ "templates": {
+ "python_server": {
+ "baseTemplate": "default",
+ "stressServerCmd": [
+ "python",
+ "/var/local/git/grpc/src/python/grpcio/tests/interop/server.py"
+ ]
+ }
+ }
+ },
+
+ "testMatrix": {
+ "serverPodSpecs": {
+ "python-stress-server": {
+ "serverTemplate": "python_server",
+ "dockerImage": "grpc_stress_python",
+ "numInstances": 1
+ }
+ },
+
+ "clientPodSpecs": {
+ "python-stress-client": {
+ "clientTemplate": "python_client",
+ "dockerImage": "grpc_stress_python",
+ "numInstances": 5,
+ "serverPodSpec": "python-stress-server"
+ }
+ }
+ },
+
+ "globalSettings": {
+ "buildDockerImages": true,
+ "pollIntervalSecs": 60,
+ "testDurationSecs": 7200,
+ "kubernetesProxyPort": 8011,
+ "datasetIdNamePrefix": "stress_test_python",
+ "summaryTableId": "summary",
+ "qpsTableId": "qps",
+ "podWarmupSecs": 60
+ }
+}
+
diff --git a/tools/run_tests/stress_test/configs/ruby.json b/tools/run_tests/stress_test/configs/ruby.json
new file mode 100644
index 0000000000..7e2afcbb69
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/ruby.json
@@ -0,0 +1,92 @@
+{
+ "dockerImages": {
+ "grpc_stress_ruby" : {
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
+ "dockerFileDir": "grpc_interop_stress_ruby"
+ }
+ },
+
+ "clientTemplates": {
+ "baseTemplates": {
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+ "pollIntervalSecs": 60,
+ "clientArgs": {
+ "num_channels_per_server":5,
+ "num_stubs_per_channel":10,
+ "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+ "metrics_port": 8081
+ },
+ "metricsPort": 8081,
+ "metricsArgs": {
+ "metrics_server_address": "localhost:8081",
+ "total_only": "true"
+ }
+ }
+ },
+ "templates": {
+ "ruby_client": {
+ "baseTemplate": "default",
+ "stressClientCmd": [
+ "/var/local/git/grpc/tools/gcp/stress_test/run_ruby.sh",
+ "ruby",
+ "/var/local/git/grpc/src/ruby/stress/stress_client.rb"
+ ],
+ "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+ }
+ }
+ },
+
+ "serverTemplates": {
+ "baseTemplates":{
+ "default": {
+ "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+ "serverPort": 8080,
+ "serverArgs": {
+ "port": 8080
+ }
+ }
+ },
+ "templates": {
+ "ruby_server": {
+ "baseTemplate": "default",
+ "stressServerCmd": [
+ "/var/local/git/grpc/tools/gcp/stress_test/run_ruby.sh",
+ "ruby",
+ "/var/local/git/grpc/src/ruby/pb/test/server.rb"
+ ]
+ }
+ }
+ },
+
+ "testMatrix": {
+ "serverPodSpecs": {
+ "stress-server-ruby": {
+ "serverTemplate": "ruby_server",
+ "dockerImage": "grpc_stress_ruby",
+ "numInstances": 1
+ }
+ },
+
+ "clientPodSpecs": {
+ "stress-client-ruby": {
+ "clientTemplate": "ruby_client",
+ "dockerImage": "grpc_stress_ruby",
+ "numInstances": 10,
+ "serverPodSpec": "stress-server-ruby"
+ }
+ }
+ },
+
+ "globalSettings": {
+ "buildDockerImages": true,
+ "pollIntervalSecs": 60,
+ "testDurationSecs": 7200,
+ "kubernetesProxyPort": 8001,
+ "datasetIdNamePrefix": "stress_test_ruby",
+ "summaryTableId": "summary",
+ "qpsTableId": "qps",
+ "podWarmupSecs": 60
+ }
+}
+
diff --git a/tools/run_tests/stress_test/configs/tsan.json b/tools/run_tests/stress_test/configs/tsan.json
index a7ec08313d..abc759c79d 100644
--- a/tools/run_tests/stress_test/configs/tsan.json
+++ b/tools/run_tests/stress_test/configs/tsan.json
@@ -1,7 +1,7 @@
{
"dockerImages": {
"grpc_stress_cxx_tsan" : {
- "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+ "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
"dockerFileDir": "grpc_interop_stress_cxx",
"buildType": "tsan"
}
@@ -16,8 +16,7 @@
"num_channels_per_server":5,
"num_stubs_per_channel":10,
"test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
- "metrics_port": 8081,
- "metrics_collection_interval_secs":120
+ "metrics_port": 8081
},
"metricsPort": 8081,
"metricsArgs": {
diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py
index d4f1c4ad3d..583e58316f 100755
--- a/tools/run_tests/stress_test/run_on_gke.py
+++ b/tools/run_tests/stress_test/run_on_gke.py
@@ -69,7 +69,7 @@ class ClientTemplate:
def __init__(self, name, stress_client_cmd, metrics_client_cmd, metrics_port,
wrapper_script_path, poll_interval_secs, client_args_dict,
- metrics_args_dict, will_run_forever):
+ metrics_args_dict, will_run_forever, env_dict):
self.name = name
self.stress_client_cmd = stress_client_cmd
self.metrics_client_cmd = metrics_client_cmd
@@ -79,19 +79,21 @@ class ClientTemplate:
self.client_args_dict = client_args_dict
self.metrics_args_dict = metrics_args_dict
self.will_run_forever = will_run_forever
+ self.env_dict = env_dict
class ServerTemplate:
""" Contains all the common settings used by a stress server """
def __init__(self, name, server_cmd, wrapper_script_path, server_port,
- server_args_dict, will_run_forever):
+ server_args_dict, will_run_forever, env_dict):
self.name = name
self.server_cmd = server_cmd
self.wrapper_script_path = wrapper_script_path
self.server_port = server_port
self.server_args_dict = server_args_dict
self.will_run_forever = will_run_forever
+ self.env_dict = env_dict
class DockerImage:
@@ -240,6 +242,7 @@ class Gke:
# server_pod_spec.template.wrapper_script_path) are are injected into the
# container via environment variables
server_env = self.gke_env.copy()
+ server_env.update(server_pod_spec.template.env_dict)
server_env.update({
'STRESS_TEST_IMAGE_TYPE': 'SERVER',
'STRESS_TEST_CMD': server_pod_spec.template.server_cmd,
@@ -283,6 +286,7 @@ class Gke:
# client_pod_spec.template.wrapper_script_path) are are injected into the
# container via environment variables
client_env = self.gke_env.copy()
+ client_env.update(client_pod_spec.template.env_dict)
client_env.update({
'STRESS_TEST_IMAGE_TYPE': 'CLIENT',
'STRESS_TEST_CMD': client_pod_spec.template.stress_client_cmd,
@@ -425,7 +429,8 @@ class Config:
template_name, stress_client_cmd, metrics_client_cmd,
temp_dict['metricsPort'], temp_dict['wrapperScriptPath'],
temp_dict['pollIntervalSecs'], temp_dict['clientArgs'].copy(),
- temp_dict['metricsArgs'].copy(), temp_dict.get('willRunForever', 1))
+ temp_dict['metricsArgs'].copy(), temp_dict.get('willRunForever', 1),
+ temp_dict.get('env', {}).copy())
return client_templates_dict
@@ -461,7 +466,7 @@ class Config:
server_templates_dict[template_name] = ServerTemplate(
template_name, stress_server_cmd, temp_dict['wrapperScriptPath'],
temp_dict['serverPort'], temp_dict['serverArgs'].copy(),
- temp_dict.get('willRunForever', 1))
+ temp_dict.get('willRunForever', 1), temp_dict.get('env', {}).copy())
return server_templates_dict
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 0610f35ccc..1939da7aec 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2280,6 +2280,27 @@
"flaky": false,
"gtest": true,
"language": "c++",
+ "name": "golden_file_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
+ {
+ "args": [],
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
"name": "grpclb_api_test",
"platforms": [
"linux",
@@ -2705,6 +2726,27 @@
"flaky": false,
"gtest": false,
"language": "c",
+ "name": "large_metadata_bad_client_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
+ {
+ "args": [],
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c",
"name": "server_registered_method_bad_client_test",
"platforms": [
"linux",
@@ -21510,7 +21552,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21531,7 +21575,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21552,7 +21598,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21573,7 +21621,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21594,7 +21644,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21615,7 +21667,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21636,7 +21690,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21657,7 +21713,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21678,7 +21736,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21699,7 +21759,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21720,7 +21782,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21741,7 +21805,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21762,7 +21828,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21783,7 +21851,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21804,7 +21874,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21825,7 +21897,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21846,7 +21920,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21867,7 +21943,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21888,7 +21966,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21909,7 +21989,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21930,7 +22012,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21951,7 +22035,9 @@
"posix"
],
"cpu_cost": 0.1,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21972,7 +22058,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -21993,7 +22081,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22014,7 +22104,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22035,7 +22127,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22056,7 +22150,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22077,7 +22173,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22098,7 +22196,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22119,7 +22219,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22140,7 +22242,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22161,7 +22265,9 @@
"posix"
],
"cpu_cost": 1.0,
- "exclude_configs": [],
+ "exclude_configs": [
+ "msan"
+ ],
"flaky": false,
"language": "c",
"name": "h2_sockpair_1byte_nosec_test",
@@ -22921,7 +23027,7 @@
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -22942,12 +23048,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -22968,12 +23074,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -22994,12 +23100,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23020,12 +23126,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23046,12 +23152,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23072,7 +23178,33 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure"
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure"
+ },
+ {
+ "args": [
+ "--scenario_json",
+ "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ ],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1000.0,
+ "defaults": "boringssl",
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_run_localhost",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure"
},
{
"args": [
@@ -23103,7 +23235,7 @@
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23124,12 +23256,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23150,12 +23282,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+ "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23176,12 +23308,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23202,12 +23334,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23228,12 +23360,12 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure"
+ "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
},
{
"args": [
"--scenario_json",
- "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+ "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
"boringssl": true,
"ci_platforms": [
@@ -23254,17 +23386,10056 @@
"posix",
"windows"
],
- "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure"
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure"
},
{
"args": [
- "test/core/end2end/fuzzers/client_fuzzer_corpus/001946397b463a3562c5951f6325069d8a3a2ded"
+ "--scenario_json",
+ "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
],
+ "boringssl": true,
"ci_platforms": [
"linux",
"mac",
- "windows",
- "posix"
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1000.0,
+ "defaults": "boringssl",
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c++",
+ "name": "json_run_localhost",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure"
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "api_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/001946397b463a3562c5951f6325069d8a3a2ded"
+ ],
+ "ci_platforms": [
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23272,10 +33443,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23283,10 +33451,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/00c8446b230bebbae2b473552b174a06b446337a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23294,10 +33459,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23305,10 +33467,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/01b05a9eaa95950f697627264bbd5006060f68e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23316,10 +33475,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23327,10 +33483,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/01c9569f5835a576fc50ea03141662c7ef1aa088"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23338,10 +33491,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23349,10 +33499,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/025215e11687c7d2e0055e5b2b902d08e0436f78"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23360,10 +33507,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23371,10 +33515,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/02ba99615d1d69eb328adce99670f659959c1bc1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23382,10 +33523,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23393,10 +33531,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/03abf728ac1d833c2d4a9ff7e0c912b949edc04c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23404,10 +33539,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23415,10 +33547,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/03beeae554ed6952e94a0bf32cdbe9f97eb3ba43"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23426,10 +33555,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23437,10 +33563,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/05b4eaa1e1a759aa6b23521c06d915174e8fec88"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23448,10 +33571,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23459,10 +33579,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/05cfa5deaead322efce84b710758a24440cef16e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23470,10 +33587,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23481,10 +33595,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/07048654244e377ddf246e8cc18f71443035cd2b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23492,10 +33603,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23503,10 +33611,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/078232947d7ff25557e836b4e9e907214e99b320"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23514,10 +33619,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -23525,10 +33643,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0949f4ac376808482be6ab2dcb18a2ecb08d9a52"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23536,10 +33651,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -23547,10 +33675,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c30868720d5e1a19ff23c53740749c37a43540d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23558,10 +33683,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23569,10 +33691,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0c5e0660ddf5f14af8f3fbcc754a967506994c9b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23580,10 +33699,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23591,10 +33707,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d36da88698737ec1ca7b55b30fe2b2036de7e19"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23602,10 +33715,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23613,10 +33723,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0d8c547f1d261ba07c2648bae009636c17709600"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23624,10 +33731,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23635,10 +33739,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0dd33527db106a3e84172e8f2189734b00ced4ed"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23646,10 +33747,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23657,10 +33755,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0e354d89d02c6c5cbba2f140dab7b609bf00793e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23668,10 +33763,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23679,10 +33771,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0e3a18f0f08dcb9dd174627bc997f74a5c7a1390"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23690,10 +33779,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -23701,10 +33803,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0f98d7d56e9a99b97e5dc7eb122ef22e9684077b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23712,10 +33811,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23723,10 +33819,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/0fd8859246740606c498755ab00d6147abcfec00"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23734,10 +33827,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23745,10 +33835,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/100bb8f2e6a0b41da13f4edb5c15d4a04e564840"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23756,10 +33843,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23767,10 +33851,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/101305ccd08c7a8bd0c2913c37d3dd0d39d4bb64"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23778,10 +33859,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23789,10 +33867,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/10f5d1937cb068fee7f85e2654be2bfe77498bb9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23800,10 +33875,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -23811,10 +33899,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1160214cdb23e8fc187078a8d6796656c1ade925"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23822,10 +33907,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23833,10 +33915,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/118ffddb43ccf9dae8bdb4702232d1dc39b021f7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23844,10 +33923,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23855,10 +33931,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1306c4c6ea714d4db0e4d814c944d8d40335e0fa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23866,10 +33939,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23877,10 +33947,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1402bbcac6fa24eeb0475250e33f704096e2fb45"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23888,10 +33955,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23899,10 +33963,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/143e0d4f546bbb984a7c3ac1c60a37dcf85ea58d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23910,10 +33971,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23921,10 +33979,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1576c915ee38f5bd19f285ed0ed47e36026518f2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23932,10 +33987,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23943,10 +33995,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1602788cf33d0354d6d48ead549e5137cd211979"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23954,10 +34003,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23965,10 +34011,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/17b1758fc7cd69a00d140f113b1ac894023ff20b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23976,10 +34019,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -23987,10 +34027,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/18185cbf9e9cfc1fd28d27ed0d651d7cee6a2c06"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -23998,10 +34035,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24009,10 +34043,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1875a4acdcffe505ca92ea8af8d9d6b174736e80"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24020,10 +34051,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24031,10 +34059,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/18850965807039500c7f5450a907e86825cf823d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24042,10 +34067,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24053,10 +34075,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/18926cdc608599e8df6b0f4df99d4ad856ef4373"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24064,10 +34083,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24075,10 +34091,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1965cd58fc41578a837231c69075994da2e871d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24086,10 +34099,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24097,10 +34107,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/19e984af62c36fe982284c87421d8ee46173e9f0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24108,10 +34115,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24119,10 +34123,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1aee32faadffa3c2ec508e8fd30006423665488f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24130,10 +34131,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24141,10 +34155,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1c222dae4e2cde1fca9f9bf6226200f70d625342"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24152,10 +34163,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24163,10 +34171,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1ca51ab2fefef4f549c4a8e7f4910c6b5a4b4b1d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24174,10 +34179,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24185,10 +34187,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1cbcaad71950c62d41bab50f9c242d014cc0d904"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24196,10 +34195,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24207,10 +34203,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1d19042e6db2a90c52fcc3cb0aa76f2fd335014e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24218,10 +34211,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24229,10 +34235,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1dc86d0febe4adc5353230cea24b5f7cce829283"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24240,10 +34243,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24251,10 +34267,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1e84d42fcf18bbf81ef6e8a16a0c57abbf8d292a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24262,10 +34275,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24273,10 +34283,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1f040e756f76357979f317e0c6541f72fd93df06"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24284,10 +34291,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24295,10 +34299,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1fe7d16ffc2084d5d3c5f23d16902ae8810a5393"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24306,10 +34307,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24317,10 +34315,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/1ffc4952225dda41de59603e487ff7fd3026b958"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24328,10 +34323,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24339,10 +34331,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/20216d27af2b3dcc83d944e5f7a489ed2eff98fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24350,10 +34339,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24361,10 +34363,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/20539e464ced1a0a63d74bae731ca0a75db05967"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24372,10 +34371,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24383,10 +34379,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/205cf2b6994f10b783aa0a06938a5e47cb581126"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24394,10 +34387,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24405,10 +34395,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/207e12d6a84dc8fa020b3a60b3f75932ca4f8fa5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24416,10 +34403,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24427,10 +34411,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/20ea73876cc9cd5b3d3efa1bda21deb5eac2d61e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24438,10 +34419,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24449,10 +34443,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2166c7093c424a2136c4cb8b10d0b124047320d4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24460,10 +34451,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24471,10 +34459,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/21a6a133f3d1e06c077032ba56a7df4161f62efe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24482,10 +34467,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24493,10 +34491,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/230527b90b0179139c961aca426187893191fdf2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24504,10 +34499,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24515,10 +34507,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2467fa0f8a9f4bd121f544892f0782498b2df533"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24526,10 +34515,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24537,10 +34523,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/246dcf347eba7f4d4e04d97dabc002f0acf2164e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24548,10 +34531,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24559,10 +34555,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/25761748660a64111a8daa46f72ea1f336c2046a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24570,10 +34563,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24581,10 +34571,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2585dc7b6c095e978b56e0249fe9b5c61a4840af"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24592,10 +34579,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24603,10 +34587,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/25949b623930511f9d43fea4aa56a4389a28e11a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24614,10 +34595,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24625,10 +34603,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/26110f21dcb0fde99942e631366ebbd9d895860d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24636,10 +34611,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24647,10 +34635,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/269afce3bfff993c05c2a3b28c6cf3dfb3f461d7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24658,10 +34643,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24669,10 +34651,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/26b8a9d27cef1ce4c3c5aefa2dee50001aab4b13"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24680,10 +34659,39 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24691,10 +34699,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/28ee8cae75efa07da9649933a9482d00643b5395"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24702,10 +34707,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24713,10 +34715,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/299034b9e0cc8d91c049c489dca6d1a2b8b08959"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24724,10 +34723,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24735,10 +34731,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/29952a15459cce9c647255ab5d7486df0507eff4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24746,10 +34739,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24757,10 +34763,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/29be7d33920998bae7329d77d4c81989eae91647"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24768,10 +34771,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24779,10 +34779,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2a8260b23460f90f770cedcafa14868d24db201e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24790,10 +34787,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24801,10 +34811,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2b71439e9ebf611a92386b9f21ad44bde7926184"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24812,10 +34819,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -24823,10 +34843,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c342f8715556398d49bcf3343b5a249d968e19e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24834,10 +34851,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24845,10 +34859,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c6e69067c68c145dc5d3a60b86d8081fdf95d0d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24856,10 +34867,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24867,10 +34875,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2c79128c697b53256c56b9c57c7259866e0e2347"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24878,10 +34883,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24889,10 +34891,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2d83097b3cbd2245b085e749fe923fb590790e0c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24900,10 +34899,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24911,10 +34907,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2dce4a1fc4bb00bfcd43d549a3785913c9280369"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24922,10 +34915,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24933,10 +34923,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2deb1aeb93c2abca4177b1fe886eb354c83fe8af"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24944,10 +34931,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24955,10 +34939,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2e9860242d55a74cec244bb5c5445eb2797a3157"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24966,10 +34947,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24977,10 +34955,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2f288409c5f3cf2a10b3e1970a9c3d037dabe080"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -24988,10 +34963,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -24999,10 +34971,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/2f5f6d281a3d0473a04a17cbcbc6fd06cb73fd8b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25010,10 +34979,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25021,10 +34987,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/301e10bb6d9f60d91efde4e0c48893203a5b8b88"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25032,10 +34995,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25043,10 +35003,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/302a11eb9b9687464b88c9a670da371f6a6c57e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25054,10 +35011,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25065,10 +35019,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3128887b8e02f1873ed6b36766a870543269ea00"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25076,10 +35027,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25087,10 +35035,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/31545e9fe4c6aa43329dc0d4a735842574fcaaed"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25098,10 +35043,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25109,10 +35051,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/31d12a2b1378120d15b4097371d792daa95de0a9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25120,10 +35059,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25131,10 +35067,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/320dc10f64b59b0eb0ae140912eded1ef9276556"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25142,10 +35075,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25153,10 +35083,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3336748264594689041e4080b51bc56f716d0689"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25164,10 +35091,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25175,10 +35099,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/333d0554d91872e693d118d6988132d95b7920ae"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25186,10 +35107,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25197,10 +35115,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/337d579ab5eb157d7d58e9287d447976062cbd8d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25208,10 +35123,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25219,10 +35131,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/33c32a80db0ec311ee8744991c5b19345bfd8fe9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25230,10 +35139,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25241,10 +35147,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/35fbd748458e3fd6068957d46a9fbb2b0113d2b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25252,10 +35155,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25263,10 +35163,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/361c6f4374443671f039fd9659577e4460178020"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25274,10 +35171,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -25285,10 +35195,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/370b2c16cc353621091eda4964d4c4329205ffc3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25296,10 +35203,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25307,10 +35211,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/370f893353f792c99754ece93baed2105decd71e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25318,10 +35219,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25329,10 +35227,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/375c2462d6ae891222686f9519294811fa5de010"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25340,10 +35235,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25351,10 +35243,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/379b177d55b1eb86ddb66dc3a037fd8283ee07c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25362,10 +35251,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25373,10 +35259,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3a01c85934363bd2067f76d0d40c491f9f846c8a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25384,10 +35267,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25395,10 +35275,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3a3eb65d51f30f4cd16cc6f8436a5b00702a5712"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25406,10 +35283,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25417,10 +35291,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3ae87e3150628c422ada13002b08f2d9c5a9d78e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25428,10 +35299,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25439,10 +35307,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3afbc4c35885b79c6e6628afce93ce852d7767de"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25450,10 +35315,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -25461,10 +35339,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3c7b516e302ad3503a933b5dcfb8c58acaea07a0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25472,10 +35347,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -25483,10 +35371,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3da7577acd806e1d92d48211b22fd9db352fd834"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25494,10 +35379,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25505,10 +35387,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3e8f531043a07df2280bca73fe4a7987d82ce67e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25516,10 +35395,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25527,10 +35403,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/3fcc2da89f438b247cb5b4b41e15aceccfa75b36"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25538,10 +35411,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25549,10 +35419,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4040224f3df361afe45bce682d56d26f13829413"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25560,10 +35427,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25571,10 +35435,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/41aad2f11a7ab418213352e84de872d9997db8d2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25582,10 +35443,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25593,10 +35451,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/41b499e86caed7b48c59aaaf51360c3c71029400"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25604,10 +35459,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25615,10 +35467,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/42554ddbe59429d30d718282ca606ed8b5a90eb3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25626,10 +35475,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25637,10 +35483,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/42c395ab373346fb283ace021bdc1f6428f92f80"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25648,10 +35491,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25659,10 +35499,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/43202ad9b1a689d919ab9ae91c2d0223394867bf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25670,10 +35507,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25681,10 +35515,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/438789ebe8a5d676f6f03ef8329c3d77579aeba4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25692,10 +35523,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25703,10 +35531,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/44153f8b7af5a3b27625a46af89e1712daa3ae8a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25714,10 +35539,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25725,10 +35547,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/44d64196fb2e8d9506734a81304f6ef17b9bc29d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25736,10 +35555,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25747,10 +35563,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/44f0973ec77d6fb9eac931e84fa7ec6fdadccca6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25758,10 +35571,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25769,10 +35579,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/450f9f56c80c8b71e37302a254ba7c3f7298dfd7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25780,10 +35587,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25791,10 +35595,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/451e69ab65e0fe0a5731622ed21ab2b5380df677"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25802,10 +35603,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25813,10 +35611,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/46dcb1c399e5a514267fbbd5a50939f34e0ad6be"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25824,10 +35619,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -25835,10 +35643,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/489e9830136adcc53f4b191199c33504685b3737"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25846,10 +35651,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25857,10 +35659,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/49112bf1277d93601eb6526fe9ee9d45864d759e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25868,10 +35667,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -25879,10 +35691,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4a4553c2e939cd50981bc38e8ddb1f2109ddb3a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25890,10 +35699,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25901,10 +35707,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4b2ce115b15082ed951f4dc0b432da6a9d37bf85"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25912,10 +35715,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25923,10 +35723,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4b585eb75ebca2187c0aa5a6abe4c8125aa80127"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25934,10 +35731,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25945,10 +35739,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4b611a3748757e2fa89fcd2fb22d34444fbf5b42"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25956,10 +35747,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25967,10 +35755,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4e21c4b5c454df51c102f09ea1ba78c42133ee16"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -25978,10 +35763,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -25989,10 +35771,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4eaff3c3515a1ca019d46b9be0b7318eaffb63d1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26000,10 +35779,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26011,10 +35787,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4ec113a0126fc5746fa3f955727d009040e8377f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26022,10 +35795,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26033,10 +35803,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4f5b9d5c707a35084918c272efd1295d301ca0b5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26044,10 +35811,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26055,10 +35819,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/4f8b5b7489cca36225acec0f9aa7f5c556d79d8d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26066,10 +35827,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26077,10 +35835,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/50ece7ea16659b4e1a2284cea963fab662c19e6b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26088,10 +35843,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26099,10 +35851,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/514c9cd7b6519b596900d924ff2caa173d688f4b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26110,10 +35859,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26121,10 +35867,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/51c6c5297acebf9d21a8a7d6261d0a17c2adfb56"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26132,10 +35875,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26143,10 +35883,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/52c00bde7f4af95a86deb0a6717d1faf2828a939"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26154,10 +35891,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26165,10 +35899,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/534c900ade27c8f7fccb1f3b7e7703f77f13a8f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26176,10 +35907,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26187,10 +35915,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/5360327e8bc8969f31b364df3081b51a1e03900c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26198,10 +35923,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -26209,10 +35947,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/5482dc4af170def9c183315efaa48f9c186926a1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26220,10 +35955,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26231,10 +35963,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/54e67ed1036f3f5b315e0e3c02948c30eba900fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26242,10 +35971,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26253,10 +35979,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/55ca8f6d9928c239a7abb32554463e6e1e1ee084"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26264,10 +35987,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26275,10 +35995,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/570ca8d2555dde94aa3b3121e8f5256e83eabe5e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26286,10 +36003,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26297,10 +36011,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/57ee6efc38f4c544a3ea3e5e73987e825bdf2980"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26308,10 +36019,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26319,10 +36027,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/58a067ec6eda7191a5a910d8120633271d3af074"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26330,10 +36035,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26341,10 +36043,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/58d6dffb65a1fe1bc4e3fa970a15459587a32f77"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26352,10 +36051,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26363,10 +36059,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/591ef436ef8cc982b48fd827a4555b57cd9780e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26374,10 +36067,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26385,10 +36075,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/59d78f6397f0483d139f5bd0a9f264156f34acc4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26396,10 +36083,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26407,10 +36091,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/5a2447fdfdbf123f4592c1284007b7d50a01750b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26418,10 +36099,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26429,10 +36107,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/5ca233a53e3e425cc12e04b466a49789291eaa00"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26440,10 +36115,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26451,10 +36123,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/5dc7b2086a39f56d8b9135f524d34a01fcabafd8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26462,10 +36131,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26473,10 +36139,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/5e1659e7cd840ab3f958273ebffdd215f2c81da6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26484,10 +36147,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26495,10 +36155,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/605e474e9d9436488dfe084d348908e4dfab81a3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26506,10 +36163,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26517,10 +36171,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/6066fc9e28b4ce704230f0e8cf21e7c3195aa2a3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26528,10 +36179,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26539,10 +36187,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/607dac8012f188cb035b189fc3637028137023e0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26550,10 +36195,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26561,10 +36203,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/611343a6b8879b393ba2f38ed41c7f5355355920"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26572,10 +36211,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26583,10 +36219,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/62c843359941660da3fc9eea62a5732aaa3be283"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26594,10 +36227,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26605,10 +36235,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/636a19b8f50c4efccccea83ab78a933d999e41fa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26616,10 +36243,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26627,10 +36251,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/64696e93ead18265cdac3fb37dae29ad3be6d764"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26638,10 +36259,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26649,10 +36267,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/64c0e0b4d9c2d25fdcb1e2bdcb999487fc096dad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26660,10 +36275,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26671,10 +36283,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/64cad305e1858eae27cd723778fb9f4b7052eaa5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26682,10 +36291,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26693,10 +36299,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/64d27dc9f984c49d421a5b0cb0391992d5aac1a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26704,10 +36307,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26715,10 +36315,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/653ec14661c40ea25bdbab4a7cb9371c669d10d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26726,10 +36323,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26737,10 +36331,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/66145518601b1405361df12570f6e0b2b9a2e5b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26748,10 +36339,39 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -26759,10 +36379,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/6749752b02f7d14fff9ac35f6b68dd62f5b49fcd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26770,10 +36387,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26781,10 +36395,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/67e72cea2b7042f08e8dfba5191d27bb390e4d00"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26792,10 +36403,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26803,10 +36411,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/685fbddd9ea612b25e325a50bd659997b4d77da1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26814,10 +36419,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26825,10 +36427,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/69542ed81b00a5ec8daaf4e8d509201eecd502c5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26836,10 +36435,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -26847,10 +36459,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/69e52eef5dd0c51012b5c974cf70f4074ba814a9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26858,10 +36467,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -26869,10 +36491,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/6bfd3679f4e30aaaa1808e96c980edcfa9cac1c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26880,10 +36499,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26891,10 +36507,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/6e2796549e29e5066f780a5e926fd6e3bb362450"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26902,10 +36515,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26913,10 +36523,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/6e71553967212dfea2c9995f3641e582d8c2105b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26924,10 +36531,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26935,10 +36539,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/71106770243ccca03f5025aadb298ee3a825824b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26946,10 +36547,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26957,10 +36555,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/717695057d76b81c344ed8c23cc024195caa9405"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26968,10 +36563,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -26979,10 +36571,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/7353a7b2ea9f61325728b2f118416549e89dd79b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -26990,10 +36579,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27001,10 +36587,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/739228a1400cd69c47f110002c34dbe1661e8c41"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27012,10 +36595,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27023,10 +36603,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/7465a4955a064e8f1bb777d4b0de5b3df8469831"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27034,10 +36611,39 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27045,10 +36651,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/759a1e2e34cad14321a5e5790b1e6a783312fea1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27056,10 +36659,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27067,10 +36683,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/7885df741c88ca4b539798d9985c445f41cc2929"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27078,10 +36691,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27089,10 +36699,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/7af3156d286a32a6a6fede46d93ec12ded1ac138"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27100,10 +36707,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27111,10 +36715,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/7af41e5391204f4596cb1461792e2e23f9390b7b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27122,10 +36723,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27133,10 +36747,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/7c73c0671308e37a8075a20863e70e180ef8b6ea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27144,10 +36755,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27155,10 +36779,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8021c689f0078c5c59419c9959f5c58472245bc7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27166,10 +36787,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27177,10 +36795,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27188,10 +36803,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27199,10 +36811,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27210,10 +36819,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27221,10 +36827,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/813d2c34c0df8d4a918e68e58cf0ae3703d0d46f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27232,10 +36835,39 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27243,10 +36875,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/82c0e02a867a5fdfb805e01ebf1a008220311e27"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27254,10 +36883,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27265,10 +36891,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/831248cea079b629bf0ef6d9d02c159d6f8ed41b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27276,10 +36899,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27287,10 +36923,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8382c249fc9c7a248833d89de554e63807c475f7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27298,10 +36931,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27309,10 +36955,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/842cea88bccc41d7e2625dae8ff7268ee79e9f57"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27320,10 +36963,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27331,10 +36971,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/850c639595eae3cc9c2cfef473e28fd4e8174dc8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27342,10 +36979,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27353,10 +36987,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/857ce08213a5106c746767352c6863d7bd134208"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27364,10 +36995,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27375,10 +37003,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/86eb156ff8ddd7edc535840d412342ada6f3b184"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27386,10 +37011,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27397,10 +37019,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/871a2e4d73a7fbb50f71558517a2f704b7fdb868"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27408,10 +37027,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27419,10 +37035,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8795e24f23db36e4f9ab609c9faff601b984eb6f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27430,10 +37043,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27441,10 +37051,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/87e97b460042d045629263ad10ff3de7b000f0a1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27452,10 +37059,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27463,10 +37067,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/89cf42c02d7135afa6c81d8a0c2bc4c3df557769"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27474,10 +37075,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27485,10 +37099,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b8b9fcdfff1f891b1694614b7309cb4a2098f4b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27496,10 +37107,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27507,10 +37115,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8b8f6d58dff9ab0c37183ec93c9a600d5ba5d9e6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27518,10 +37123,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27529,10 +37131,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8ba00963037c9ff548b7a702497441799075f14b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27540,10 +37139,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27551,10 +37147,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8bacacba71bfa5c74fd74cb6577a49a7aec9cf1f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27562,10 +37155,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27573,10 +37163,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8c527bdf0f304a31866f71cdb298511041ecd320"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27584,10 +37171,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27595,10 +37179,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8d352ea63259e26e1bb61f5a8f78254be4e3e7b1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27606,10 +37187,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -27617,10 +37211,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8ea624983d766ed45780378a3eec24eb2faeb229"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27628,10 +37219,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27639,10 +37227,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/8eeb8cf054ebd546ca0555ef1cd4ac6a08628917"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27650,10 +37235,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27661,10 +37243,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/90a9c3390752b94ca19a58cb2fe6267bc818f718"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27672,10 +37251,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27683,10 +37259,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9125277ed9ec5d59e51f3e1a8d97d25ef88a5d4f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27694,10 +37267,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27705,10 +37275,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/91916df7c8f04d8c2b6b8f4aeaeee6972ce0de74"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27716,10 +37283,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27727,10 +37291,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/92cce6dc5c31acd62347b15d89d52ab94b507e0f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27738,10 +37299,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27749,10 +37307,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/92ea0d3200665e1836ac12bed0837425cb9f43de"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27760,10 +37315,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27771,10 +37323,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9329b80d0125cc994d7ad36540c7a8265d76983c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27782,10 +37331,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27793,10 +37339,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/94108ac8420347598c7cee743b2a158b1270fb8f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27804,10 +37347,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27815,10 +37355,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/954ea72fdbeaf5b46d18c6d5bb77fc1a0f97569d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27826,10 +37363,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27837,10 +37371,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9552c3f6304af40224b800f3a3a5df3887a530f6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27848,10 +37379,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27859,10 +37387,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/96e5126447131d3d59cc6547f6b91d3433ce37c8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27870,10 +37395,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27881,10 +37403,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/970fccda0b34b59ade44d52e1212699b4d2419a8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27892,10 +37411,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27903,10 +37419,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/97c4b73f72b248b4ebf4bf30892d0db828a85297"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27914,10 +37427,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27925,10 +37435,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/98c0c0a3c8c05aec3082755a4635e65baecf4752"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27936,10 +37443,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27947,10 +37451,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/98da5edafac67704810f093b38c86e4c77b75349"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27958,10 +37459,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27969,10 +37467,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/98dddd3f679af150e9933bd864ae20e20b7aa25a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -27980,10 +37475,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -27991,10 +37483,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/999d0995c2f09beda8783eac95d7643a11d5c89a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28002,10 +37491,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28013,10 +37499,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9a43f48d4f6219618f8cc9e876880fe81109ad72"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28024,10 +37507,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28035,10 +37515,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9a4da2a37a26c114e1226bfbe1cf80ec5ca99a66"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28046,10 +37523,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28057,10 +37531,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9abf980e8909aeb31936553ca22ccfd8680c4dab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28068,10 +37539,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28079,10 +37547,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9b1355c6e2c43ce83001bbead09a79852e04feef"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28090,10 +37555,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28101,10 +37563,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9b4d4ce0457f5300d6b4b309762acfdbc41e3965"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28112,10 +37571,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28123,10 +37579,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9bd059ff0a90e86ada1ba7e5b90ae04637ae9e90"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28134,10 +37587,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28145,10 +37595,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9c4eac3dd734a74673c76e6b21fd9c18cdfa831c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28156,10 +37603,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28167,10 +37611,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d2dd744ba59c1e8ec091e23938e46d1bb5ee519"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28178,10 +37619,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28189,10 +37627,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d362d2aaeee243a5b54621d8187c4b16f87c9f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28200,10 +37635,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28211,10 +37643,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9d6947df24c9ebcbec72c568d9708d7b1ecae63c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28222,10 +37651,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28233,10 +37659,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9dfdce1b090a559a14f9a5852f78547413b1d1ed"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28244,10 +37667,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28255,10 +37675,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9e2ab07030bd35a4c31df32c79aca5e76c1d04f8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28266,10 +37683,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28277,10 +37691,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9f0ab521c728be21e93112b2730c52bc1d6c0021"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28288,10 +37699,39 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28299,10 +37739,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/9fee3212240d4bccfdab3696dbbc579b06d39982"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28310,10 +37747,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28321,10 +37755,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a09ef34c93fe0ffc13045f67b7ecec683fb72e98"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28332,10 +37763,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28343,10 +37771,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a30fc2605f4e74f7003f902ea4a4c994e3ce9bfd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28354,10 +37779,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28365,10 +37787,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a33e1b28074a41fc5c2611a67161ae5638a47dd5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28376,10 +37795,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28387,10 +37803,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a3cd54d43d3b3bdfcf224d636dc11ce1b5ee4d30"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28398,10 +37811,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28409,10 +37819,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a4874327383ca168f9d9d59cffe327f61e9a6610"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28420,10 +37827,39 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28431,10 +37867,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a60ae4e21a913e84405814f18555f0c179c24167"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28442,10 +37875,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28453,10 +37883,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a6603e797695274d10bce000f66ca0a715f7d8c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28464,10 +37891,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28475,10 +37915,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a6f0d1ed80393ec0a884718b44fe2dc9f852d38a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28486,10 +37923,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28497,10 +37931,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a706f2067bfbda7837eaad68972d60547e2957c3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28508,10 +37939,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28519,10 +37947,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a814c5743d492b96d2b402f9e819bf8406262224"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28530,10 +37955,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28541,10 +37963,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a8e67676784506d2e6eab3a0dfa25e53a80b40a0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28552,10 +37971,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28563,10 +37979,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/a9d71e1ff2912d8874e38fc61cbd9a8ef28af4a9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28574,10 +37987,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28585,10 +38011,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/aaada46c7f3bff58c2dd6f4a8394135ed5f253ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28596,10 +38019,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28607,10 +38027,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ab27fb527771c7d86f74afb6864e95402328ec0e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28618,10 +38035,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28629,10 +38043,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ab8d6e1ecbd80c6223b8623a386c61023502a57c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28640,10 +38051,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28651,10 +38059,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/abd52da5882855a63632a6917df3639538928cd3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28662,10 +38067,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28673,10 +38075,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ac38a6572f8420b4df37d9e39088d1905fced71d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28684,10 +38083,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28695,10 +38107,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/adb9bf315315338bcad85929917b9def2aa098cb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28706,10 +38115,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28717,10 +38123,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ade2d2f0e120a9527487e9b92458ee6844800e4e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28728,10 +38131,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28739,10 +38155,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/af8b24ffaecdfaf96c0cd7c76f31dc9e1b4d0935"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28750,10 +38163,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28761,10 +38171,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/afcce9e02e0696a2af073855a386f589cc12c94d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28772,10 +38179,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28783,10 +38187,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b00a32e8bfb75e75f31410dfe3592da6248275c6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28794,10 +38195,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28805,10 +38203,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b09f98e13e5b67a4dd7f74eff00bb247b9967844"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28816,10 +38211,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28827,10 +38219,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b24a0dd1bc0bfabb832f0d1c8410c018c4ddaf4e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28838,10 +38227,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28849,10 +38235,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b283eb8884c98dd50523995ce221aa1ecb3ca182"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28860,10 +38243,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28871,10 +38267,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b2aa4861b5104e8bb8bb173f4b023a2172a7b9a2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28882,10 +38275,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28893,10 +38283,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b33eb7e1bde4c69671dbbf9489b4d4b87c5d23fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28904,10 +38291,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -28915,10 +38315,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b3f33b78433af7f607bc99b569b0cef95a1a6ca0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28926,10 +38323,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28937,10 +38331,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b46e762671a5e28c7061da3baee6fc41dcc0122b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28948,10 +38339,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28959,10 +38347,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b6d86bedf3cf19441114e463458a454709e627b4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28970,10 +38355,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -28981,10 +38363,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b755933ad6e318ee9e0c430ff69be7a515d44def"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -28992,10 +38371,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29003,10 +38379,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b7b664a39372dd6142b8ef7906857e4ab3f1fc84"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29014,10 +38387,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29025,10 +38395,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/b7c31bb5f6acc65b88e31400dcae71f7be392c86"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29036,10 +38403,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29047,10 +38411,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ba942f8fb244b60561a067129c242c4bc4fdd5e1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29058,10 +38419,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29069,10 +38427,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/baa28a5baedb645f4430940a4b4b1142f4b03e0f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29080,10 +38435,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29091,10 +38443,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/baf7839388e10ff0c410a58797482cb83693b309"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29102,10 +38451,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29113,10 +38459,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/bbc03bf6274a79528d43e200e8f1aaa770a155d6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29124,10 +38467,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29135,10 +38475,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/bc9e17fed43c5d0668a87e8d6354c344c5b4d00b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29146,10 +38483,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29157,10 +38491,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/bcc7340f8876a7dff381ca676efc39d30eed9f48"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29168,10 +38499,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -29179,10 +38523,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/be3237e72b3d8d56eec0520145dd7d1a5064eede"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29190,10 +38531,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29201,10 +38539,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/be8cc5bab95e0ea7af538ca11175d710da6207d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29212,10 +38547,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -29223,10 +38571,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c0deaead93c9b3f2fc211fb7f0711ac192715a40"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29234,10 +38579,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29245,10 +38587,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c24143cf5f6f77f002e0ab82e3060906e2e7d062"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29256,10 +38595,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29267,10 +38603,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c3afa705dab02fea4d892134e7c01c3af270cb6e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29278,10 +38611,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29289,10 +38619,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c3de41124a14ea562360aabc9e12666851bff2fe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29300,10 +38627,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29311,10 +38635,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c4e60ae7c05b12a90dd7c43fbc85ae4be7540f18"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29322,10 +38643,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29333,10 +38651,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c5d0c169d326d79fc4ee8521b282dbcbf33c1d5c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29344,10 +38659,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29355,10 +38667,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c5dfb4a82f91d07041d4b0ca6cc34cfa1e9c7199"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29366,10 +38675,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29377,10 +38683,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c685689a9d5b259afe237d857b7c6551dc95c176"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29388,10 +38691,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29399,10 +38699,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c77087b4651f4c62a780d77a3b4c233490244e8a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29410,10 +38707,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29421,10 +38715,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c784ad2e205ba49b5bb1302746723dbc57320981"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29432,10 +38723,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29443,10 +38731,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c84da54dacf04445b50448a70fb0ecdd08e9234a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29454,10 +38739,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -29465,10 +38763,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c916ea9c6901c1e77af764773bd2843baa2ebdc6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29476,10 +38771,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29487,10 +38779,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/c97ebf43d8a5ce5cdb8e93a5d0362239c284ab4d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29498,10 +38787,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29509,10 +38795,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ca0db313bf949ba3f87a5254646a7a7dc8a7f89d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29520,10 +38803,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29531,10 +38811,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cc4197d2381a75b674fe4944b8c690fe69a0b3b1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29542,10 +38819,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29553,10 +38827,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cceb4c620c02337138e489383db0d4f4e2c7a722"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29564,10 +38835,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29575,10 +38843,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cd4be18b1ae872c40580edc4fe8cbdf1fe2a3881"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29586,10 +38851,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29597,10 +38859,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cd76ed6aff7e074b0cfdcc6305ec4e453d8304bb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29608,10 +38867,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29619,10 +38875,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ce990633c0f2b2a2ddb66144ed942d4bc9bcd8fb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29630,10 +38883,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29641,10 +38891,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ceb297908903ba0fc24982ad4e6010e79dfbdd5e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29652,10 +38899,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29663,10 +38907,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cedd54df6d34491dbf7843c2621d6818418aca02"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29674,10 +38915,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29685,10 +38923,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cf75632ee185df2cbbbe148e2e1ad5410f11d361"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29696,10 +38931,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29707,10 +38939,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/cfa40fccc5ea4304e83ca26f4e567765c2c08627"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29718,10 +38947,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29729,10 +38955,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-12b69708d452b3cefe2da4a708a1030a661d37fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29740,10 +38963,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29751,10 +38971,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-3bd02c98286bfa7be8e13c5500ddb587bba74fbb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29762,10 +38979,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29773,10 +38987,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-53e93a1906d8442d058500e7107929cdd3e84ff8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29784,10 +38995,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29795,10 +39003,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-570c79624a2e4d36be107745d2b25e74464553af"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29806,10 +39011,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29817,10 +39019,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-8e546795782dffa5d5f5e94c9510aac178fcee39"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29828,10 +39027,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29839,10 +39035,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-d5af12c391b7bf0ce63ee3dc656ee4410fe496eb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29850,10 +39043,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29861,10 +39051,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-d92bb454bbbd415175df541661e3696453ce3e43"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29872,10 +39059,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29883,10 +39067,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/crash-e470e9fd09a5c9ef303813a40361c897650289fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29894,10 +39075,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29905,10 +39083,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d194592e6f471dd487ca2625e6c3da7802ea372f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29916,10 +39091,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29927,10 +39099,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d1b1863b478e1ea71eafac9e03256080c8f0d1c5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29938,10 +39107,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29949,10 +39115,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d24d1b9d754391fd0b11b0456a2e8c6050cadee6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29960,10 +39123,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29971,10 +39131,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d250e525e8ff2ae4a9bddb2e478a90a1242155f0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -29982,10 +39139,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -29993,10 +39147,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d257c41db22b60cd937de16b9d90a44b9fa8e426"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30004,10 +39155,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -30015,10 +39179,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d3386702918881101368cdba2c4967e86ff3a7b9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30026,10 +39187,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30037,10 +39195,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d363f288f48fba8fde401978b7e764295735645e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30048,10 +39203,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30059,10 +39211,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d36e015b1e14ecb9559d67bb09c2851699f0aa35"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30070,10 +39219,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30081,10 +39227,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d49450b97f489f0dea74a9f83c71abeba1066d3c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30092,10 +39235,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -30103,10 +39259,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d60469c0b5b385f20d55aa5cca55bc2c801f3b95"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30114,10 +39267,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30125,10 +39275,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d70b2046ee62676b525490b70812c2157e5a3585"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30136,10 +39283,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30147,10 +39291,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d727b7edb460c549d7b12b90f581048c9f4747e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30158,10 +39299,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30169,10 +39307,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d89026894e6c5f8b5c88dec12950f56c4b6924ba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30180,10 +39315,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30191,10 +39323,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d90c312791129dee8c5f85cb3308323d0c39b70d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30202,10 +39331,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30213,10 +39339,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/d91281daad9b821294db204dfc244b2d0d5496e4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30224,10 +39347,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30235,10 +39355,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/da322a6b88da87babb52d1527fe54cb4ac214b32"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30246,10 +39363,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30257,10 +39371,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/da4d300d0a8e6f803ec053e3e7689c4b91eaef90"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30268,10 +39379,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30279,10 +39387,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/da538941f1613c627523cb1be71eb220d1ca2579"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30290,10 +39395,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30301,10 +39403,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/da8d4c7f02dbeaa543c159b3a4e527059978a429"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30312,10 +39411,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30323,10 +39419,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/data_frame.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30334,10 +39427,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30345,10 +39435,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc4a248fa4c903ce3a571dd18aea575019445740"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30356,10 +39443,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30367,10 +39451,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc7ebba06558484af10b5aafd01ec4fd59276b12"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30378,10 +39459,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30389,10 +39467,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/dc815fd6d5e817898238481472f359bc50b510c4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30400,10 +39475,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30411,10 +39483,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/dccd1fd6d3394f5f68c87950ed7356a2e9ef0f6f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30422,10 +39491,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30433,10 +39499,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/dd662353bad317cee7d16191a39e094bfa4898f2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30444,10 +39507,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30455,10 +39515,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/df684493457bc8d87dec2ca0825f7b43978fecfd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30466,10 +39523,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30477,10 +39531,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e0d1ee5e2e169dcae87f790f5c27e84a3453cedb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30488,10 +39539,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -30499,10 +39563,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e1bd70aa5c802cd4462ff4833c09ed432ce4c9fa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30510,10 +39571,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -30521,10 +39595,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e262f378a3d27bc519d472ce3650bdffcd48a055"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30532,10 +39603,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30543,10 +39611,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e309e21c69e4b96ab37f675f4e87a52453512ef8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30554,10 +39619,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -30565,10 +39643,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e3422e8f5d63a9ef180aab552353955c7aba90b0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30576,10 +39651,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30587,10 +39659,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e40b0fa5d814be8f2081ca2c8e0a4090d4893831"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30598,10 +39667,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30609,10 +39675,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e442f9fd63bc5345de1c14803d4ca4bb6f1152cf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30620,10 +39683,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30631,10 +39691,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e4c0e27cfd3690b8255a8214d6dd055385d1d24e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30642,10 +39699,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30653,10 +39707,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e4dc0a111e77dc495c5db07df5e2917adb674697"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30664,10 +39715,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30675,10 +39723,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e5a7c086208248a15ee6fa5195fc4ce22469de15"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30686,10 +39731,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30697,10 +39739,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e5ac3394971400b6636d029aec7ec665a94ecf29"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30708,10 +39747,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30719,10 +39755,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e61f728210ce72ed8b2c066bd1b1ecf9e6824b77"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30730,10 +39763,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30741,10 +39771,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e6a08259a7d47601eab5c0249cb6547024e002c7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30752,10 +39779,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -30763,10 +39803,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e6f5cc0702a5f38b9e7339849e1dd2e4001e547d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30774,10 +39811,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30785,10 +39819,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e7c26599fb2e2b031346ff1ba09294fd758f7abe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30796,10 +39827,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30807,10 +39835,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e8323c817d18f0c920d3cf53be41a9bc0fd64b76"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30818,10 +39843,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30829,10 +39851,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e969affd8af10a1b87dc63afd3b29cce3e58fbb2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30840,10 +39859,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30851,10 +39867,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/e9f7f7f258c72222397a960652c01d2a37e2afe3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30862,10 +39875,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30873,10 +39883,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/eb969b9ab1b0d6b5d197795223ba7a091ebd8460"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30884,10 +39891,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30895,10 +39899,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ebb0786acc21c6185356eae9a62490a03fddd1f2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30906,10 +39907,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30917,10 +39915,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ec180175f0edea0a6c3eea2ae719b006bc029ff8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30928,10 +39923,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30939,10 +39931,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ed6358fbe6721c9ac01a6f4cab4d2df377eb1f11"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30950,10 +39939,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30961,10 +39947,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ee436743977b8e31feec22a91b1ce23dee96665e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30972,10 +39955,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -30983,10 +39963,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/ef1984d6146670122c7a7246374bca460e7284e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -30994,10 +39971,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31005,10 +39979,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/eff9ad9144a2953fadc019fe72eb1cc3447c33fb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31016,10 +39987,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31027,10 +39995,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/empty"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31038,10 +40003,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31049,10 +40011,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f03120d1a8376638e071735bf4746454b6ede389"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31060,10 +40019,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31071,10 +40027,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f09410ab7bc19ee1ff206f94e8eec2931faef15f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31082,10 +40035,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31093,10 +40043,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f1b9b6803e41beabb1a762d511fc148116e09e78"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31104,10 +40051,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31115,10 +40059,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f24f925945aaf5e8b5ee470935e5aa7f847e7a72"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31126,10 +40067,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31137,10 +40075,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f41f9319bda14ef21b925c46945b30728503dfaf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31148,10 +40083,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31159,10 +40091,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f4499e3d4bf60ae3ae929c485a13ea4dc2713369"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31170,10 +40099,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31181,10 +40107,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f5b1eab444efb2664a295d4e6d087eb209c0c480"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31192,10 +40115,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31203,10 +40123,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f66305230042fa83fcd1b98c469d90ffef3ff6da"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31214,10 +40131,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31225,10 +40139,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f6af3f46aacee395877d7f7909f8e412a6538efb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31236,10 +40147,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31247,10 +40155,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f74143e8160754e40eb4d21a182c970210707979"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31258,10 +40163,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -31269,10 +40187,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f8467d9574de94b9bb904f75a6a7e2405c36f105"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31280,10 +40195,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31291,10 +40203,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f84f5d6188cf099465f0b70337b87ad8aa8efb78"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31302,10 +40211,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -31313,10 +40235,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f91f76fa45a23adfed48a10ec9512cf16bfb6636"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31324,10 +40243,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31335,10 +40251,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f96843fdf2d6fdd661c26201d96ae7bec72c6c3d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31346,10 +40259,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31357,10 +40267,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f9940356ee9b212849fbdf0d818b17af1a4f3c6c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31368,10 +40275,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31379,10 +40283,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/f9c875c00b7327df5bf21c3e051b55b0d2ed3cc8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31390,10 +40291,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31401,10 +40299,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fb340fff42a4d7ebf6b82adb9345655ffeeb05d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31412,10 +40307,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -31423,10 +40331,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fcc557c9844892675be823fac8788eb694a3a118"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31434,10 +40339,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31445,10 +40347,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fda07f0de15cac77ccc54ec221d81cdade189bfd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31456,10 +40355,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31467,10 +40363,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fdb553b8d82e68270a7345b048772bf8367b1224"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31478,10 +40371,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31489,10 +40379,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fe1390762579b5c335bbdea73e251b95b979c3c9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31500,10 +40387,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31511,10 +40395,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fecccfc70b1cf1a524b9f28a9ba2c153c8e14d0e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31522,10 +40403,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31533,10 +40411,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/fef80aa34c31700ac8e53bede4a97131176ceef0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31544,10 +40419,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31555,10 +40427,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/hdr_frame.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31566,10 +40435,7 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31577,10 +40443,7 @@
"test/core/end2end/fuzzers/client_fuzzer_corpus/settings_frame_1.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31588,10 +40451,23 @@
"language": "c",
"name": "client_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "client_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -31599,10 +40475,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31610,10 +40483,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31621,10 +40491,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31632,10 +40499,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31643,10 +40507,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31654,10 +40515,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31665,10 +40523,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31676,10 +40531,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31687,10 +40539,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31698,10 +40547,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31709,10 +40555,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31720,10 +40563,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31731,10 +40571,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31742,10 +40579,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31753,10 +40587,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31764,10 +40595,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31775,10 +40603,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31786,10 +40611,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31797,10 +40619,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31808,10 +40627,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31819,10 +40635,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31830,10 +40643,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31841,10 +40651,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31852,10 +40659,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31863,10 +40667,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31874,10 +40675,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31885,10 +40683,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31896,10 +40691,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31907,10 +40699,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31918,10 +40707,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31929,10 +40715,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31940,10 +40723,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31951,10 +40731,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31962,10 +40739,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31973,10 +40747,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -31984,10 +40755,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -31995,10 +40763,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32006,10 +40771,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32017,10 +40779,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32028,10 +40787,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32039,10 +40795,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32050,10 +40803,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32061,10 +40811,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32072,10 +40819,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32083,10 +40827,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32094,10 +40835,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32105,10 +40843,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32116,10 +40851,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32127,10 +40859,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32138,10 +40867,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32149,10 +40875,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32160,10 +40883,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32171,10 +40891,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32182,10 +40899,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32193,10 +40907,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32204,10 +40915,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32215,10 +40923,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32226,10 +40931,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32237,10 +40939,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32248,10 +40947,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32259,10 +40955,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32270,10 +40963,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32281,10 +40971,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32292,10 +40979,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32303,10 +40987,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32314,10 +40995,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32325,10 +41003,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32336,10 +41011,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32347,10 +41019,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32358,10 +41027,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32369,10 +41035,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32380,10 +41043,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32391,10 +41051,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32402,10 +41059,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32413,10 +41067,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32424,10 +41075,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32435,10 +41083,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32446,10 +41091,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32457,10 +41099,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32468,10 +41107,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32479,10 +41115,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32490,10 +41123,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32501,10 +41131,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32512,10 +41139,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32523,10 +41147,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32534,10 +41155,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32545,10 +41163,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32556,10 +41171,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32567,10 +41179,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32578,10 +41187,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32589,10 +41195,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32600,10 +41203,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32611,10 +41211,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32622,10 +41219,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32633,10 +41227,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32644,10 +41235,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32655,10 +41243,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32666,10 +41251,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32677,10 +41259,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32688,10 +41267,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32699,10 +41275,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32710,10 +41283,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32721,10 +41291,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32732,10 +41299,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32743,10 +41307,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32754,10 +41315,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32765,10 +41323,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32776,10 +41331,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32787,10 +41339,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32798,10 +41347,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32809,10 +41355,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32820,10 +41363,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32831,10 +41371,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32842,10 +41379,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32853,10 +41387,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32864,10 +41395,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32875,10 +41403,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32886,10 +41411,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32897,10 +41419,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32908,10 +41427,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32919,10 +41435,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32930,10 +41443,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32941,10 +41451,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32952,10 +41459,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32963,10 +41467,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32974,10 +41475,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -32985,10 +41483,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -32996,10 +41491,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33007,10 +41499,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33018,10 +41507,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33029,10 +41515,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33040,10 +41523,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33051,10 +41531,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33062,10 +41539,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33073,10 +41547,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33084,10 +41555,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33095,10 +41563,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33106,10 +41571,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33117,10 +41579,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33128,10 +41587,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33139,10 +41595,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33150,10 +41603,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33161,10 +41611,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33172,10 +41619,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33183,10 +41627,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33194,10 +41635,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33205,10 +41643,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33216,10 +41651,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33227,10 +41659,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33238,10 +41667,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33249,10 +41675,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33260,10 +41683,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33271,10 +41691,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33282,10 +41699,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33293,10 +41707,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33304,10 +41715,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33315,10 +41723,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33326,10 +41731,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33337,10 +41739,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33348,10 +41747,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33359,10 +41755,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33370,10 +41763,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33381,10 +41771,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33392,10 +41779,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33403,10 +41787,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33414,10 +41795,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33425,10 +41803,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33436,10 +41811,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33447,10 +41819,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33458,10 +41827,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33469,10 +41835,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33480,10 +41843,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33491,10 +41851,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33502,10 +41859,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33513,10 +41867,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33524,10 +41875,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33535,10 +41883,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33546,10 +41891,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33557,10 +41899,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33568,10 +41907,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33579,10 +41915,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33590,10 +41923,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33601,10 +41931,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33612,10 +41939,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33623,10 +41947,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33634,10 +41955,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33645,10 +41963,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33656,10 +41971,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33667,10 +41979,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33678,10 +41987,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33689,10 +41995,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33700,10 +42003,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33711,10 +42011,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33722,10 +42019,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33733,10 +42027,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33744,10 +42035,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33755,10 +42043,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33766,10 +42051,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33777,10 +42059,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33788,10 +42067,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33799,10 +42075,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33810,10 +42083,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33821,10 +42091,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33832,10 +42099,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33843,10 +42107,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33854,10 +42115,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33865,10 +42123,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33876,10 +42131,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33887,10 +42139,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33898,10 +42147,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33909,10 +42155,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33920,10 +42163,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33931,10 +42171,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33942,10 +42179,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33953,10 +42187,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33964,10 +42195,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33975,10 +42203,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -33986,10 +42211,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -33997,10 +42219,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34008,10 +42227,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34019,10 +42235,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34030,10 +42243,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34041,10 +42251,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34052,10 +42259,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34063,10 +42267,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34074,10 +42275,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34085,10 +42283,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34096,10 +42291,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34107,10 +42299,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34118,10 +42307,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34129,10 +42315,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34140,10 +42323,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34151,10 +42331,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/6129954942e26c2a9ec071b6659675745613cf3c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34162,10 +42339,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34173,10 +42347,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34184,10 +42355,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34195,10 +42363,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34206,10 +42371,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34217,10 +42379,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34228,10 +42387,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34239,10 +42395,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34250,10 +42403,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34261,10 +42411,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34272,10 +42419,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34283,10 +42427,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34294,10 +42435,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34305,10 +42443,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34316,10 +42451,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34327,10 +42459,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34338,10 +42467,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34349,10 +42475,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34360,10 +42483,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34371,10 +42491,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34382,10 +42499,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34393,10 +42507,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34404,10 +42515,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34415,10 +42523,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34426,10 +42531,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34437,10 +42539,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34448,10 +42547,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34459,10 +42555,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34470,10 +42563,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34481,10 +42571,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34492,10 +42579,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34503,10 +42587,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34514,10 +42595,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34525,10 +42603,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34536,10 +42611,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34547,10 +42619,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34558,10 +42627,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34569,10 +42635,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34580,10 +42643,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34591,10 +42651,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34602,10 +42659,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34613,10 +42667,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34624,10 +42675,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34635,10 +42683,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34646,10 +42691,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34657,10 +42699,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34668,10 +42707,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34679,10 +42715,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34690,10 +42723,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34701,10 +42731,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34712,10 +42739,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34723,10 +42747,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34734,10 +42755,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34745,10 +42763,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34756,10 +42771,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34767,10 +42779,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34778,10 +42787,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34789,10 +42795,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34800,10 +42803,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34811,10 +42811,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34822,10 +42819,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34833,10 +42827,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/7ff3b6239b04479a9caf67f45b2d0c619f712815"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34844,10 +42835,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34855,10 +42843,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34866,10 +42851,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34877,10 +42859,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34888,10 +42867,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34899,10 +42875,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34910,10 +42883,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34921,10 +42891,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34932,10 +42899,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34943,10 +42907,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34954,10 +42915,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34965,10 +42923,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34976,10 +42931,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -34987,10 +42939,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -34998,10 +42947,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35009,10 +42955,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35020,10 +42963,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35031,10 +42971,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35042,10 +42979,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35053,10 +42987,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35064,10 +42995,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35075,10 +43003,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35086,10 +43011,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35097,10 +43019,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35108,10 +43027,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35119,10 +43035,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35130,10 +43043,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35141,10 +43051,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35152,10 +43059,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35163,10 +43067,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35174,10 +43075,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35185,10 +43083,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35196,10 +43091,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35207,10 +43099,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35218,10 +43107,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35229,10 +43115,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35240,10 +43123,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35251,10 +43131,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35262,10 +43139,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35273,10 +43147,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35284,10 +43155,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35295,10 +43163,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35306,10 +43171,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35317,10 +43179,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35328,10 +43187,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35339,10 +43195,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35350,10 +43203,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35361,10 +43211,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35372,10 +43219,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35383,10 +43227,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35394,10 +43235,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35405,10 +43243,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35416,10 +43251,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35427,10 +43259,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35438,10 +43267,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35449,10 +43275,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35460,10 +43283,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35471,10 +43291,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35482,10 +43299,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35493,10 +43307,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35504,10 +43315,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35515,10 +43323,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35526,10 +43331,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35537,10 +43339,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35548,10 +43347,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35559,10 +43355,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35570,10 +43363,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35581,10 +43371,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35592,10 +43379,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35603,10 +43387,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35614,10 +43395,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35625,10 +43403,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35636,10 +43411,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35647,10 +43419,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35658,10 +43427,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35669,10 +43435,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35680,10 +43443,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35691,10 +43451,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35702,10 +43459,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35713,10 +43467,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35724,10 +43475,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35735,10 +43483,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35746,10 +43491,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35757,10 +43499,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35768,10 +43507,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35779,10 +43515,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35790,10 +43523,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35801,10 +43531,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35812,10 +43539,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35823,10 +43547,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35834,10 +43555,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35845,10 +43563,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35856,10 +43571,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35867,10 +43579,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35878,10 +43587,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35889,10 +43595,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35900,10 +43603,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35911,10 +43611,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35922,10 +43619,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35933,10 +43627,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35944,10 +43635,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35955,10 +43643,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35966,10 +43651,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35977,10 +43659,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -35988,10 +43667,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -35999,10 +43675,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36010,10 +43683,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36021,10 +43691,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36032,10 +43699,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36043,10 +43707,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36054,10 +43715,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36065,10 +43723,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36076,10 +43731,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36087,10 +43739,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36098,10 +43747,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36109,10 +43755,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36120,10 +43763,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36131,10 +43771,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36142,10 +43779,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36153,10 +43787,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36164,10 +43795,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36175,10 +43803,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36186,10 +43811,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36197,10 +43819,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36208,10 +43827,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36219,10 +43835,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36230,10 +43843,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36241,10 +43851,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36252,10 +43859,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36263,10 +43867,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36274,10 +43875,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36285,10 +43883,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36296,10 +43891,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36307,10 +43899,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36318,10 +43907,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36329,10 +43915,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36340,10 +43923,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36351,10 +43931,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36362,10 +43939,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36373,10 +43947,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36384,10 +43955,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36395,10 +43963,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36406,10 +43971,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36417,10 +43979,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36428,10 +43987,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36439,10 +43995,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36450,10 +44003,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36461,10 +44011,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36472,10 +44019,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36483,10 +44027,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36494,10 +44035,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36505,10 +44043,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36516,10 +44051,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36527,10 +44059,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36538,10 +44067,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36549,10 +44075,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36560,10 +44083,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36571,10 +44091,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36582,10 +44099,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36593,10 +44107,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36604,10 +44115,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36615,10 +44123,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36626,10 +44131,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36637,10 +44139,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36648,10 +44147,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36659,10 +44155,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36670,10 +44163,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36681,10 +44171,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36692,10 +44179,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36703,10 +44187,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36714,10 +44195,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36725,10 +44203,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36736,10 +44211,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36747,10 +44219,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36758,10 +44227,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36769,10 +44235,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36780,10 +44243,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36791,10 +44251,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36802,10 +44259,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36813,10 +44267,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36824,10 +44275,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36835,10 +44283,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36846,10 +44291,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36857,10 +44299,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36868,10 +44307,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36879,10 +44315,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36890,10 +44323,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36901,10 +44331,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36912,10 +44339,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36923,10 +44347,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c2eae71daad0d3561ab4d09b8b85372b8d790bc1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36934,10 +44355,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36945,10 +44363,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c37fda8d02e99132a1de99f959596c784ab8a53c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36956,10 +44371,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36967,10 +44379,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -36978,10 +44387,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -36989,10 +44395,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37000,10 +44403,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37011,10 +44411,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37022,10 +44419,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37033,10 +44427,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37044,10 +44435,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37055,10 +44443,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37066,10 +44451,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37077,10 +44459,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37088,10 +44467,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37099,10 +44475,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37110,10 +44483,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37121,10 +44491,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37132,10 +44499,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37143,10 +44507,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37154,10 +44515,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37165,10 +44523,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37176,10 +44531,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37187,10 +44539,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37198,10 +44547,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37209,10 +44555,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37220,10 +44563,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37231,10 +44571,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37242,10 +44579,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37253,10 +44587,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37264,10 +44595,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37275,10 +44603,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37286,10 +44611,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37297,10 +44619,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37308,10 +44627,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37319,10 +44635,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ce6b642b81373f05baa2a6fe6e9d5d1387046285"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37330,10 +44643,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37341,10 +44651,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37352,10 +44659,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37363,10 +44667,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37374,10 +44675,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37385,10 +44683,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37396,10 +44691,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37407,10 +44699,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37418,10 +44707,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37429,10 +44715,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d1c7ae01a81a122c2fd7c5d8debcae7566e9ee2f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37440,10 +44723,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37451,10 +44731,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37462,10 +44739,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37473,10 +44747,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37484,10 +44755,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37495,10 +44763,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37506,10 +44771,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37517,10 +44779,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37528,10 +44787,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37539,10 +44795,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37550,10 +44803,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37561,10 +44811,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37572,10 +44819,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37583,10 +44827,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37594,10 +44835,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37605,10 +44843,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37616,10 +44851,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37627,10 +44859,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37638,10 +44867,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37649,10 +44875,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37660,10 +44883,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37671,10 +44891,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37682,10 +44899,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37693,10 +44907,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37704,10 +44915,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37715,10 +44923,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37726,10 +44931,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37737,10 +44939,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37748,10 +44947,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37759,10 +44955,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37770,10 +44963,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37781,10 +44971,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37792,10 +44979,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37803,10 +44987,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37814,10 +44995,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37825,10 +45003,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37836,10 +45011,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37847,10 +45019,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37858,10 +45027,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37869,10 +45035,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37880,10 +45043,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37891,10 +45051,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37902,10 +45059,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37913,10 +45067,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37924,10 +45075,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37935,10 +45083,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37946,10 +45091,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37957,10 +45099,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37968,10 +45107,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -37979,10 +45115,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -37990,10 +45123,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38001,10 +45131,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38012,10 +45139,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38023,10 +45147,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38034,10 +45155,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38045,10 +45163,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38056,10 +45171,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38067,10 +45179,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38078,10 +45187,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38089,10 +45195,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38100,10 +45203,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38111,10 +45211,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38122,10 +45219,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38133,10 +45227,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38144,10 +45235,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38155,10 +45243,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38166,10 +45251,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38177,10 +45259,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38188,10 +45267,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38199,10 +45275,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38210,10 +45283,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38221,10 +45291,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38232,10 +45299,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38243,10 +45307,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38254,10 +45315,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38265,10 +45323,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38276,10 +45331,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38287,10 +45339,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38298,10 +45347,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38309,10 +45355,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38320,10 +45363,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38331,10 +45371,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38342,10 +45379,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38353,10 +45387,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38364,10 +45395,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38375,10 +45403,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38386,10 +45411,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38397,10 +45419,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38408,10 +45427,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38419,10 +45435,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38430,10 +45443,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38441,10 +45451,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38452,10 +45459,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38463,10 +45467,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38474,10 +45475,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38485,10 +45483,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38496,10 +45491,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38507,10 +45499,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38518,10 +45507,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38529,10 +45515,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38540,10 +45523,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38551,10 +45531,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38562,10 +45539,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38573,10 +45547,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38584,10 +45555,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38595,10 +45563,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38606,10 +45571,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38617,10 +45579,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38628,10 +45587,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38639,10 +45595,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38650,10 +45603,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38661,10 +45611,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38672,10 +45619,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38683,10 +45627,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38694,10 +45635,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38705,10 +45643,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38716,10 +45651,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38727,10 +45659,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38738,10 +45667,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38749,10 +45675,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38760,10 +45683,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38771,10 +45691,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ff2c949863eb4e14d9e835c51591304403d91b6c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38782,10 +45699,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38793,10 +45707,7 @@
"test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38804,10 +45715,7 @@
"language": "c",
"name": "hpack_parser_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38815,10 +45723,7 @@
"test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38826,10 +45731,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38837,10 +45739,7 @@
"test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38848,10 +45747,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38859,10 +45755,7 @@
"test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38870,10 +45763,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38881,10 +45771,7 @@
"test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38892,10 +45779,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38903,10 +45787,7 @@
"test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38914,10 +45795,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38925,10 +45803,7 @@
"test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38936,10 +45811,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38947,10 +45819,7 @@
"test/core/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38958,10 +45827,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38969,10 +45835,7 @@
"test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -38980,10 +45843,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -38991,10 +45851,7 @@
"test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39002,10 +45859,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39013,10 +45867,7 @@
"test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39024,10 +45875,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39035,10 +45883,7 @@
"test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39046,10 +45891,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39057,10 +45899,7 @@
"test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39068,10 +45907,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39079,10 +45915,7 @@
"test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39090,10 +45923,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39101,10 +45931,7 @@
"test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39112,10 +45939,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39123,10 +45947,7 @@
"test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39134,10 +45955,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39145,10 +45963,7 @@
"test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39156,10 +45971,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39167,10 +45979,7 @@
"test/core/http/corpus/3787bcc22ef645e665cc5f722b8a633af86de9cf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39178,10 +45987,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39189,10 +45995,7 @@
"test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39200,10 +46003,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39211,10 +46011,7 @@
"test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39222,10 +46019,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39233,10 +46027,7 @@
"test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39244,10 +46035,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39255,10 +46043,7 @@
"test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39266,10 +46051,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39277,10 +46059,7 @@
"test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39288,10 +46067,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39299,10 +46075,7 @@
"test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39310,10 +46083,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39321,10 +46091,7 @@
"test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39332,10 +46099,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39343,10 +46107,7 @@
"test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39354,10 +46115,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39365,10 +46123,7 @@
"test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39376,10 +46131,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39387,10 +46139,7 @@
"test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39398,10 +46147,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39409,10 +46155,7 @@
"test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39420,10 +46163,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39431,10 +46171,7 @@
"test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39442,10 +46179,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39453,10 +46187,7 @@
"test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39464,10 +46195,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39475,10 +46203,7 @@
"test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39486,10 +46211,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39497,10 +46219,7 @@
"test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39508,10 +46227,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39519,10 +46235,7 @@
"test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39530,10 +46243,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39541,10 +46251,7 @@
"test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39552,10 +46259,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39563,10 +46267,7 @@
"test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39574,10 +46275,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39585,10 +46283,7 @@
"test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39596,10 +46291,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39607,10 +46299,7 @@
"test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39618,10 +46307,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39629,10 +46315,7 @@
"test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39640,10 +46323,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39651,10 +46331,7 @@
"test/core/http/corpus/97e4499d450c95660de86747f527e670f2012548"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39662,10 +46339,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39673,10 +46347,7 @@
"test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39684,10 +46355,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39695,10 +46363,7 @@
"test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39706,10 +46371,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39717,10 +46379,7 @@
"test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39728,10 +46387,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39739,10 +46395,7 @@
"test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39750,10 +46403,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39761,10 +46411,7 @@
"test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39772,10 +46419,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39783,10 +46427,7 @@
"test/core/http/corpus/ae8ba95d7dbe99926a8f5bfd80347fd6a4b616a0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39794,10 +46435,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39805,10 +46443,7 @@
"test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39816,10 +46451,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39827,10 +46459,7 @@
"test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39838,10 +46467,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39849,10 +46475,7 @@
"test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39860,10 +46483,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39871,10 +46491,7 @@
"test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39882,10 +46499,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39893,10 +46507,7 @@
"test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39904,10 +46515,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39915,10 +46523,7 @@
"test/core/http/corpus/d39c8ee11a697634a09b309460c0bbd967e7effa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39926,10 +46531,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39937,10 +46539,7 @@
"test/core/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39948,10 +46547,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39959,10 +46555,7 @@
"test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39970,10 +46563,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -39981,10 +46571,7 @@
"test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -39992,10 +46579,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40003,10 +46587,7 @@
"test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40014,10 +46595,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40025,10 +46603,7 @@
"test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40036,10 +46611,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40047,10 +46619,7 @@
"test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40058,10 +46627,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40069,10 +46635,7 @@
"test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40080,10 +46643,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40091,10 +46651,7 @@
"test/core/http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40102,10 +46659,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40113,10 +46667,7 @@
"test/core/http/corpus/request1.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40124,10 +46675,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40135,10 +46683,7 @@
"test/core/http/corpus/request2.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40146,10 +46691,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40157,10 +46699,7 @@
"test/core/http/corpus/request3.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40168,10 +46707,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40179,10 +46715,7 @@
"test/core/http/corpus/request4.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40190,10 +46723,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40201,10 +46731,7 @@
"test/core/http/corpus/request5.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40212,10 +46739,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40223,10 +46747,7 @@
"test/core/http/corpus/response1.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40234,10 +46755,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40245,10 +46763,7 @@
"test/core/http/corpus/response2.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40256,10 +46771,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40267,10 +46779,7 @@
"test/core/http/corpus/response3.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40278,10 +46787,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40289,10 +46795,7 @@
"test/core/http/corpus/response4.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40300,10 +46803,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40311,10 +46811,7 @@
"test/core/http/corpus/response5.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40322,10 +46819,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40333,10 +46827,7 @@
"test/core/http/corpus/response6.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40344,10 +46835,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40355,10 +46843,7 @@
"test/core/http/corpus/toolong.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40366,10 +46851,7 @@
"language": "c",
"name": "http_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40377,10 +46859,7 @@
"test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40388,10 +46867,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40399,10 +46875,7 @@
"test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40410,10 +46883,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40421,10 +46891,7 @@
"test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40432,10 +46899,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40443,10 +46907,7 @@
"test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40454,10 +46915,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40465,10 +46923,7 @@
"test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40476,10 +46931,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40487,10 +46939,7 @@
"test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40498,10 +46947,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40509,10 +46955,7 @@
"test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40520,10 +46963,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40531,10 +46971,7 @@
"test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40542,10 +46979,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40553,10 +46987,7 @@
"test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40564,10 +46995,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40575,10 +47003,7 @@
"test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40586,10 +47011,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40597,10 +47019,7 @@
"test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40608,10 +47027,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40619,10 +47035,7 @@
"test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40630,10 +47043,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40641,10 +47051,7 @@
"test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40652,10 +47059,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40663,10 +47067,7 @@
"test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40674,10 +47075,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40685,10 +47083,7 @@
"test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40696,10 +47091,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40707,10 +47099,7 @@
"test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40718,10 +47107,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40729,10 +47115,7 @@
"test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40740,10 +47123,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40751,10 +47131,7 @@
"test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40762,10 +47139,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40773,10 +47147,7 @@
"test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40784,10 +47155,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40795,10 +47163,7 @@
"test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40806,10 +47171,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40817,10 +47179,7 @@
"test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40828,10 +47187,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40839,10 +47195,7 @@
"test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40850,10 +47203,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40861,10 +47211,7 @@
"test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40872,10 +47219,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40883,10 +47227,7 @@
"test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40894,10 +47235,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40905,10 +47243,7 @@
"test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40916,10 +47251,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40927,10 +47259,7 @@
"test/core/json/corpus/15a8f2e7f94aa00b46f1b991416aa015dd633580"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40938,10 +47267,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40949,10 +47275,7 @@
"test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40960,10 +47283,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40971,10 +47291,7 @@
"test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -40982,10 +47299,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -40993,10 +47307,7 @@
"test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41004,10 +47315,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41015,10 +47323,7 @@
"test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41026,10 +47331,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41037,10 +47339,7 @@
"test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41048,10 +47347,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41059,10 +47355,7 @@
"test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41070,10 +47363,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41081,10 +47371,7 @@
"test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41092,10 +47379,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41103,10 +47387,7 @@
"test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41114,10 +47395,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41125,10 +47403,7 @@
"test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41136,10 +47411,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41147,10 +47419,7 @@
"test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41158,10 +47427,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41169,10 +47435,7 @@
"test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41180,10 +47443,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41191,10 +47451,7 @@
"test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41202,10 +47459,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41213,10 +47467,7 @@
"test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41224,10 +47475,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41235,10 +47483,7 @@
"test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41246,10 +47491,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41257,10 +47499,7 @@
"test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41268,10 +47507,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41279,10 +47515,7 @@
"test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41290,10 +47523,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41301,10 +47531,7 @@
"test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41312,10 +47539,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41323,10 +47547,7 @@
"test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41334,10 +47555,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41345,10 +47563,7 @@
"test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41356,10 +47571,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41367,10 +47579,7 @@
"test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41378,10 +47587,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41389,10 +47595,7 @@
"test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41400,10 +47603,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41411,10 +47611,7 @@
"test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41422,10 +47619,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41433,10 +47627,7 @@
"test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41444,10 +47635,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41455,10 +47643,7 @@
"test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41466,10 +47651,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41477,10 +47659,7 @@
"test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41488,10 +47667,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41499,10 +47675,7 @@
"test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41510,10 +47683,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41521,10 +47691,7 @@
"test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41532,10 +47699,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41543,10 +47707,7 @@
"test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41554,10 +47715,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41565,10 +47723,7 @@
"test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41576,10 +47731,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41587,10 +47739,7 @@
"test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41598,10 +47747,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41609,10 +47755,7 @@
"test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41620,10 +47763,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41631,10 +47771,7 @@
"test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41642,10 +47779,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41653,10 +47787,7 @@
"test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41664,10 +47795,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41675,10 +47803,7 @@
"test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41686,10 +47811,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41697,10 +47819,7 @@
"test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41708,10 +47827,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41719,10 +47835,7 @@
"test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41730,10 +47843,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41741,10 +47851,7 @@
"test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41752,10 +47859,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41763,10 +47867,7 @@
"test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41774,10 +47875,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41785,10 +47883,7 @@
"test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41796,10 +47891,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41807,10 +47899,7 @@
"test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41818,10 +47907,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41829,10 +47915,7 @@
"test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41840,10 +47923,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41851,10 +47931,7 @@
"test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41862,10 +47939,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41873,10 +47947,7 @@
"test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41884,10 +47955,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41895,10 +47963,7 @@
"test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41906,10 +47971,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41917,10 +47979,7 @@
"test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41928,10 +47987,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41939,10 +47995,7 @@
"test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41950,10 +48003,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41961,10 +48011,7 @@
"test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41972,10 +48019,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -41983,10 +48027,7 @@
"test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -41994,10 +48035,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42005,10 +48043,7 @@
"test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42016,10 +48051,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42027,10 +48059,7 @@
"test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42038,10 +48067,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42049,10 +48075,7 @@
"test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42060,10 +48083,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42071,10 +48091,7 @@
"test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42082,10 +48099,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42093,10 +48107,7 @@
"test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42104,10 +48115,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42115,10 +48123,7 @@
"test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42126,10 +48131,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42137,10 +48139,7 @@
"test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42148,10 +48147,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42159,10 +48155,7 @@
"test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42170,10 +48163,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42181,10 +48171,7 @@
"test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42192,10 +48179,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42203,10 +48187,7 @@
"test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42214,10 +48195,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42225,10 +48203,7 @@
"test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42236,10 +48211,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42247,10 +48219,7 @@
"test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42258,10 +48227,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42269,10 +48235,7 @@
"test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42280,10 +48243,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42291,10 +48251,7 @@
"test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42302,10 +48259,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42313,10 +48267,7 @@
"test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42324,10 +48275,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42335,10 +48283,7 @@
"test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42346,10 +48291,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42357,10 +48299,7 @@
"test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42368,10 +48307,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42379,10 +48315,7 @@
"test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42390,10 +48323,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42401,10 +48331,7 @@
"test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42412,10 +48339,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42423,10 +48347,7 @@
"test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42434,10 +48355,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42445,10 +48363,7 @@
"test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42456,10 +48371,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42467,10 +48379,7 @@
"test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42478,10 +48387,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42489,10 +48395,7 @@
"test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42500,10 +48403,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42511,10 +48411,7 @@
"test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42522,10 +48419,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42533,10 +48427,7 @@
"test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42544,10 +48435,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42555,10 +48443,7 @@
"test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42566,10 +48451,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42577,10 +48459,7 @@
"test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42588,10 +48467,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42599,10 +48475,7 @@
"test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42610,10 +48483,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42621,10 +48491,7 @@
"test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42632,10 +48499,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42643,10 +48507,7 @@
"test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42654,10 +48515,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42665,10 +48523,7 @@
"test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42676,10 +48531,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42687,10 +48539,7 @@
"test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42698,10 +48547,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42709,10 +48555,7 @@
"test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42720,10 +48563,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42731,10 +48571,7 @@
"test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42742,10 +48579,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42753,10 +48587,7 @@
"test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42764,10 +48595,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42775,10 +48603,7 @@
"test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42786,10 +48611,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42797,10 +48619,7 @@
"test/core/json/corpus/56cd60743c2cee939f5f357905bd36ec9363f441"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42808,10 +48627,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42819,10 +48635,7 @@
"test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42830,10 +48643,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42841,10 +48651,7 @@
"test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42852,10 +48659,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42863,10 +48667,7 @@
"test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42874,10 +48675,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42885,10 +48683,7 @@
"test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42896,10 +48691,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42907,10 +48699,7 @@
"test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42918,10 +48707,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42929,10 +48715,7 @@
"test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42940,10 +48723,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42951,10 +48731,7 @@
"test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42962,10 +48739,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42973,10 +48747,7 @@
"test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -42984,10 +48755,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -42995,10 +48763,7 @@
"test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43006,10 +48771,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43017,10 +48779,7 @@
"test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43028,10 +48787,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43039,10 +48795,7 @@
"test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43050,10 +48803,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43061,10 +48811,7 @@
"test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43072,10 +48819,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43083,10 +48827,7 @@
"test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43094,10 +48835,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43105,10 +48843,7 @@
"test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43116,10 +48851,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43127,10 +48859,7 @@
"test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43138,10 +48867,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43149,10 +48875,7 @@
"test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43160,10 +48883,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43171,10 +48891,7 @@
"test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43182,10 +48899,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43193,10 +48907,7 @@
"test/core/json/corpus/5f3394f5058822cc044b92654837625897176480"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43204,10 +48915,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43215,10 +48923,7 @@
"test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43226,10 +48931,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43237,10 +48939,7 @@
"test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43248,10 +48947,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43259,10 +48955,7 @@
"test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43270,10 +48963,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43281,10 +48971,7 @@
"test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43292,10 +48979,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43303,10 +48987,7 @@
"test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43314,10 +48995,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43325,10 +49003,7 @@
"test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43336,10 +49011,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43347,10 +49019,7 @@
"test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43358,10 +49027,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43369,10 +49035,7 @@
"test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43380,10 +49043,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43391,10 +49051,7 @@
"test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43402,10 +49059,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43413,10 +49067,7 @@
"test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43424,10 +49075,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43435,10 +49083,7 @@
"test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43446,10 +49091,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43457,10 +49099,7 @@
"test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43468,10 +49107,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43479,10 +49115,7 @@
"test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43490,10 +49123,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43501,10 +49131,7 @@
"test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43512,10 +49139,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43523,10 +49147,7 @@
"test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43534,10 +49155,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43545,10 +49163,7 @@
"test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43556,10 +49171,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43567,10 +49179,7 @@
"test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43578,10 +49187,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43589,10 +49195,7 @@
"test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43600,10 +49203,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43611,10 +49211,7 @@
"test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43622,10 +49219,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43633,10 +49227,7 @@
"test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43644,10 +49235,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43655,10 +49243,7 @@
"test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43666,10 +49251,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43677,10 +49259,7 @@
"test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43688,10 +49267,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43699,10 +49275,7 @@
"test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43710,10 +49283,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43721,10 +49291,7 @@
"test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43732,10 +49299,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43743,10 +49307,7 @@
"test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43754,10 +49315,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43765,10 +49323,7 @@
"test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43776,10 +49331,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43787,10 +49339,7 @@
"test/core/json/corpus/743e89b768af4bd591ea7228118550b1bfb8e7d1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43798,10 +49347,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43809,10 +49355,7 @@
"test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43820,10 +49363,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43831,10 +49371,7 @@
"test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43842,10 +49379,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43853,10 +49387,7 @@
"test/core/json/corpus/775e8ffda1f5d340dba472d06dc7c8bf8159e379"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43864,10 +49395,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43875,10 +49403,7 @@
"test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43886,10 +49411,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43897,10 +49419,7 @@
"test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43908,10 +49427,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43919,10 +49435,7 @@
"test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43930,10 +49443,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43941,10 +49451,7 @@
"test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43952,10 +49459,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43963,10 +49467,7 @@
"test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43974,10 +49475,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -43985,10 +49483,7 @@
"test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -43996,10 +49491,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44007,10 +49499,7 @@
"test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44018,10 +49507,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44029,10 +49515,7 @@
"test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44040,10 +49523,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44051,10 +49531,7 @@
"test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44062,10 +49539,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44073,10 +49547,7 @@
"test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44084,10 +49555,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44095,10 +49563,7 @@
"test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44106,10 +49571,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44117,10 +49579,7 @@
"test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44128,10 +49587,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44139,10 +49595,7 @@
"test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44150,10 +49603,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44161,10 +49611,7 @@
"test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44172,10 +49619,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44183,10 +49627,7 @@
"test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44194,10 +49635,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44205,10 +49643,7 @@
"test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44216,10 +49651,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44227,10 +49659,7 @@
"test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44238,10 +49667,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44249,10 +49675,7 @@
"test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44260,10 +49683,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44271,10 +49691,7 @@
"test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44282,10 +49699,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44293,10 +49707,7 @@
"test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44304,10 +49715,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44315,10 +49723,7 @@
"test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44326,10 +49731,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44337,10 +49739,7 @@
"test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44348,10 +49747,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44359,10 +49755,7 @@
"test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44370,10 +49763,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44381,10 +49771,7 @@
"test/core/json/corpus/8d952ec2e33b2a6a1c7876898719a610f5546388"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44392,10 +49779,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44403,10 +49787,7 @@
"test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44414,10 +49795,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44425,10 +49803,7 @@
"test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44436,10 +49811,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44447,10 +49819,7 @@
"test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44458,10 +49827,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44469,10 +49835,7 @@
"test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44480,10 +49843,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44491,10 +49851,7 @@
"test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44502,10 +49859,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44513,10 +49867,7 @@
"test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44524,10 +49875,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44535,10 +49883,7 @@
"test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44546,10 +49891,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44557,10 +49899,7 @@
"test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44568,10 +49907,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44579,10 +49915,7 @@
"test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44590,10 +49923,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44601,10 +49931,7 @@
"test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44612,10 +49939,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44623,10 +49947,7 @@
"test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44634,10 +49955,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44645,10 +49963,7 @@
"test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44656,10 +49971,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44667,10 +49979,7 @@
"test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44678,10 +49987,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44689,10 +49995,7 @@
"test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44700,10 +50003,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44711,10 +50011,7 @@
"test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44722,10 +50019,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44733,10 +50027,7 @@
"test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44744,10 +50035,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44755,10 +50043,7 @@
"test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44766,10 +50051,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44777,10 +50059,7 @@
"test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44788,10 +50067,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44799,10 +50075,7 @@
"test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44810,10 +50083,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44821,10 +50091,7 @@
"test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44832,10 +50099,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44843,10 +50107,7 @@
"test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44854,10 +50115,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44865,10 +50123,7 @@
"test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44876,10 +50131,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44887,10 +50139,7 @@
"test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44898,10 +50147,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44909,10 +50155,7 @@
"test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44920,10 +50163,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44931,10 +50171,7 @@
"test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44942,10 +50179,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44953,10 +50187,7 @@
"test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44964,10 +50195,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44975,10 +50203,7 @@
"test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -44986,10 +50211,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -44997,10 +50219,7 @@
"test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45008,10 +50227,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45019,10 +50235,7 @@
"test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45030,10 +50243,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45041,10 +50251,7 @@
"test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45052,10 +50259,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45063,10 +50267,7 @@
"test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45074,10 +50275,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45085,10 +50283,7 @@
"test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45096,10 +50291,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45107,10 +50299,7 @@
"test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45118,10 +50307,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45129,10 +50315,7 @@
"test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45140,10 +50323,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45151,10 +50331,7 @@
"test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45162,10 +50339,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45173,10 +50347,7 @@
"test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45184,10 +50355,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45195,10 +50363,7 @@
"test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45206,10 +50371,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45217,10 +50379,7 @@
"test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45228,10 +50387,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45239,10 +50395,7 @@
"test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45250,10 +50403,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45261,10 +50411,7 @@
"test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45272,10 +50419,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45283,10 +50427,7 @@
"test/core/json/corpus/a0d4af29c6c223b48fe34d6a09b3a7466242f33c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45294,10 +50435,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45305,10 +50443,7 @@
"test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45316,10 +50451,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45327,10 +50459,7 @@
"test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45338,10 +50467,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45349,10 +50475,7 @@
"test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45360,10 +50483,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45371,10 +50491,7 @@
"test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45382,10 +50499,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45393,10 +50507,7 @@
"test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45404,10 +50515,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45415,10 +50523,7 @@
"test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45426,10 +50531,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45437,10 +50539,7 @@
"test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45448,10 +50547,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45459,10 +50555,7 @@
"test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45470,10 +50563,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45481,10 +50571,7 @@
"test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45492,10 +50579,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45503,10 +50587,7 @@
"test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45514,10 +50595,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45525,10 +50603,7 @@
"test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45536,10 +50611,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45547,10 +50619,7 @@
"test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45558,10 +50627,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45569,10 +50635,7 @@
"test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45580,10 +50643,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45591,10 +50651,7 @@
"test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45602,10 +50659,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45613,10 +50667,7 @@
"test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45624,10 +50675,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45635,10 +50683,7 @@
"test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45646,10 +50691,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45657,10 +50699,7 @@
"test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45668,10 +50707,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45679,10 +50715,7 @@
"test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45690,10 +50723,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45701,10 +50731,7 @@
"test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45712,10 +50739,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45723,10 +50747,7 @@
"test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45734,10 +50755,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45745,10 +50763,7 @@
"test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45756,10 +50771,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45767,10 +50779,7 @@
"test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45778,10 +50787,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45789,10 +50795,7 @@
"test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45800,10 +50803,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45811,10 +50811,7 @@
"test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45822,10 +50819,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45833,10 +50827,7 @@
"test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45844,10 +50835,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45855,10 +50843,7 @@
"test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45866,10 +50851,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45877,10 +50859,7 @@
"test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45888,10 +50867,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45899,10 +50875,7 @@
"test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45910,10 +50883,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45921,10 +50891,7 @@
"test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45932,10 +50899,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45943,10 +50907,7 @@
"test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45954,10 +50915,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45965,10 +50923,7 @@
"test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45976,10 +50931,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -45987,10 +50939,7 @@
"test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -45998,10 +50947,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46009,10 +50955,7 @@
"test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46020,10 +50963,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46031,10 +50971,7 @@
"test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46042,10 +50979,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46053,10 +50987,7 @@
"test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46064,10 +50995,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46075,10 +51003,7 @@
"test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46086,10 +51011,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46097,10 +51019,7 @@
"test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46108,10 +51027,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46119,10 +51035,7 @@
"test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46130,10 +51043,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46141,10 +51051,7 @@
"test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46152,10 +51059,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46163,10 +51067,7 @@
"test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46174,10 +51075,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46185,10 +51083,7 @@
"test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46196,10 +51091,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46207,10 +51099,7 @@
"test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46218,10 +51107,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46229,10 +51115,7 @@
"test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46240,10 +51123,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46251,10 +51131,7 @@
"test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46262,10 +51139,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46273,10 +51147,7 @@
"test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46284,10 +51155,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46295,10 +51163,7 @@
"test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46306,10 +51171,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46317,10 +51179,7 @@
"test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46328,10 +51187,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46339,10 +51195,7 @@
"test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46350,10 +51203,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46361,10 +51211,7 @@
"test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46372,10 +51219,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46383,10 +51227,7 @@
"test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46394,10 +51235,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46405,10 +51243,7 @@
"test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46416,10 +51251,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46427,10 +51259,7 @@
"test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46438,10 +51267,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46449,10 +51275,7 @@
"test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46460,10 +51283,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46471,10 +51291,7 @@
"test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46482,10 +51299,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46493,10 +51307,7 @@
"test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46504,10 +51315,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46515,10 +51323,7 @@
"test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46526,10 +51331,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46537,10 +51339,7 @@
"test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46548,10 +51347,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46559,10 +51355,7 @@
"test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46570,10 +51363,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46581,10 +51371,7 @@
"test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46592,10 +51379,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46603,10 +51387,7 @@
"test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46614,10 +51395,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46625,10 +51403,7 @@
"test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46636,10 +51411,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46647,10 +51419,7 @@
"test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46658,10 +51427,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46669,10 +51435,7 @@
"test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46680,10 +51443,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46691,10 +51451,7 @@
"test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46702,10 +51459,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46713,10 +51467,7 @@
"test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46724,10 +51475,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46735,10 +51483,7 @@
"test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46746,10 +51491,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46757,10 +51499,7 @@
"test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46768,10 +51507,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46779,10 +51515,7 @@
"test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46790,10 +51523,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46801,10 +51531,7 @@
"test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46812,10 +51539,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46823,10 +51547,7 @@
"test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46834,10 +51555,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46845,10 +51563,7 @@
"test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46856,10 +51571,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46867,10 +51579,7 @@
"test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46878,10 +51587,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46889,10 +51595,7 @@
"test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46900,10 +51603,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46911,10 +51611,7 @@
"test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46922,10 +51619,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46933,10 +51627,7 @@
"test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46944,10 +51635,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46955,10 +51643,7 @@
"test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46966,10 +51651,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46977,10 +51659,7 @@
"test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -46988,10 +51667,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -46999,10 +51675,7 @@
"test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47010,10 +51683,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47021,10 +51691,7 @@
"test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47032,10 +51699,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47043,10 +51707,7 @@
"test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47054,10 +51715,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47065,10 +51723,7 @@
"test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47076,10 +51731,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47087,10 +51739,7 @@
"test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47098,10 +51747,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47109,10 +51755,7 @@
"test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47120,10 +51763,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47131,10 +51771,7 @@
"test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47142,10 +51779,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47153,10 +51787,7 @@
"test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47164,10 +51795,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47175,10 +51803,7 @@
"test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47186,10 +51811,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47197,10 +51819,7 @@
"test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47208,10 +51827,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47219,10 +51835,7 @@
"test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47230,10 +51843,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47241,10 +51851,7 @@
"test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47252,10 +51859,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47263,10 +51867,7 @@
"test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47274,10 +51875,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47285,10 +51883,7 @@
"test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47296,10 +51891,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47307,10 +51899,7 @@
"test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47318,10 +51907,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47329,10 +51915,7 @@
"test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47340,10 +51923,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47351,10 +51931,7 @@
"test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47362,10 +51939,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47373,10 +51947,7 @@
"test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47384,10 +51955,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47395,10 +51963,7 @@
"test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47406,10 +51971,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47417,10 +51979,7 @@
"test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47428,10 +51987,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47439,10 +51995,7 @@
"test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47450,10 +52003,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47461,10 +52011,7 @@
"test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47472,10 +52019,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47483,10 +52027,7 @@
"test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47494,10 +52035,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47505,10 +52043,7 @@
"test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47516,10 +52051,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47527,10 +52059,7 @@
"test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47538,10 +52067,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47549,10 +52075,7 @@
"test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47560,10 +52083,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47571,10 +52091,7 @@
"test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47582,10 +52099,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47593,10 +52107,7 @@
"test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47604,10 +52115,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47615,10 +52123,7 @@
"test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47626,10 +52131,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47637,10 +52139,7 @@
"test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47648,10 +52147,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47659,10 +52155,7 @@
"test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47670,10 +52163,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47681,10 +52171,7 @@
"test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47692,10 +52179,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47703,10 +52187,7 @@
"test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47714,10 +52195,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47725,10 +52203,7 @@
"test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47736,10 +52211,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47747,10 +52219,7 @@
"test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47758,10 +52227,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47769,10 +52235,7 @@
"test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47780,10 +52243,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47791,10 +52251,7 @@
"test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47802,10 +52259,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47813,10 +52267,7 @@
"test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47824,10 +52275,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47835,10 +52283,7 @@
"test/core/json/corpus/test1.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47846,10 +52291,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47857,10 +52299,7 @@
"test/core/json/corpus/test2.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47868,10 +52307,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47879,10 +52315,7 @@
"test/core/json/corpus/test3.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47890,10 +52323,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47901,10 +52331,7 @@
"test/core/json/corpus/test4.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47912,10 +52339,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47923,10 +52347,7 @@
"test/core/json/corpus/test5.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47934,10 +52355,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47945,10 +52363,7 @@
"test/core/json/corpus/test6.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47956,10 +52371,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47967,10 +52379,7 @@
"test/core/json/corpus/test7.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -47978,10 +52387,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -47989,10 +52395,7 @@
"test/core/json/corpus/test8.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48000,10 +52403,7 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48011,10 +52411,7 @@
"test/core/json/corpus/test9.json"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48022,10 +52419,23 @@
"language": "c",
"name": "json_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "nanopb_fuzzer_response_test_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -48033,10 +52443,7 @@
"test/core/nanopb/corpus_response/0c35544f40d428d103e9c5b969ad9cd16767b110"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48044,10 +52451,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48055,10 +52459,7 @@
"test/core/nanopb/corpus_response/0c60ee9ed55c9af6190b132ef6636c1d2abe4540"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48066,10 +52467,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48077,10 +52475,7 @@
"test/core/nanopb/corpus_response/0ecb3e69889c036a86d21eb942077dc9abd649be"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48088,10 +52483,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48099,10 +52491,7 @@
"test/core/nanopb/corpus_response/1324c95dafe597fe05f9babe92fe6fbf181c1897"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48110,10 +52499,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48121,10 +52507,7 @@
"test/core/nanopb/corpus_response/14eb42f7423081b455820daa2c02b358315dc0fa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48132,10 +52515,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48143,10 +52523,7 @@
"test/core/nanopb/corpus_response/23121c5f633db5d7c1a9f2225240754246fee513"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48154,10 +52531,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48165,10 +52539,7 @@
"test/core/nanopb/corpus_response/235548307ee9f2b0855fded42a871990d9ade956"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48176,10 +52547,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48187,10 +52555,7 @@
"test/core/nanopb/corpus_response/28ed3a797da3c48c309a4ef792147f3c56cfec40"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48198,10 +52563,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48209,10 +52571,7 @@
"test/core/nanopb/corpus_response/2bf123dbfa1d37a04493b5662a4b3b9c147485fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48220,10 +52579,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48231,10 +52587,7 @@
"test/core/nanopb/corpus_response/2d4c0908ecc0310ea234d10b6bdb4f4ca3c41dd1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48242,10 +52595,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48253,10 +52603,7 @@
"test/core/nanopb/corpus_response/304e8cdc9122b709ec2c063a5c8c38489a788033"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48264,10 +52611,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48275,10 +52619,7 @@
"test/core/nanopb/corpus_response/324d4a2aed8bc1840fee212fd38dadec80a72ea2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48286,10 +52627,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48297,10 +52635,7 @@
"test/core/nanopb/corpus_response/33353a0b011901a13d010c6b165074ccdaa717ac"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48308,10 +52643,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48319,10 +52651,7 @@
"test/core/nanopb/corpus_response/37dfead09389fcd9b9d24ef817a0fed13d8ff2b0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48330,10 +52659,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48341,10 +52667,7 @@
"test/core/nanopb/corpus_response/47879cc364be304754f6af15563ad6f9a538da41"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48352,10 +52675,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48363,10 +52683,7 @@
"test/core/nanopb/corpus_response/49a5cef4c730ecab22712b156ddba5106f165afd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48374,10 +52691,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48385,10 +52699,7 @@
"test/core/nanopb/corpus_response/4bbbbb794a098deeacff73b774c30f12c54ceacb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48396,10 +52707,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48407,10 +52715,7 @@
"test/core/nanopb/corpus_response/4c498ce69c8476f745693deb23272930e05cad60"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48418,10 +52723,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48429,10 +52731,7 @@
"test/core/nanopb/corpus_response/4fb5e3085c32e9bccac9e18343cca07017d037de"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48440,10 +52739,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48451,10 +52747,7 @@
"test/core/nanopb/corpus_response/4fe5e46c1299e7f3e8a41dde3ae1bf1b60b4a43c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48462,10 +52755,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48473,10 +52763,7 @@
"test/core/nanopb/corpus_response/670cc6bae958cb4f15e7297fe63959ac5799aa42"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48484,10 +52771,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48495,10 +52779,7 @@
"test/core/nanopb/corpus_response/675f3263af7d1bbb084872f2b23f6d363227e85d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48506,10 +52787,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48517,10 +52795,7 @@
"test/core/nanopb/corpus_response/67fe0d2acc727c8a39a707b92c6cebda9bd20986"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48528,10 +52803,23 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "nanopb_fuzzer_response_test_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -48539,10 +52827,7 @@
"test/core/nanopb/corpus_response/6d15065785eb8f4b5f17357a520cb4815a2cb355"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48550,10 +52835,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48561,10 +52843,7 @@
"test/core/nanopb/corpus_response/73285d7a70d73b517648067520d921e4477dbbfa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48572,10 +52851,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48583,10 +52859,7 @@
"test/core/nanopb/corpus_response/747d1ed8bee4c6f0438beaf88ae76d8ef9f63da2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48594,10 +52867,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48605,10 +52875,7 @@
"test/core/nanopb/corpus_response/763878a34b3adeb99a03b54d09768a4451617016"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48616,10 +52883,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48627,10 +52891,7 @@
"test/core/nanopb/corpus_response/7b4b0c2555178333ba15203a930c88ef7e7500e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48638,10 +52899,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48649,10 +52907,7 @@
"test/core/nanopb/corpus_response/7b8a91aa46e370eb61307b4998889dc89775462f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48660,10 +52915,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48671,10 +52923,7 @@
"test/core/nanopb/corpus_response/7cd11836c64f98742fa7beccec5c981ef4dd62ae"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48682,10 +52931,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48693,10 +52939,7 @@
"test/core/nanopb/corpus_response/7d8f4f045e70e8a2cb45dc3c001504f5c2614b16"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48704,10 +52947,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48715,10 +52955,7 @@
"test/core/nanopb/corpus_response/7e9848558fb004e14795b3ebd3e1488dcde1db8c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48726,10 +52963,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48737,10 +52971,7 @@
"test/core/nanopb/corpus_response/89734c37ee267e69a6950c6d60ee541c1be5ccff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48748,10 +52979,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48759,10 +52987,7 @@
"test/core/nanopb/corpus_response/9034aaf45143996a2b14465c352ab0c6fa26b221"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48770,10 +52995,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48781,10 +53003,7 @@
"test/core/nanopb/corpus_response/91e3b6a3484ab4b95cdeecc5aefe1291824060e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48792,10 +53011,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48803,10 +53019,7 @@
"test/core/nanopb/corpus_response/95cd94c858e5e97f7df4a5eb7552e5e0d5ce1ec4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48814,10 +53027,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48825,10 +53035,7 @@
"test/core/nanopb/corpus_response/971f42d5a4d9816145ebc9dd28ba33ed3f5860b0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48836,10 +53043,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48847,10 +53051,7 @@
"test/core/nanopb/corpus_response/9db3a1854de87fd643b910aeab50553afc73e667"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48858,10 +53059,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48869,10 +53067,7 @@
"test/core/nanopb/corpus_response/a147873135c6c52d4da03c260a0165bc0ab1b979"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48880,10 +53075,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48891,10 +53083,7 @@
"test/core/nanopb/corpus_response/a710eead945dabbbffa213a980c75f9463a27398"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48902,10 +53091,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48913,10 +53099,7 @@
"test/core/nanopb/corpus_response/a72406e3ca06d941fe8e168bbf67da88a81c947b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48924,10 +53107,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48935,10 +53115,7 @@
"test/core/nanopb/corpus_response/a8a62a7ebb7d68b211ae319e082575935c07d188"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48946,10 +53123,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48957,10 +53131,7 @@
"test/core/nanopb/corpus_response/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48968,10 +53139,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -48979,10 +53147,7 @@
"test/core/nanopb/corpus_response/aab56035a3533b5d83a32a439f179eb678250113"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -48990,10 +53155,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49001,10 +53163,7 @@
"test/core/nanopb/corpus_response/ac174acef2c5da26fadc7270bab9c8c4e938c463"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49012,10 +53171,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49023,10 +53179,7 @@
"test/core/nanopb/corpus_response/acbbd60eeb76e41ce254d0fef353b92abe69c831"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49034,10 +53187,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49045,10 +53195,7 @@
"test/core/nanopb/corpus_response/c1eed32e1e353737987da851ad760312ea8e557c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49056,10 +53203,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49067,10 +53211,7 @@
"test/core/nanopb/corpus_response/c4214ace2c4bab24bb356f71aedca08544baad70"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49078,10 +53219,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49089,10 +53227,7 @@
"test/core/nanopb/corpus_response/c4f87a6290aee1acfc1f26083974ce94621fca64"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49100,10 +53235,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49111,10 +53243,7 @@
"test/core/nanopb/corpus_response/d285d78d3ba966b4b199453d38ead1aa36a7484f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49122,10 +53251,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49133,10 +53259,7 @@
"test/core/nanopb/corpus_response/df5200f371cff3cae0e1595cd86d641725f5d1ba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49144,10 +53267,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49155,10 +53275,7 @@
"test/core/nanopb/corpus_response/dfc66cb172919102f3ba14f6816228aa46f78154"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49166,10 +53283,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49177,10 +53291,7 @@
"test/core/nanopb/corpus_response/e53e789a4c175c6a2c468472f1047d0fe8db1177"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49188,10 +53299,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49199,10 +53307,7 @@
"test/core/nanopb/corpus_response/e67fe6794e755ea801272980f2c272edb027f6dc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49210,10 +53315,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49221,10 +53323,7 @@
"test/core/nanopb/corpus_response/ead61e86fedf118df8e44ed70ce002be651cf291"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49232,10 +53331,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49243,10 +53339,7 @@
"test/core/nanopb/corpus_response/eced8b29efbdc82eb8a1d0865c5f382f0ff78446"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49254,10 +53347,23 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "nanopb_fuzzer_response_test_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -49265,10 +53371,7 @@
"test/core/nanopb/corpus_response/f58a9135d07ea9a5e3e710f6b3bf6d48d5942dfd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49276,10 +53379,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49287,10 +53387,7 @@
"test/core/nanopb/corpus_response/f8c2c4ddd2f474b4839f13a9be862c00ab0ece77"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49298,10 +53395,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49309,10 +53403,7 @@
"test/core/nanopb/corpus_response/faa1781e1444bba5b8c677bc5e2a38d023a1ec65"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49320,10 +53411,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49331,10 +53419,7 @@
"test/core/nanopb/corpus_response/fccda587af845f0685275960649d8f4a45272a95"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49342,10 +53427,7 @@
"language": "c",
"name": "nanopb_fuzzer_response_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49353,10 +53435,7 @@
"test/core/nanopb/corpus_serverlist/000def12957806bb0d40005cb651d35b4cde7b4e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49364,10 +53443,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49375,10 +53451,7 @@
"test/core/nanopb/corpus_serverlist/0068af2acc3020f344ee84b2c8adfb90492354c3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49386,10 +53459,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49397,10 +53467,7 @@
"test/core/nanopb/corpus_serverlist/009132022c3a1660b701728ac92e26baf82e8eac"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49408,10 +53475,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49419,10 +53483,7 @@
"test/core/nanopb/corpus_serverlist/00bf0233aa1155b34a3081e4a2b7a1c9cdf8ea1e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49430,10 +53491,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49441,10 +53499,7 @@
"test/core/nanopb/corpus_serverlist/013197cfb12b59755b807501c6d6615859f9cd3f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49452,10 +53507,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49463,10 +53515,7 @@
"test/core/nanopb/corpus_serverlist/018a4332eb19f2398162317cb6ad2e8cf700dfd6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49474,10 +53523,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49485,10 +53531,7 @@
"test/core/nanopb/corpus_serverlist/0273d3496bf5f4594e59083ac319f8f863a15be0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49496,10 +53539,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49507,10 +53547,7 @@
"test/core/nanopb/corpus_serverlist/0355002521e74dcdb3a0c633338bd02ab1d85312"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49518,10 +53555,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49529,10 +53563,7 @@
"test/core/nanopb/corpus_serverlist/053d8d6ceeba9453c97d0ee5374db863e6f77ad4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49540,10 +53571,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49551,10 +53579,7 @@
"test/core/nanopb/corpus_serverlist/0628c29e3ae264f8fa08652435bb3e61afe60883"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49562,10 +53587,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49573,10 +53595,7 @@
"test/core/nanopb/corpus_serverlist/065e91578e5359b70a668164310af6f0dd40e922"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49584,10 +53603,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49595,10 +53611,7 @@
"test/core/nanopb/corpus_serverlist/06b4b617d5937da8a7b58aed5341dc5ef6d1bcd7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49606,10 +53619,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49617,10 +53627,7 @@
"test/core/nanopb/corpus_serverlist/07216a4f5934890b89d845f6256546c2681350ce"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49628,10 +53635,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49639,10 +53643,7 @@
"test/core/nanopb/corpus_serverlist/08584e8308b7f52f0fe380358800d7f585cba89c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49650,10 +53651,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49661,10 +53659,7 @@
"test/core/nanopb/corpus_serverlist/085a37568e99ec5855bd96affd259921515479e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49672,10 +53667,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49683,10 +53675,7 @@
"test/core/nanopb/corpus_serverlist/0903d1e9297179c18de6a3707b16f27d0d54ed67"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49694,10 +53683,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49705,10 +53691,7 @@
"test/core/nanopb/corpus_serverlist/0aa20a75bff4e8af10330c66d288e900146f1a39"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49716,10 +53699,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49727,10 +53707,7 @@
"test/core/nanopb/corpus_serverlist/0ae76e2b24ca999bd5e09e517aa4d88f5b5f58a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49738,10 +53715,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49749,10 +53723,7 @@
"test/core/nanopb/corpus_serverlist/0c3025fdfb008a6563ea2a2bb6cbc79b8ccbf8f3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49760,10 +53731,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49771,10 +53739,7 @@
"test/core/nanopb/corpus_serverlist/0d219165cd317142afa36b8b5476cc022c95c4e6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49782,10 +53747,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49793,10 +53755,7 @@
"test/core/nanopb/corpus_serverlist/0e053123dd6256de5aff55b0731f913de250c18e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49804,10 +53763,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49815,10 +53771,7 @@
"test/core/nanopb/corpus_serverlist/0e065f98325849ac05eed515865b33dba0264cd4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49826,10 +53779,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49837,10 +53787,7 @@
"test/core/nanopb/corpus_serverlist/0e4ff715d491c9f0b471c400b71804739b6d400a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49848,10 +53795,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49859,10 +53803,7 @@
"test/core/nanopb/corpus_serverlist/0ec94942046cd7e00bc058204c1d046075ca9531"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49870,10 +53811,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49881,10 +53819,7 @@
"test/core/nanopb/corpus_serverlist/0f0e8da530eb8c924cee6985d9c3dfd93274ef8c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49892,10 +53827,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49903,10 +53835,7 @@
"test/core/nanopb/corpus_serverlist/0ff365225c981d74b89499d1e708684ed4d0b570"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49914,10 +53843,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49925,10 +53851,7 @@
"test/core/nanopb/corpus_serverlist/113b1efff1677c1b9a24f89aec0c3ecc228ddf62"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49936,10 +53859,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49947,10 +53867,7 @@
"test/core/nanopb/corpus_serverlist/11697d621eab6743ba22715722d5b23830b79075"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49958,10 +53875,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49969,10 +53883,7 @@
"test/core/nanopb/corpus_serverlist/12463318b795c756f389bc0fb1cca9645eafef28"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -49980,10 +53891,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -49991,10 +53899,7 @@
"test/core/nanopb/corpus_serverlist/12784250cf16ec999529f601ae5c5798e853d34a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50002,10 +53907,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50013,10 +53915,7 @@
"test/core/nanopb/corpus_serverlist/13122d08c1cee0dae6434605917d4cc6d8ea8cc5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50024,10 +53923,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50035,10 +53931,7 @@
"test/core/nanopb/corpus_serverlist/148a1118649dd8aa9b4ed778efdf7c1611aa5d27"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50046,10 +53939,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50057,10 +53947,7 @@
"test/core/nanopb/corpus_serverlist/15dea2bb5fb36a3dd5172796da66a821a32918e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50068,10 +53955,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50079,10 +53963,7 @@
"test/core/nanopb/corpus_serverlist/16488fe15a7e33cb41f2b7c159c99154464b3fd3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50090,10 +53971,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50101,10 +53979,7 @@
"test/core/nanopb/corpus_serverlist/1870a48a3c9c1dd9027cbd85beb503b43cff6e89"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50112,10 +53987,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50123,10 +53995,7 @@
"test/core/nanopb/corpus_serverlist/1900b6a9123667a79020319aa7fd54d230bc7073"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50134,10 +54003,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50145,10 +54011,7 @@
"test/core/nanopb/corpus_serverlist/1a000f1cbccd2ab6f7e623e015ed2e84284c9dbf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50156,10 +54019,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50167,10 +54027,7 @@
"test/core/nanopb/corpus_serverlist/1c1d403f6175d52ac4430d1ef2401b549761707e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50178,10 +54035,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50189,10 +54043,7 @@
"test/core/nanopb/corpus_serverlist/1c2ae0e1915e18dffc2215e9121f1afe0e4335c4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50200,10 +54051,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50211,10 +54059,7 @@
"test/core/nanopb/corpus_serverlist/1c5d2eef52426db9d0842f3d57b27a219434c512"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50222,10 +54067,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50233,10 +54075,7 @@
"test/core/nanopb/corpus_serverlist/1d0676867c1ebce84531035fa7eb86ed00762df5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50244,10 +54083,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50255,10 +54091,7 @@
"test/core/nanopb/corpus_serverlist/1d92b263fa70450b0d0aeb81bf5d2f69eefbbd99"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50266,10 +54099,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50277,10 +54107,7 @@
"test/core/nanopb/corpus_serverlist/1e843ed4864d6a808b671dd6769ae191ac8a13ad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50288,10 +54115,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50299,10 +54123,7 @@
"test/core/nanopb/corpus_serverlist/1eb06a34ee568d584c4b33472788889bc68af3f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50310,10 +54131,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50321,10 +54139,7 @@
"test/core/nanopb/corpus_serverlist/2169c2b4d560d74a5487df68b56f3af1d648f544"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50332,10 +54147,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50343,10 +54155,7 @@
"test/core/nanopb/corpus_serverlist/21f8f7583e58c1c81a3ac8237b5fa58071edf8a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50354,10 +54163,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50365,10 +54171,7 @@
"test/core/nanopb/corpus_serverlist/231e348407fdcb14412c691b0b20982940160ccd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50376,10 +54179,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50387,10 +54187,7 @@
"test/core/nanopb/corpus_serverlist/27b8f060e3296eaef77dcdd4c2cd11d5650604ac"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50398,10 +54195,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50409,10 +54203,7 @@
"test/core/nanopb/corpus_serverlist/28ed3a797da3c48c309a4ef792147f3c56cfec40"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50420,10 +54211,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50431,10 +54219,7 @@
"test/core/nanopb/corpus_serverlist/291fcc6e043942638fa3c865c0a1be5e4dcc0e70"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50442,10 +54227,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50453,10 +54235,7 @@
"test/core/nanopb/corpus_serverlist/2a7f6c1f8fdc090b24ceb90ab4f3a7b331c06c86"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50464,10 +54243,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50475,10 +54251,7 @@
"test/core/nanopb/corpus_serverlist/2b85f180fe56f84925b274819ce10a8972a594e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50486,10 +54259,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50497,10 +54267,7 @@
"test/core/nanopb/corpus_serverlist/2dea73d7d10ba0dcfd103f7542bdf7458e772b2b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50508,10 +54275,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50519,10 +54283,7 @@
"test/core/nanopb/corpus_serverlist/2e9c19f98ef88b83ec2dea8b1b7f92b8337f757b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50530,10 +54291,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50541,10 +54299,7 @@
"test/core/nanopb/corpus_serverlist/2fbd59ffb74aba392b86f4fe2ff8067b6d45cce8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50552,10 +54307,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50563,10 +54315,7 @@
"test/core/nanopb/corpus_serverlist/31059c32ea28d37b7442f51b20e966665662783c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50574,10 +54323,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50585,10 +54331,7 @@
"test/core/nanopb/corpus_serverlist/31f78e35feb36037864df5f8f47136f8e6e4768a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50596,10 +54339,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50607,10 +54347,7 @@
"test/core/nanopb/corpus_serverlist/326d322d1aa31696a14518830e544770f12146ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50618,10 +54355,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50629,10 +54363,7 @@
"test/core/nanopb/corpus_serverlist/337df26552e0884ff133cc1be8e72020be38f457"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50640,10 +54371,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50651,10 +54379,7 @@
"test/core/nanopb/corpus_serverlist/33a2a0aa86956097e034b5ee16aeceacee7efc34"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50662,10 +54387,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50673,10 +54395,7 @@
"test/core/nanopb/corpus_serverlist/33d175d1ecb3a85be7dd93d24efc3ddda0a85ad6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50684,10 +54403,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50695,10 +54411,7 @@
"test/core/nanopb/corpus_serverlist/3718a1b790db16bcfc4ec30691fab24ea7bb0b74"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50706,10 +54419,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50717,10 +54427,7 @@
"test/core/nanopb/corpus_serverlist/37aa3946054035b712102a62b71c94747dfd1491"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50728,10 +54435,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50739,10 +54443,7 @@
"test/core/nanopb/corpus_serverlist/37b697adc0708ad12e4ed7355f3f8fdf1b7919ca"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50750,10 +54451,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50761,10 +54459,7 @@
"test/core/nanopb/corpus_serverlist/37bf4642c5e5a806e2042cdf5ead9bf3c97b9ac1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50772,10 +54467,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50783,10 +54475,7 @@
"test/core/nanopb/corpus_serverlist/37d94ca6a20303389b35404f3dfd20aaa9ff0851"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50794,10 +54483,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50805,10 +54491,7 @@
"test/core/nanopb/corpus_serverlist/39278604f6a1102366464bbe769ae846e542bc56"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50816,10 +54499,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50827,10 +54507,7 @@
"test/core/nanopb/corpus_serverlist/396b57d9a11a1b135e36ad266e155cc0c3b77d21"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50838,10 +54515,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50849,10 +54523,7 @@
"test/core/nanopb/corpus_serverlist/39a49db120a807fe4e80c502254a5009625c7599"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50860,10 +54531,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50871,10 +54539,7 @@
"test/core/nanopb/corpus_serverlist/39f04d1c6d4beefa3e3d6eae3a5317d969787055"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50882,10 +54547,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50893,10 +54555,7 @@
"test/core/nanopb/corpus_serverlist/3b199b80209fa0b8ffedba4381019f8729cc09d6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50904,10 +54563,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50915,10 +54571,7 @@
"test/core/nanopb/corpus_serverlist/3ccf7ffb96c3e4789409db33cc12bfd8ddc24c1a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50926,10 +54579,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50937,10 +54587,7 @@
"test/core/nanopb/corpus_serverlist/3d04382d1fe11ff3b717100aece7f9eff2d04b9b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50948,10 +54595,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50959,10 +54603,7 @@
"test/core/nanopb/corpus_serverlist/3d4eb9f836bb40cf4c734073bcba8b73e4cc93ae"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50970,10 +54611,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -50981,10 +54619,7 @@
"test/core/nanopb/corpus_serverlist/41dc8c55e41d32c30865f9761931ddd4c5b740f8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -50992,10 +54627,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51003,10 +54635,7 @@
"test/core/nanopb/corpus_serverlist/41ef7b74d212f8f7f6681edcffd0db719030d31d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51014,10 +54643,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51025,10 +54651,7 @@
"test/core/nanopb/corpus_serverlist/431187b5926fa7d0823305a9f87635616ea3ef27"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51036,10 +54659,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51047,10 +54667,7 @@
"test/core/nanopb/corpus_serverlist/44c6da04b8378986721f7225e70a1514695c176c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51058,10 +54675,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51069,10 +54683,7 @@
"test/core/nanopb/corpus_serverlist/450161236e37a1dfc0da6398c4876df82ff640ac"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51080,10 +54691,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51091,10 +54699,7 @@
"test/core/nanopb/corpus_serverlist/45257a176ca6a05ec65a6df430bbb6b85d0a676f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51102,10 +54707,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51113,10 +54715,7 @@
"test/core/nanopb/corpus_serverlist/46d1c2f2edcc9cdc0d1698fa0c8853cb19a6e7d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51124,10 +54723,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51135,10 +54731,7 @@
"test/core/nanopb/corpus_serverlist/4764bd4297bf0c405348d2bb87b8fbc02beadcb8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51146,10 +54739,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51157,10 +54747,7 @@
"test/core/nanopb/corpus_serverlist/48199bfd0e2c160f56d03e881bb5dfe276eec462"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51168,10 +54755,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51179,10 +54763,7 @@
"test/core/nanopb/corpus_serverlist/48e865c56e8db13640d6ecbfc0f2486eb77e07d1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51190,10 +54771,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51201,10 +54779,7 @@
"test/core/nanopb/corpus_serverlist/499b003b8b98edd9dbe2668c8c6af948769d7e87"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51212,10 +54787,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51223,10 +54795,7 @@
"test/core/nanopb/corpus_serverlist/4a55591c4b390c5a36cecc6f1b6f5105300b546b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51234,10 +54803,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51245,10 +54811,7 @@
"test/core/nanopb/corpus_serverlist/4d33f97ec69c64e14dcf205be36a6319ddb8a20d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51256,10 +54819,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51267,10 +54827,7 @@
"test/core/nanopb/corpus_serverlist/4dbfb08904739928e19c2f459040b35ac410f699"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51278,10 +54835,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51289,10 +54843,7 @@
"test/core/nanopb/corpus_serverlist/501bd6fe1de2719cf8d2c517a071e5d883fbe766"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51300,10 +54851,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51311,10 +54859,7 @@
"test/core/nanopb/corpus_serverlist/5208871ea8948223b64b304336cea41ac3240244"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51322,10 +54867,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51333,10 +54875,7 @@
"test/core/nanopb/corpus_serverlist/5348c71be34967458403bd4b58bb2a8a744d35ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51344,10 +54883,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51355,10 +54891,7 @@
"test/core/nanopb/corpus_serverlist/54362c2f6965268d0835a992c3ba656171b8f044"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51366,10 +54899,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51377,10 +54907,7 @@
"test/core/nanopb/corpus_serverlist/54411aa13f6d9118028171935322bbbc74c15329"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51388,10 +54915,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51399,10 +54923,7 @@
"test/core/nanopb/corpus_serverlist/54c50af22d147f192918499b4b3819eb389468a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51410,10 +54931,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51421,10 +54939,7 @@
"test/core/nanopb/corpus_serverlist/55441aac903d96b36bf8a11bc804234bcf0c04da"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51432,10 +54947,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51443,10 +54955,7 @@
"test/core/nanopb/corpus_serverlist/56e1a7c279482a57fcbca43468df96a791ee22b4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51454,10 +54963,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51465,10 +54971,7 @@
"test/core/nanopb/corpus_serverlist/57cbea7c563d5c4b6b290271b0009c3f348d92da"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51476,10 +54979,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51487,10 +54987,7 @@
"test/core/nanopb/corpus_serverlist/57e11c7a62f0fc807d7b51bb1ef0f0e22f43795b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51498,10 +54995,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51509,10 +55003,7 @@
"test/core/nanopb/corpus_serverlist/585183c1a240df6926689fe1bd8cb434664db4d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51520,10 +55011,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51531,10 +55019,7 @@
"test/core/nanopb/corpus_serverlist/5b2ee8ca40508bf108a729dcb228191670ec34d6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51542,10 +55027,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51553,10 +55035,7 @@
"test/core/nanopb/corpus_serverlist/5b47eabaf74479348fd0318f174d649dbe96e7d2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51564,10 +55043,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51575,10 +55051,7 @@
"test/core/nanopb/corpus_serverlist/5ba93c9db0cff93f52b521d7420e43f6eda2784f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51586,10 +55059,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51597,10 +55067,7 @@
"test/core/nanopb/corpus_serverlist/5cc827e33932ccf8c72c6a839074e856d93463d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51608,10 +55075,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51619,10 +55083,7 @@
"test/core/nanopb/corpus_serverlist/5cc89bbf687f94ff87241a8f935905e1c441de33"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51630,10 +55091,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51641,10 +55099,7 @@
"test/core/nanopb/corpus_serverlist/5ec6596f12462fe9f36924c262f97408b54bbba8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51652,10 +55107,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51663,10 +55115,7 @@
"test/core/nanopb/corpus_serverlist/5f8f3af69295223fb04c37d28035bb75b4cbd705"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51674,10 +55123,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51685,10 +55131,7 @@
"test/core/nanopb/corpus_serverlist/5fd76d48b9fefecbdabd4511decc161b25db79dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51696,10 +55139,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51707,10 +55147,7 @@
"test/core/nanopb/corpus_serverlist/614cf839ccac2d896d61a0ba0ab1f42b2fabafea"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51718,10 +55155,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51729,10 +55163,7 @@
"test/core/nanopb/corpus_serverlist/618305cc2d3d3814d78b77ffbf421b769bd862cf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51740,10 +55171,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51751,10 +55179,7 @@
"test/core/nanopb/corpus_serverlist/61dfcd913c4f0a8d005bd089c34e95d8dbbf1897"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51762,10 +55187,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51773,10 +55195,7 @@
"test/core/nanopb/corpus_serverlist/65a89e10aab00039680e1f7d014737b634c74d8d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51784,10 +55203,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51795,10 +55211,7 @@
"test/core/nanopb/corpus_serverlist/66a273dbf5e37410efd45518a42b06a65cffe1f0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51806,10 +55219,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51817,10 +55227,7 @@
"test/core/nanopb/corpus_serverlist/673ff0de0702e8098892060a5365c175d8ef18fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51828,10 +55235,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51839,10 +55243,7 @@
"test/core/nanopb/corpus_serverlist/68465c782c37bfdd98ac493b0458444bb94336e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51850,10 +55251,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51861,10 +55259,7 @@
"test/core/nanopb/corpus_serverlist/688451dee13d0be420598c6e205a3bc419173e18"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51872,10 +55267,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51883,10 +55275,7 @@
"test/core/nanopb/corpus_serverlist/68a1d9150e1380c219e0a1deb3993f321e000ecd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51894,10 +55283,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51905,10 +55291,7 @@
"test/core/nanopb/corpus_serverlist/69f49bf7ae8886f5b4c6296fdb1c570256919604"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51916,10 +55299,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51927,10 +55307,7 @@
"test/core/nanopb/corpus_serverlist/6a425f414cd69ffffdbaa34d03eb43841b432e11"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51938,10 +55315,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51949,10 +55323,7 @@
"test/core/nanopb/corpus_serverlist/6ca9e6e85f9b007a0920b0112decbd1403d506da"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51960,10 +55331,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51971,10 +55339,7 @@
"test/core/nanopb/corpus_serverlist/6cd62e3d67b4154639adbe753115bfdd770edddb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -51982,10 +55347,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -51993,10 +55355,7 @@
"test/core/nanopb/corpus_serverlist/6d4f2de4cc427417d6335ff5396ea2588509bb5b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52004,10 +55363,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52015,10 +55371,7 @@
"test/core/nanopb/corpus_serverlist/6ea84030dd0b5b03e4720c244ea8b4ec65e1f236"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52026,10 +55379,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52037,10 +55387,7 @@
"test/core/nanopb/corpus_serverlist/710c1fc8cf7dc1386312c34de5057933fcf868b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52048,10 +55395,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52059,10 +55403,7 @@
"test/core/nanopb/corpus_serverlist/720e81dcaf83f867288a90293c5de3b088d5c556"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52070,10 +55411,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52081,10 +55419,7 @@
"test/core/nanopb/corpus_serverlist/72cdc8f78ab5237f96ed354264c726ac79ec429c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52092,10 +55427,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52103,10 +55435,7 @@
"test/core/nanopb/corpus_serverlist/73535a4f7af7e4c6aa23556cacd63f6929ac33fe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52114,10 +55443,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52125,10 +55451,7 @@
"test/core/nanopb/corpus_serverlist/73d7b933a5673a4d6f5905006ef6266dda1e4fba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52136,10 +55459,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52147,10 +55467,7 @@
"test/core/nanopb/corpus_serverlist/753aea13c82d1f8841c2bd4309b1b55d0ae2ba8d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52158,10 +55475,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52169,10 +55483,7 @@
"test/core/nanopb/corpus_serverlist/754428e00e8a1d0471e00bd9e8f060ab88ab640e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52180,10 +55491,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52191,10 +55499,7 @@
"test/core/nanopb/corpus_serverlist/761c29151b23b4d14ce6261626641df1182f7a96"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52202,10 +55507,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52213,10 +55515,7 @@
"test/core/nanopb/corpus_serverlist/7658451dd805f277a5b1c3d4065d752d2d8de5f4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52224,10 +55523,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52235,10 +55531,7 @@
"test/core/nanopb/corpus_serverlist/767e91cedcd9bc1bdac882acc34a53cc23cf4d02"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52246,10 +55539,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52257,10 +55547,7 @@
"test/core/nanopb/corpus_serverlist/77d3754bdd4ea358369c936ed36b974b4181f6ab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52268,10 +55555,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52279,10 +55563,7 @@
"test/core/nanopb/corpus_serverlist/7a95295bebe6237f65deb15ffeccab22716d574d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52290,10 +55571,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52301,10 +55579,7 @@
"test/core/nanopb/corpus_serverlist/7ad88b82e87fbfb3d4bddaa2f6e201a151e3a007"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52312,10 +55587,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52323,10 +55595,7 @@
"test/core/nanopb/corpus_serverlist/7b1010cc012e34af1d03e8845868ff0e1db3a601"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52334,10 +55603,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52345,10 +55611,7 @@
"test/core/nanopb/corpus_serverlist/7d3ddbd11e82807321c9a53835ea897cf43aa7f2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52356,10 +55619,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52367,10 +55627,7 @@
"test/core/nanopb/corpus_serverlist/7da9c5ab5f049da297b0f4c1322edd696202d02a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52378,10 +55635,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52389,10 +55643,7 @@
"test/core/nanopb/corpus_serverlist/7e265a019c02e5d089152849ac00bb005fa644f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52400,10 +55651,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52411,10 +55659,7 @@
"test/core/nanopb/corpus_serverlist/7f33bff4f740eb898b908374b0c1badd47566947"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52422,10 +55667,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52433,10 +55675,7 @@
"test/core/nanopb/corpus_serverlist/81f13b9b65891f2bfce77cb183a06045c461fee6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52444,10 +55683,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52455,10 +55691,7 @@
"test/core/nanopb/corpus_serverlist/846a14a480ffa1ad0f6333f3ecf2be3057ce6aed"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52466,10 +55699,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52477,10 +55707,7 @@
"test/core/nanopb/corpus_serverlist/87373a7f89feba2d50591b433f69877044155af2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52488,10 +55715,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52499,10 +55723,7 @@
"test/core/nanopb/corpus_serverlist/8833ba4c780c94fc6c3c466f849c0387acefdb20"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52510,10 +55731,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52521,10 +55739,7 @@
"test/core/nanopb/corpus_serverlist/8c23a5ecd20db4da2c061f3463254e9de104c8b9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52532,10 +55747,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52543,10 +55755,7 @@
"test/core/nanopb/corpus_serverlist/8d883f1577ca8c334b7c6d75ccb71209d71ced13"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52554,10 +55763,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52565,10 +55771,7 @@
"test/core/nanopb/corpus_serverlist/8dc80bd5f5d1fea64412203e304432edcf5f52c4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52576,10 +55779,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52587,10 +55787,7 @@
"test/core/nanopb/corpus_serverlist/8fc9a9ea6ad7d6d51e770076eaddacad9f970c6f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52598,10 +55795,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52609,10 +55803,7 @@
"test/core/nanopb/corpus_serverlist/8fd167de17534776ef57aba2f27675789a11b8db"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52620,10 +55811,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52631,10 +55819,7 @@
"test/core/nanopb/corpus_serverlist/9117d3e51560813b3ce4615dced18fa0e4d0a25a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52642,10 +55827,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52653,10 +55835,7 @@
"test/core/nanopb/corpus_serverlist/921c68eaa8776f7544e195ae52224355d08a2d4d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52664,10 +55843,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52675,10 +55851,7 @@
"test/core/nanopb/corpus_serverlist/9293945411fca2dc81fc34b36b575a384e6d489e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52686,10 +55859,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52697,10 +55867,7 @@
"test/core/nanopb/corpus_serverlist/933287d66c3ff3f0a21f2c583c763f2f65872ef8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52708,10 +55875,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52719,10 +55883,7 @@
"test/core/nanopb/corpus_serverlist/933d1d91283403f0a56571f533f482e9744eb735"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52730,10 +55891,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52741,10 +55899,7 @@
"test/core/nanopb/corpus_serverlist/93855fc41b3e3004ca6ba85f34b985042d4c9869"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52752,10 +55907,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52763,10 +55915,7 @@
"test/core/nanopb/corpus_serverlist/9544f445c39470f05785b52cfc31bb73bda22659"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52774,10 +55923,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52785,10 +55931,7 @@
"test/core/nanopb/corpus_serverlist/97757217fde05ff4fc15c864bf29e9f560fd1c62"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52796,10 +55939,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52807,10 +55947,7 @@
"test/core/nanopb/corpus_serverlist/9877c0f2d40dd43878bb0209bbc4b5fa93bec55a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52818,10 +55955,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52829,10 +55963,7 @@
"test/core/nanopb/corpus_serverlist/98bc5065f79dd9d20cdac14ba28f0cf39908cb5f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52840,10 +55971,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52851,10 +55979,7 @@
"test/core/nanopb/corpus_serverlist/992860817f7fb0e49423607355dab973aa7ab815"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52862,10 +55987,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52873,10 +55995,7 @@
"test/core/nanopb/corpus_serverlist/995ee3d74bc6042fd6a8908c9df5a4cb530378d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52884,10 +56003,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52895,10 +56011,7 @@
"test/core/nanopb/corpus_serverlist/9a38c24a6e87e99a72a3a4f007b117ec191a1705"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52906,10 +56019,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52917,10 +56027,7 @@
"test/core/nanopb/corpus_serverlist/9aa97a0ffcdc37a8ef487355fb7271eb6891deaa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52928,10 +56035,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52939,10 +56043,7 @@
"test/core/nanopb/corpus_serverlist/9b9fddc17ed7bc05a81c18f01e800a4e9efd0c8d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52950,10 +56051,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52961,10 +56059,7 @@
"test/core/nanopb/corpus_serverlist/a0d4cb9a5a30bb01e8e4f68d636fb173632ed29d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52972,10 +56067,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -52983,10 +56075,7 @@
"test/core/nanopb/corpus_serverlist/a1e070288ec564d10a8c59779aa07fa771fa1d4f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -52994,10 +56083,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53005,10 +56091,7 @@
"test/core/nanopb/corpus_serverlist/a23d10723415d20f4ef1ed9b14d9dc24494856a0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53016,10 +56099,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53027,10 +56107,7 @@
"test/core/nanopb/corpus_serverlist/a245750cfe4212dca7bfde918de85f64eb053232"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53038,10 +56115,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53049,10 +56123,7 @@
"test/core/nanopb/corpus_serverlist/a24bbe3600f4dfd61bb8415c6a291e0521e4f267"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53060,10 +56131,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53071,10 +56139,7 @@
"test/core/nanopb/corpus_serverlist/a25104d039a549c8d457ecea3b55369ed312f086"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53082,10 +56147,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53093,10 +56155,7 @@
"test/core/nanopb/corpus_serverlist/a33c4fcabe6aebe012cd01c8cb851a9ab0a12098"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53104,10 +56163,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53115,10 +56171,7 @@
"test/core/nanopb/corpus_serverlist/a393e1727b0decca9f193179765c3a83d7096437"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53126,10 +56179,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53137,10 +56187,7 @@
"test/core/nanopb/corpus_serverlist/a5507f06be4735a3a9e416ea986d52c1a6a20909"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53148,10 +56195,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53159,10 +56203,7 @@
"test/core/nanopb/corpus_serverlist/a5adf028c902d17dd6a7ddeadabbed2b36420313"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53170,10 +56211,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53181,10 +56219,7 @@
"test/core/nanopb/corpus_serverlist/a6aa1237a282ee3a93f2544bb6bb7704e565209e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53192,10 +56227,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53203,10 +56235,7 @@
"test/core/nanopb/corpus_serverlist/a871185cabce7b96c9e2f6ffb40d9901c774b335"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53214,10 +56243,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53225,10 +56251,7 @@
"test/core/nanopb/corpus_serverlist/a89d0e67bf53e22533a635f103d1fd400969ad56"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53236,10 +56259,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53247,10 +56267,7 @@
"test/core/nanopb/corpus_serverlist/a8d1b4e5672a501d7a6cd14b2929297f3a82e035"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53258,10 +56275,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53269,10 +56283,7 @@
"test/core/nanopb/corpus_serverlist/aa614cc8d05a3a58c30a890c10b9a0c1d609b228"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53280,10 +56291,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53291,10 +56299,7 @@
"test/core/nanopb/corpus_serverlist/aa65320376f63805cc82b247612b2e05b87bdbee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53302,10 +56307,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53313,10 +56315,7 @@
"test/core/nanopb/corpus_serverlist/abd3f6e2cc8887942de20e1c257427b825aed0ad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53324,10 +56323,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53335,10 +56331,7 @@
"test/core/nanopb/corpus_serverlist/ad0653a3a63675a7ce797e69b4673866b88ace33"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53346,10 +56339,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53357,10 +56347,7 @@
"test/core/nanopb/corpus_serverlist/ae2ce27806f67312e0d0e29a492db9ab9cb9bf4e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53368,10 +56355,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53379,10 +56363,7 @@
"test/core/nanopb/corpus_serverlist/ae4c0e671bd004165a1e7877d9c67249a165d2df"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53390,10 +56371,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53401,10 +56379,7 @@
"test/core/nanopb/corpus_serverlist/af75c24dff7e22948ed141c763a1309e6f540bcc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53412,10 +56387,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53423,10 +56395,7 @@
"test/core/nanopb/corpus_serverlist/b0f228c6d0cbbc9f10117f344d5aae6f001d00fa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53434,10 +56403,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53445,10 +56411,7 @@
"test/core/nanopb/corpus_serverlist/b2c6eab05580b85cda591093d3f05c44bf453fce"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53456,10 +56419,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53467,10 +56427,7 @@
"test/core/nanopb/corpus_serverlist/b35281c0aae174d1ddc8999d97b9713f8004f285"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53478,10 +56435,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53489,10 +56443,7 @@
"test/core/nanopb/corpus_serverlist/b484ae40795cf9730ba94d5a4ca40aa47b88eacb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53500,10 +56451,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53511,10 +56459,7 @@
"test/core/nanopb/corpus_serverlist/b49c2fed1417a981ba29b32be73ee1700bea7ec9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53522,10 +56467,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53533,10 +56475,7 @@
"test/core/nanopb/corpus_serverlist/b68542373c05c0ed25231d09955b2c699d37c45b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53544,10 +56483,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53555,10 +56491,7 @@
"test/core/nanopb/corpus_serverlist/b6d42cbe913f7275b574a71f0768781bdb6f45b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53566,10 +56499,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53577,10 +56507,7 @@
"test/core/nanopb/corpus_serverlist/b80b6c2cae83c2097c7e4c1fb181d47cb8fd0519"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53588,10 +56515,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53599,10 +56523,7 @@
"test/core/nanopb/corpus_serverlist/b90ab62d8591182fd90cd21cdb893178d97f7e0e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53610,10 +56531,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53621,10 +56539,7 @@
"test/core/nanopb/corpus_serverlist/ba45c93ee6b8b286798d8791ec049207c448f7cd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53632,10 +56547,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53643,10 +56555,7 @@
"test/core/nanopb/corpus_serverlist/ba67e81ef0f9a14bf5a1ca228bff87c681e83a44"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53654,10 +56563,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53665,10 +56571,7 @@
"test/core/nanopb/corpus_serverlist/bbd1f06ddee4fbbd0e5c9c915889862e5df34f9c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53676,10 +56579,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53687,10 +56587,7 @@
"test/core/nanopb/corpus_serverlist/bd982feb5dd4362e6bd9746ed216c25ce2749df4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53698,10 +56595,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53709,10 +56603,7 @@
"test/core/nanopb/corpus_serverlist/be77053335e6496288fcf8b6c4d0b4abf86493ff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53720,10 +56611,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53731,10 +56619,7 @@
"test/core/nanopb/corpus_serverlist/bfb53203499969fac4f4be48e1bcd9235c2fa101"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53742,10 +56627,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53753,10 +56635,7 @@
"test/core/nanopb/corpus_serverlist/c143576bdb5b34ad89fa3319507ae382a721f587"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53764,10 +56643,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53775,10 +56651,7 @@
"test/core/nanopb/corpus_serverlist/c1ac502a15c53a90a1934f4a31d30f93db36dc8a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53786,10 +56659,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53797,10 +56667,7 @@
"test/core/nanopb/corpus_serverlist/c1b29883768551fa5aadc38ba6eaad8007b9b85b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53808,10 +56675,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53819,10 +56683,7 @@
"test/core/nanopb/corpus_serverlist/c2331fe0660ab5e411f6d38968c706aed390d8f6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53830,10 +56691,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53841,10 +56699,7 @@
"test/core/nanopb/corpus_serverlist/c32647119c244cc018bb1863853d5c7bd37090df"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53852,10 +56707,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53863,10 +56715,7 @@
"test/core/nanopb/corpus_serverlist/c4098733900c27861bbf74a71afcbbd93d62f8ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53874,10 +56723,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53885,10 +56731,7 @@
"test/core/nanopb/corpus_serverlist/c4f5769bf3b4f2a55c006b4cf5a3bba44b347241"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53896,10 +56739,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53907,10 +56747,7 @@
"test/core/nanopb/corpus_serverlist/c6ea7b2d47402a458d5d03235bb042b61e05b2e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53918,10 +56755,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53929,10 +56763,7 @@
"test/core/nanopb/corpus_serverlist/c7255dc48b42d44f6c0676d6009051b7e1aa885b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53940,10 +56771,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53951,10 +56779,7 @@
"test/core/nanopb/corpus_serverlist/c7d77af55176ae0ae5e59f46e48e1e6ea108d799"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53962,10 +56787,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53973,10 +56795,7 @@
"test/core/nanopb/corpus_serverlist/c80827341dcdf1c21b303b82ec7e6df7eaf63f3d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -53984,10 +56803,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -53995,10 +56811,7 @@
"test/core/nanopb/corpus_serverlist/c9501031a75c067b6602e2831f03421b87be4496"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54006,10 +56819,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54017,10 +56827,7 @@
"test/core/nanopb/corpus_serverlist/c98f88d962dfbc2a83e08bfbd8a87b0cc5a8b330"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54028,10 +56835,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54039,10 +56843,7 @@
"test/core/nanopb/corpus_serverlist/ccd33fa22b2983978f9617b3cde76ea05b683c2c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54050,10 +56851,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54061,10 +56859,7 @@
"test/core/nanopb/corpus_serverlist/cd0e7701fd79879c56f680817a0d2705751b1f44"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54072,10 +56867,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54083,10 +56875,7 @@
"test/core/nanopb/corpus_serverlist/cd1c2b5c2684d831aab5265e9cd6f1ee045dab9b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54094,10 +56883,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54105,10 +56891,7 @@
"test/core/nanopb/corpus_serverlist/cf98e8b01e7a759f28a9c5f59c896317d74ac47c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54116,10 +56899,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54127,10 +56907,7 @@
"test/core/nanopb/corpus_serverlist/d1d171589e035be85dc347278f0735151a342d68"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54138,10 +56915,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54149,10 +56923,7 @@
"test/core/nanopb/corpus_serverlist/d243143bf9b8adf6be92a157428ec6cbfd785423"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54160,10 +56931,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54171,10 +56939,7 @@
"test/core/nanopb/corpus_serverlist/d2cd278979f2842ebd890f1d84712750273ad0fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54182,10 +56947,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54193,10 +56955,7 @@
"test/core/nanopb/corpus_serverlist/d2e96eb2699c7dd4a183f13d3a063a1aa9c192fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54204,10 +56963,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54215,10 +56971,7 @@
"test/core/nanopb/corpus_serverlist/d3178f8b0d26275667c27bb8533a61643213e4d8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54226,10 +56979,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54237,10 +56987,7 @@
"test/core/nanopb/corpus_serverlist/d46f536ea4b601c0ff313a5eb5b47e2b55aa9eb0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54248,10 +56995,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54259,10 +57003,7 @@
"test/core/nanopb/corpus_serverlist/d4be3038631eac422022ee23f43b47905a15b2b5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54270,10 +57011,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54281,10 +57019,7 @@
"test/core/nanopb/corpus_serverlist/d56b30a2d1b5a2a13ae00392bcb4ca72085310d9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54292,10 +57027,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54303,10 +57035,7 @@
"test/core/nanopb/corpus_serverlist/d67f85948143218d11e2fb7936a119741036045d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54314,10 +57043,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54325,10 +57051,7 @@
"test/core/nanopb/corpus_serverlist/d6930ea81dfd91856a06a0c16483e47616642b4b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54336,10 +57059,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54347,10 +57067,7 @@
"test/core/nanopb/corpus_serverlist/d737c10038a92add90e2ebea5c174ed249de8018"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54358,10 +57075,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54369,10 +57083,7 @@
"test/core/nanopb/corpus_serverlist/d758a67f018b176dfc7d29630cf8cb587f5b2a6b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54380,10 +57091,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54391,10 +57099,7 @@
"test/core/nanopb/corpus_serverlist/dc7139105787f3ba67d7971d80796e9cf5786a91"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54402,10 +57107,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54413,10 +57115,7 @@
"test/core/nanopb/corpus_serverlist/dc8ec35f43e994b9c4ac61275d6b934990d42181"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54424,10 +57123,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54435,10 +57131,7 @@
"test/core/nanopb/corpus_serverlist/dd2694fe12a018bc6af6f288b5c22a030eec8049"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54446,10 +57139,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54457,10 +57147,7 @@
"test/core/nanopb/corpus_serverlist/de7424f44508582a953f137195533b7a0191eda7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54468,10 +57155,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54479,10 +57163,7 @@
"test/core/nanopb/corpus_serverlist/de91a02040d792dfcb71a4cb5aa4c1c006201273"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54490,10 +57171,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54501,10 +57179,7 @@
"test/core/nanopb/corpus_serverlist/deb576067b11f6e2a3a39b0f2ef38ddae5c67b18"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54512,10 +57187,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54523,10 +57195,7 @@
"test/core/nanopb/corpus_serverlist/df58248c414f342c81e056b40bee12d17a08bf61"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54534,10 +57203,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54545,10 +57211,7 @@
"test/core/nanopb/corpus_serverlist/e076020b2826abd3a4b960fb33a35fd7d0606dd8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54556,10 +57219,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54567,10 +57227,7 @@
"test/core/nanopb/corpus_serverlist/e0bcf682342967c002621acd2563a2157826d156"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54578,10 +57235,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54589,10 +57243,7 @@
"test/core/nanopb/corpus_serverlist/e1edca08a7654b42a64647abb0e773eddddb580b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54600,10 +57251,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54611,10 +57259,7 @@
"test/core/nanopb/corpus_serverlist/e2fa528289b5971f5b40b3687a2a6f0d17348de6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54622,10 +57267,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54633,10 +57275,7 @@
"test/core/nanopb/corpus_serverlist/e52af0ba8750572b98f3a8968de77811ddff0893"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54644,10 +57283,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54655,10 +57291,7 @@
"test/core/nanopb/corpus_serverlist/e5a0f40647f805b5001645ce2d94505e72fa64f3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54666,10 +57299,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54677,10 +57307,7 @@
"test/core/nanopb/corpus_serverlist/e69762f0c6a2750c0b03503a6aec90ffc94bcb72"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54688,10 +57315,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54699,10 +57323,7 @@
"test/core/nanopb/corpus_serverlist/e7064f0b80f61dbc65915311032d27baa569ae2a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54710,10 +57331,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54721,10 +57339,7 @@
"test/core/nanopb/corpus_serverlist/e863a4420854c36168d2b8dd39ce474ebe11cd26"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54732,10 +57347,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54743,10 +57355,7 @@
"test/core/nanopb/corpus_serverlist/e8993f97bb9c83f87c64cfc429095eeaccf32953"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54754,10 +57363,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54765,10 +57371,7 @@
"test/core/nanopb/corpus_serverlist/e9875d9a54b3ebc57df4da886cd30a39252ac666"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54776,10 +57379,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54787,10 +57387,7 @@
"test/core/nanopb/corpus_serverlist/e98a9d92bbbac9b1e64c0641e967adebd681b2aa"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54798,10 +57395,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54809,10 +57403,7 @@
"test/core/nanopb/corpus_serverlist/eb7c31f48c77b742fa29126ac78a2c06c41208e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54820,10 +57411,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54831,10 +57419,7 @@
"test/core/nanopb/corpus_serverlist/ec174492517f988010ed3ddbd003cb388f477bb6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54842,10 +57427,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54853,10 +57435,7 @@
"test/core/nanopb/corpus_serverlist/ec4d6a393be7ec80ccb8c531337a7fc3ef140e66"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54864,10 +57443,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54875,10 +57451,7 @@
"test/core/nanopb/corpus_serverlist/ecd40909ab5e2c61841d9fb95b8aacc87651100c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54886,10 +57459,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54897,10 +57467,7 @@
"test/core/nanopb/corpus_serverlist/ed17c8ddb6cc8a0b653dc87aca999d31e80c781a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54908,10 +57475,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54919,10 +57483,7 @@
"test/core/nanopb/corpus_serverlist/ee0b476126bb1c2249b299323718ecef1250645e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54930,10 +57491,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54941,10 +57499,7 @@
"test/core/nanopb/corpus_serverlist/ee1fb6a0b4139c07f1cf6bce850eaac9a2db29ba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54952,10 +57507,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54963,10 +57515,7 @@
"test/core/nanopb/corpus_serverlist/eeac145c017ed35305f0ae69f820fc41e26e7997"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54974,10 +57523,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -54985,10 +57531,7 @@
"test/core/nanopb/corpus_serverlist/efac7390c6e3a653d3ce93c3d6902f2f1c281ce0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -54996,10 +57539,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55007,10 +57547,7 @@
"test/core/nanopb/corpus_serverlist/f0f0dace93d51cd8e045aeacca89424fc836eebc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55018,10 +57555,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55029,10 +57563,7 @@
"test/core/nanopb/corpus_serverlist/f3341b8cc55c0bb6e2d0a1f7f06d68e4f04057f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55040,10 +57571,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55051,10 +57579,7 @@
"test/core/nanopb/corpus_serverlist/f59ff56e341b94f2bddfd718b48ae9ab1692d720"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55062,10 +57587,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55073,10 +57595,7 @@
"test/core/nanopb/corpus_serverlist/f5a1824b9fd9f124df8097017607bcfa00eccfce"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55084,10 +57603,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55095,10 +57611,7 @@
"test/core/nanopb/corpus_serverlist/f5b92b69853a5d123bffdc6b0ab093f767ec30ad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55106,10 +57619,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55117,10 +57627,7 @@
"test/core/nanopb/corpus_serverlist/f6aea4c380e41ddef2489ee581ab35e17fa3e8dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55128,10 +57635,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55139,10 +57643,7 @@
"test/core/nanopb/corpus_serverlist/f7b7254a3af7c41cb86e4b23bb93c5a6d55e2583"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55150,10 +57651,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55161,10 +57659,7 @@
"test/core/nanopb/corpus_serverlist/f7bdc1b174f53a49c6ef8f8cdb9b8e74e0a5d4ab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55172,10 +57667,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55183,10 +57675,7 @@
"test/core/nanopb/corpus_serverlist/f98c78c028baf22f39c77faf6e70edb86ac1d927"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55194,10 +57683,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55205,10 +57691,7 @@
"test/core/nanopb/corpus_serverlist/fb440171bca6ff922727e9ff2a4ac40d8d7905ff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55216,10 +57699,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55227,10 +57707,7 @@
"test/core/nanopb/corpus_serverlist/fc76cc4030b422e4cb5c145c3e8ed122e242acf0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55238,10 +57715,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55249,10 +57723,7 @@
"test/core/nanopb/corpus_serverlist/fcab3b80624b431e464dc12d3b6da1cf538bd15e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55260,10 +57731,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55271,10 +57739,7 @@
"test/core/nanopb/corpus_serverlist/fdb3a9b59798d7e851d9074db69422b1d2df38dd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55282,10 +57747,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55293,10 +57755,7 @@
"test/core/nanopb/corpus_serverlist/fe5de5f387e31b029d589d9b1777fd0d6b3e47b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55304,10 +57763,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55315,10 +57771,7 @@
"test/core/nanopb/corpus_serverlist/ff52d938aaa10c08b2eb0830fc0066c3b57e040f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55326,10 +57779,7 @@
"language": "c",
"name": "nanopb_fuzzer_serverlist_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55337,10 +57787,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/01c008fa.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55348,10 +57795,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55359,10 +57803,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/021ec59f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55370,10 +57811,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55381,10 +57819,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/02918e4ad9e8928845f232c0cb043057add3c9a9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55392,10 +57827,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55403,10 +57835,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0336e1ff71939de9e2007fdb4aba891e35a37488"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55414,10 +57843,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55425,10 +57851,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/033dd2f6.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55436,10 +57859,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55447,10 +57867,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0384345c.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55458,10 +57875,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -55469,10 +57915,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/03b9be1fa172dff5d1543be079b9c64fa2c9a278"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55480,10 +57923,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -55491,10 +57963,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/05c3a0390d0f52d241728926fa901599a47e4606"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55502,10 +57971,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55513,10 +57979,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/05efe6d81ce606557691432634e81f61e68b0b81"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55524,10 +57987,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55535,10 +57995,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/06bd2f82fefb9943787d63ea359f9b77072380c2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55546,10 +58003,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55557,10 +58011,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0766afc7c27c06ea18d896083470d587a380de3c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55568,10 +58019,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55579,10 +58027,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/07ad7e0ea2aaecba37f2429a64e946fc6e2556f1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55590,10 +58035,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55601,10 +58043,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/07c96c06eddbed5a3ce050436bc805f6821cbc9b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55612,10 +58051,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55623,10 +58059,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/081e56ce6f6b1c57adb806fbc5baa9f93f87513a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55634,10 +58067,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55645,10 +58075,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/08492d3d0994005206d1d3213b8747d1026ae1eb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55656,10 +58083,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -55667,10 +58107,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/09938e3256d06a8e168eb038d8a58b8462f7f697"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55678,10 +58115,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55689,10 +58123,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0aa599e20761777c2cb9b41cd89e5c2e18f82d9e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55700,10 +58131,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55711,10 +58139,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0aa7b949.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55722,10 +58147,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55733,10 +58155,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0abd533e.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55744,10 +58163,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55755,10 +58171,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0b275a7f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55766,10 +58179,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55777,10 +58187,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0c413d2b361b2221585026d42f3046ff4135d2ff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55788,10 +58195,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55799,10 +58203,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0d10bb63.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55810,10 +58211,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55821,10 +58219,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0e349b8762703d080b3a696600e21d64c23a2ed3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55832,10 +58227,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55843,10 +58235,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0f700e05.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55854,10 +58243,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55865,10 +58251,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/0ff4d220.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55876,10 +58259,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55887,10 +58267,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/10724098.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55898,10 +58275,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55909,10 +58283,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/108e270a272e312fc97ec23004b80fdc7bad3906"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55920,10 +58291,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55931,10 +58299,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/11516d58.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55942,10 +58307,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55953,10 +58315,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/11cda3f70be4b507ea936bca93af9ce5aaab3be7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55964,10 +58323,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -55975,10 +58331,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/13501419f349b7855d2e94060bd08b28923d1f37"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -55986,10 +58339,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -55997,10 +58363,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/146b7d66ad932c4b623eec8004e286d3705697d3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56008,10 +58371,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56019,10 +58379,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/14f9a0cda0d64590430218aaf6dedd9be2a3533f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56030,10 +58387,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56041,10 +58395,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/15ae78a8543a4794a27e6c79b0d34540322b97fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56052,10 +58403,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56063,10 +58411,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/15afdcf2cadb93f56dbe36233d8cd7ea9d2bd6fe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56074,10 +58419,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56085,10 +58427,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1650b19093c56a1e86ee192bd9cd8d2266a9e353"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56096,10 +58435,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56107,10 +58443,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/16753235697083ecc45c117287f1d8ce6ad1ad1a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56118,10 +58451,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56129,10 +58459,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/17d7c718ec2597353a5dd2c78d6717a3d6aabfae"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56140,10 +58467,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56151,10 +58475,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/18d8d274aa7c163fd6d0084d5c25c8623e10c541"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56162,10 +58483,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56173,10 +58491,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/18f00b5f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56184,10 +58499,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56195,10 +58507,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1939a9021aba59ea2e49d3d0909e6fdf86ac3f9e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56206,10 +58515,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56217,10 +58523,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1a69d5fc.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56228,10 +58531,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56239,10 +58539,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1aa6897b6eebb8c68c972cc5025b39c7e60c17fe"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56250,10 +58547,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -56261,10 +58571,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1cf17783de9e662f3720847f2d83d86dcdcab500"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56272,10 +58579,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56283,10 +58587,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1cfdde7a.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56294,10 +58595,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56305,10 +58603,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1d614f3d6b826f844178a77094bedb534748a362"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56316,10 +58611,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56327,10 +58619,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1e92aaa5.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56338,10 +58627,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56349,10 +58635,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1ea5651f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56360,10 +58643,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56371,10 +58651,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/1f992057.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56382,10 +58659,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56393,10 +58667,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/20fd12d3670571283dc0c5dbb3fc139a8e943790"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56404,10 +58675,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56415,10 +58683,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/21475569.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56426,10 +58691,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56437,10 +58699,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/218c1b123428a07622570947e9b7cdb48c310ca5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56448,10 +58707,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56459,10 +58715,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/21a2dcda.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56470,10 +58723,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56481,10 +58731,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/22ad891a.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56492,10 +58739,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56503,10 +58747,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2463aea879c5ab49f8409d0e5c062c7e086b034b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56514,10 +58755,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56525,10 +58763,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/24ed80095e58199c52997f174046272f61ce4a8d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56536,10 +58771,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56547,10 +58779,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/25ab638f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56558,10 +58787,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56569,10 +58795,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/26048c58bd5f2a94843f6fd1e4ab0be04b232636"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56580,10 +58803,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56591,10 +58811,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/26870785fd0564f552af4e0ca418738a85b21086"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56602,10 +58819,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56613,10 +58827,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2701d1669c2996c097a74c5255d569615357b916"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56624,10 +58835,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56635,10 +58843,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/27ac2ae2.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56646,10 +58851,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56657,10 +58859,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2814d70c.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56668,10 +58867,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56679,10 +58875,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/282b6585.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56690,10 +58883,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -56701,10 +58907,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2abe64b96e5e72adcf2dcc43444a69d0fb664b66"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56712,10 +58915,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56723,10 +58923,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2ad6cedd32cd646ba8e25226c7c13a107c1d6447"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56734,10 +58931,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56745,10 +58939,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2b14c6e618ec95754ea7e24fe6bc5a3a97df6897"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56756,10 +58947,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56767,10 +58955,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2b40aa21723c7e67e92e74a3083df008461d591c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56778,10 +58963,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56789,10 +58971,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2bf69fe6b40734cc3f0abdd765757809b14b0b88"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56800,10 +58979,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -56811,10 +59003,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2c6660ba.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56822,10 +59011,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56833,10 +59019,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2cc6d1f3ee8933518e91b8410781fa6e105b3a15"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56844,10 +59027,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56855,10 +59035,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2e4805c3.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56866,10 +59043,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56877,10 +59051,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2f20e2decd09b6f211a5469c67efbada355e6c04"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56888,10 +59059,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56899,10 +59067,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2f3b1cd6780fe475f76f17e9e36541963d993165"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56910,10 +59075,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56921,10 +59083,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/2fb017cd4c34f4af183d03c4a219d2bb36ee2dd6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56932,10 +59091,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56943,10 +59099,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/30bba77d0f420c4f454011476f3c94e31c50c161"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56954,10 +59107,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56965,10 +59115,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3224e6cd.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56976,10 +59123,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -56987,10 +59131,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/326ec4d5.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -56998,10 +59139,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57009,10 +59147,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3292129aa7f6eba86b70fff64408f18fff895c12"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57020,10 +59155,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57031,10 +59163,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/32b11997.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57042,10 +59171,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57053,10 +59179,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/32cecacca27b249bd764f852168036c5f962bd16"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57064,10 +59187,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57075,10 +59195,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/330ad4b6.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57086,10 +59203,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57097,10 +59211,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/33b4cf1ac251f0ba0c014005ef8207afe1dea623"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57108,10 +59219,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57119,10 +59227,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/33e2ecd5c9bbc1f1dcab29d00195e0ab6d04642d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57130,10 +59235,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57141,10 +59243,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/340b032d39e2b212828a2bd1a97e2b6b81dcd41b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57152,10 +59251,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57163,10 +59259,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/34bba9e4.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57174,10 +59267,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57185,10 +59275,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/374262a5acf9cde1f480e7b7254c788e1936a4de"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57196,10 +59283,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57207,10 +59291,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/37ec9df8.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57218,10 +59299,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57229,10 +59307,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/38df7e63181cbd045e5af9dbee463360c8254618"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57240,10 +59315,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57251,10 +59323,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/39ea47bb.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57262,10 +59331,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57273,10 +59339,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3aa82376296ab5a33f2921d7705b75b78b683c2d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57284,10 +59347,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -57295,10 +59371,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3ca5da2f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57306,10 +59379,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57317,10 +59387,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3d7ef8c7b05f26e914c479dedb1bef5e378d2d94"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57328,10 +59395,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57339,10 +59403,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3dc665f93db294b9ccb8fcec94bcc2a91f3a04e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57350,10 +59411,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57361,10 +59419,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3de41f3f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57372,10 +59427,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57383,10 +59435,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3e2077a4fd2def7b11e618d46245d0aa85824317"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57394,10 +59443,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57405,10 +59451,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3e3ae35a.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57416,10 +59459,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57427,10 +59467,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3e787760.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57438,10 +59475,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57449,10 +59483,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/3f3069cf26f761366f947e025f7049254d555e7f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57460,10 +59491,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57471,10 +59499,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/407607d2.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57482,10 +59507,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57493,10 +59515,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/40af8d589c76d7912bec06c2ae1f2466065018e7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57504,10 +59523,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57515,10 +59531,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/418f392319c44d06a018ce4c62569d527829177a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57526,10 +59539,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57537,10 +59547,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/41b31ef0.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57548,10 +59555,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57559,10 +59563,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/422708b4.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57570,10 +59571,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57581,10 +59579,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/422fa704.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57592,10 +59587,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57603,10 +59595,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4271fbb36e03cee79b21a4a5a65f37ceef58a8cd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57614,10 +59603,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57625,10 +59611,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/42b0afca.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57636,10 +59619,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57647,10 +59627,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/43fc6abab9840be5ee614211f17395b5966f6070"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57658,10 +59635,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57669,10 +59643,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/44516839d35af9ccaf8a2c62f3ce6a723482445e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57680,10 +59651,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57691,10 +59659,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/44f342a6.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57702,10 +59667,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57713,10 +59675,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4558ddeb.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57724,10 +59683,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57735,10 +59691,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/459c0bf6.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57746,10 +59699,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57757,10 +59707,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/468cf8bf3e31e1013c7c6d2288baac47ff90aa63"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57768,10 +59715,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -57779,10 +59739,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4aa883d0.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57790,10 +59747,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57801,10 +59755,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4b7bcb4ae6c0222a1a24d1fb1a5d96519750ca5e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57812,10 +59763,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57823,10 +59771,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4c412cc1a775cea041fa270483d610afb72f463b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57834,10 +59779,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57845,10 +59787,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4d55d5ae.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57856,10 +59795,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -57867,10 +59819,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4db3d4075ed27f2a2311f85dd1d6df028cc5d083"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57878,10 +59827,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57889,10 +59835,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4eb269c3.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57900,10 +59843,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57911,10 +59851,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4ecfe1be695df0d2489dddb52da8bcdeb6ed779d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57922,10 +59859,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57933,10 +59867,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4f97bd97ab5dc6b4c0f62f8459be8a9593dc83b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57944,10 +59875,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57955,10 +59883,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/4ff50e49865768323f94116bd98d2314455273cc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57966,10 +59891,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57977,10 +59899,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/508def44e4d60f237f18a40d7058e58a752a74e1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -57988,10 +59907,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -57999,10 +59915,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/51a1abd1.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58010,10 +59923,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58021,10 +59931,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/52b5478161de7b2eba0f7bfbc29aea985c8d9ee7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58032,10 +59939,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58043,10 +59947,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/52ecfedca3b2b26e6999b6afc846f3dbd5d35130"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58054,10 +59955,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58065,10 +59963,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/53d18398c0d484de00afd8d583fe802d55d4da44"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58076,10 +59971,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58087,10 +59979,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/53de507f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58098,10 +59987,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58109,10 +59995,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/540ada69.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58120,10 +60003,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58131,10 +60011,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5413b531fe06923ddf2c9e3eb958769374bc2445"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58142,10 +60019,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58153,10 +60027,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5429f0da.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58164,10 +60035,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58175,10 +60043,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5435005f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58186,10 +60051,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58197,10 +60059,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/546367bfdd2b9464fbfe5d74f55d8cd220accbab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58208,10 +60067,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58219,10 +60075,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/54d0fc6c.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58230,10 +60083,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58241,10 +60091,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/55af20415ead0ddd417f37fa91a4c767b749ee34"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58252,10 +60099,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58263,10 +60107,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/55f6fb1a.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58274,10 +60115,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58285,10 +60123,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5780565e.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58296,10 +60131,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58307,10 +60139,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/57918260.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58318,10 +60147,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58329,10 +60155,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5841d898d2cd804f2d6373538e341dfba8a4dfab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58340,10 +60163,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58351,10 +60171,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/58b88a24.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58362,10 +60179,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -58373,10 +60203,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/597fdab5.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58384,10 +60211,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58395,10 +60219,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/59ce7091c00075943d79e857c01ad1af5f38c78e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58406,10 +60227,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58417,10 +60235,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/59d0b24d1acd01c749fb4bd6802a5f4dd003ce75"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58428,10 +60243,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58439,10 +60251,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/59dcfde4.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58450,10 +60259,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58461,10 +60267,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5ac92c4a7fb476393f8275fe4b79a2b13e3bcad9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58472,10 +60275,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58483,10 +60283,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5d43ac923d7607a16e3d7bf8b838f52622871251"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58494,10 +60291,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58505,10 +60299,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5d817877.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58516,10 +60307,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58527,10 +60315,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5e2508e15c79fbe9c2e6c1a393b490356a17efbc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58538,10 +60323,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58549,10 +60331,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5f758756.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58560,10 +60339,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58571,10 +60347,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/5f820fa8d44229219d0b7c4724e3e40a2ace97f4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58582,10 +60355,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58593,10 +60363,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/61e798bdd49b339983fea4ccfe18efe44afbd69b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58604,10 +60371,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58615,10 +60379,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/62d05f336176a10a2c339c04d818f23b6e9a2637"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58626,10 +60387,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58637,10 +60395,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6499e2db.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58648,10 +60403,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58659,10 +60411,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/64cdbb31d5eda779d07885fa7881812db7800c05"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58670,10 +60419,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58681,10 +60427,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/65077d2946cfb822cf92c9dfc44517a34589f277"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58692,10 +60435,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58703,10 +60443,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/65099066.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58714,10 +60451,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58725,10 +60459,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/652bfdce.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58736,10 +60467,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58747,10 +60475,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/65d5ae42e6acb429459a1e1a5fb35f09c0f95de2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58758,10 +60483,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58769,10 +60491,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/65fd6cb3058ee0baae854cc7859b7c0c1e1c1166"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58780,10 +60499,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58791,10 +60507,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6652f7be83a876214affc3f230040757f7db4ea8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58802,10 +60515,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58813,10 +60523,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/67b04816.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58824,10 +60531,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58835,10 +60539,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/67ebf074c7f928c4fe32fef44e5c958cf441c93c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58846,10 +60547,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58857,10 +60555,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/68f564fd8064233897ff704b5955b33a2e29293a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58868,10 +60563,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58879,10 +60571,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/69891e9f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58890,10 +60579,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58901,10 +60587,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6c5bb78b51cf5006c92258292de19550985c00ba"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58912,10 +60595,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58923,10 +60603,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6dc4455c.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58934,10 +60611,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58945,10 +60619,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6e050e98.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58956,10 +60627,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58967,10 +60635,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6f3bd9f33ca05bebe3811f7b3ae6ed112e1e45b9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -58978,10 +60643,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -58989,10 +60651,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/6f9d75e1af7ae7010d32872da888a582a25fddb4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59000,10 +60659,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59011,10 +60667,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/70ebe7f32c63ca8940017eb83e6db4d8b39ee03c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59022,10 +60675,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59033,10 +60683,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/712300b98afdb5f0d15c657c13cea76841164b13"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59044,10 +60691,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59055,10 +60699,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/71ab07577909ca4b766f8ea0c6b8ec2bc395fc66"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59066,10 +60707,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59077,10 +60715,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/72296cf9e1052ced4b60e2053aba9f1a569144e9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59088,10 +60723,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59099,10 +60731,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/7342b3febb07521e39abdf4ee976d16199d51239"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59110,10 +60739,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59121,10 +60747,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/746715fe.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59132,10 +60755,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59143,10 +60763,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/76294f12a5974e9f87d8f092d0df5429cf6c0466"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59154,10 +60771,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59165,10 +60779,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/769f5d079151d1b5cab388c47a74f3c297c18d58"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59176,10 +60787,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59187,10 +60795,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/7839f12a8410a73d66e191cb5183d36d09a375e8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59198,10 +60803,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59209,10 +60811,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/7b453adcb9c4bf31dbc448ff32c2bc90ebcbdf0f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59220,10 +60819,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59231,10 +60827,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/7ddfac7d7845b424bf670070781ca6ff8586c63b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59242,10 +60835,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59253,10 +60843,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/7f15bbce.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59264,10 +60851,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59275,10 +60859,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/7ffd05db.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59286,10 +60867,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59297,10 +60875,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8164d3c4af043c47cfd6966873bccd2353d072bf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59308,10 +60883,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59319,10 +60891,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/81fb19dfcb3c3a18fd9e7c177356479503e75e6f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59330,10 +60899,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59341,10 +60907,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/82dda42ddde662192ebaa96788945b7673bb486b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59352,10 +60915,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -59363,10 +60939,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8338ebee.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59374,10 +60947,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -59385,10 +60971,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/86a19d13cc65790696299c819cac17b14e337647"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59396,10 +60979,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59407,10 +60987,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/86e6dbf2.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59418,10 +60995,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -59429,10 +61019,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8846918f967dd6513040c6d382fcd68ff7099873"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59440,10 +61027,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59451,10 +61035,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/885fe25a0b441ef46ab176b88771c133e530cb73"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59462,10 +61043,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59473,10 +61051,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/88e1329b.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59484,10 +61059,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59495,10 +61067,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8b186384.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59506,10 +61075,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59517,10 +61083,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8c04817a75fddd71f13779f2ad5b994f45c333a2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59528,10 +61091,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59539,10 +61099,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8c72c3f35e9b9fd168ad9024c953a703f33ae3c1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59550,10 +61107,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59561,10 +61115,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8c760938a2a72fa92b27e00e05005e2e4c429359"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59572,10 +61123,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59583,10 +61131,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8da521d9.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59594,10 +61139,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59605,10 +61147,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8de81717.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59616,10 +61155,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59627,10 +61163,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/8ec00f45afb097066f47d0bad256a8b856b1efe8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59638,10 +61171,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59649,10 +61179,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/90224b8e.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59660,10 +61187,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59671,10 +61195,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/90240c7c.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59682,10 +61203,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59693,10 +61211,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9099ac4e83f6460c80b5557c87f653e4c65aa091"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59704,10 +61219,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59715,10 +61227,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/914ed07570b6441365a3636d05850f7316c7f2a8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59726,10 +61235,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59737,10 +61243,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/916b825da0ffc46fdb6120b1044e98ae158fce70"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59748,10 +61251,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59759,10 +61259,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/93beeba2.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59770,10 +61267,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59781,10 +61275,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/93c3ffcb7e3bcb5ed7e37a5b3dfb97b43ca42718"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59792,10 +61283,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59803,10 +61291,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9540d3ad3fa75bfb95c0d57cefd737611c7069a5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59814,10 +61299,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59825,10 +61307,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/954337ef.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59836,10 +61315,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59847,10 +61323,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/95d25ba2e190fafa2b3ca1e1c467b9ef64868962"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59858,10 +61331,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59869,10 +61339,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9764015f89a0b7a59f3b5359b0a037b38d6e39d7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59880,10 +61347,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59891,10 +61355,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/97aed4bd.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59902,10 +61363,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59913,10 +61371,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/986c9ca7db83b2cddbae2a0db2dca87f52277074"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59924,10 +61379,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59935,10 +61387,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9953eb28aa1ed661612a4710a9d16a15de4ae353"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59946,10 +61395,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59957,10 +61403,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59968,10 +61411,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -59979,10 +61419,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9a6963b0d0fcb0e91a31748c47c6f0e1e842fea9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -59990,10 +61427,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60001,10 +61435,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9bf7553a.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60012,10 +61443,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60023,10 +61451,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/9d2d18fce18c790035d8f67ed798703bdda0a949"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60034,10 +61459,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60045,10 +61467,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a112d484b70e778835fcd478fd651828720791e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60056,10 +61475,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60067,10 +61483,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a24bf2dc.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60078,10 +61491,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60089,10 +61499,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a32be0653ccc65463445b4aaf24a7a1164d5c642"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60100,10 +61507,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60111,10 +61515,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a357658d.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60122,10 +61523,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60133,10 +61531,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a3a2b1af.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60144,10 +61539,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60155,10 +61547,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a5348197.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60166,10 +61555,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -60177,10 +61579,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a5cc3762cb2b2cac316c60ddee794016057fb4ff"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60188,10 +61587,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -60199,10 +61611,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a7e64803.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60210,10 +61619,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -60221,10 +61643,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a8d229374635fa6f2a75ca1669892e1bc244e719"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60232,10 +61651,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60243,10 +61659,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a8f2345b2c949e9e32a434c99accf771f405eb65"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60254,10 +61667,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60265,10 +61675,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9463428cdc47d37efb6e3c5633d1e5e78911f16"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60276,10 +61683,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60287,10 +61691,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9966f7181d08f6a9ff8158736ad77a285d743a6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60298,10 +61699,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60309,10 +61707,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/a9e22d93.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60320,10 +61715,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60331,10 +61723,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/aa3c8974.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60342,10 +61731,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60353,10 +61739,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/aa825693.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60364,10 +61747,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60375,10 +61755,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/aa8729d7.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60386,10 +61763,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -60397,10 +61803,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/ad810f7f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60408,10 +61811,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60419,10 +61819,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/aedefcd9bd7fc10b7bf60372da54c43e953523bd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60430,10 +61827,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60441,10 +61835,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/aefcbc29f2caea5038cda4dbc927cdadd9b844c4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60452,10 +61843,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60463,10 +61851,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b06ce623.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60474,10 +61859,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60485,10 +61867,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b1128694.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60496,10 +61875,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60507,10 +61883,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b220d23a13d98d4815b1f7a3e4fe7dd8672b1c83"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60518,10 +61891,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60529,10 +61899,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b28959dd.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60540,10 +61907,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60551,10 +61915,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b431df13.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60562,10 +61923,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60573,10 +61931,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b5acaa52.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60584,10 +61939,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60595,10 +61947,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b7ce4a4f6eea20c0b83d9f7fa8406a0730ee0040"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60606,10 +61955,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60617,10 +61963,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b829143b.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60628,10 +61971,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60639,10 +61979,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b887097732b9c30719f6c7ea7a7cbac531512a31"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60650,10 +61987,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60661,10 +61995,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/b924c842.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60672,10 +62003,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60683,10 +62011,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/bad4f467.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60694,10 +62019,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60705,10 +62027,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/bc9545cebdcb3af82406a5f0c1b286d28f9d4f5a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60716,10 +62035,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60727,10 +62043,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/bd63e44a3b004e7ed471c2367c3efae2c58a676d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60738,10 +62051,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60749,10 +62059,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/be9b6e78.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60760,10 +62067,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60771,10 +62075,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/bf5e21c32becb5839deeb81e9174cf6478a25473"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60782,10 +62083,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60793,10 +62091,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/bfb55acd5b66521eb5bd8ce6b57b3b6895883675"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60804,10 +62099,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60815,10 +62107,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/bfcbffa9.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60826,10 +62115,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60837,10 +62123,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c004455e9d60bc2fff094e79cd0b38507023e018"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60848,10 +62131,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60859,10 +62139,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c039ac9a5a570f8fd9064df9320890b885edf9c3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60870,10 +62147,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60881,10 +62155,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c1188b44.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60892,10 +62163,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60903,10 +62171,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c12835aa9f3513d3f7179ee4f9976292713f7cb9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60914,10 +62179,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60925,10 +62187,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c13188118af1634061b6a3947b81618891aeb6a3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60936,10 +62195,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60947,10 +62203,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c35968bf.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60958,10 +62211,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60969,10 +62219,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c43d97f2.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -60980,10 +62227,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -60991,10 +62235,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c4534867.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61002,10 +62243,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -61013,10 +62283,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c559f565.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61024,10 +62291,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61035,10 +62299,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c56fada76f5c198232201a608072a1a63e3d3785"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61046,10 +62307,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61057,10 +62315,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c5ff50ae447ac7a0c8fb3363b2458824d405e64c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61068,10 +62323,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61079,10 +62331,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c66e84d1.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61090,10 +62339,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61101,10 +62347,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c6a1d2cc8935808b6e317a69baec1c3cb87cac94"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61112,10 +62355,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61123,10 +62363,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c7c44b98faa21c8f0645a818a65b60d956d15952"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61134,10 +62371,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61145,10 +62379,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c8073f5f41970fab4738215e42ec97a4383855e5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61156,10 +62387,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61167,10 +62395,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c81dec02.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61178,10 +62403,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61189,10 +62411,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/c8812dc8a1ab1592a2d7b71300e1a0a5da6a6382"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61200,10 +62419,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61211,10 +62427,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/ca843c66c4c4807ccb1615b472c79bc459e5c6cb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61222,10 +62435,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61233,10 +62443,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/cbb04be69714f81f5cd09e36e8ea4e69ea73d618"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61244,10 +62451,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61255,10 +62459,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/cc97ece92b72cc2a4d045e16c0e2f2021bc014f8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61266,10 +62467,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61277,10 +62475,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/cca29902.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61288,10 +62483,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61299,10 +62491,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/cdba6c45.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61310,10 +62499,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61321,10 +62507,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-0f4b135c0242669ce425d2662168e9440f8a628d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61332,10 +62515,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61343,10 +62523,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-239cc27a23827ea53b60ccbaee0ecc64dad2bff0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61354,10 +62531,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61365,10 +62539,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-41ab0e868e84612275f77118f9e832bc94ff45c5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61376,10 +62547,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61387,10 +62555,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-7af5da2a8da23d197d9336e32da72c9ff64c15b3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61398,10 +62563,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61409,10 +62571,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-7e121dd3be057176369bea160d873040b32a03dc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61420,10 +62579,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -61431,10 +62603,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/crash-e34b0a9a428001cb4094a9ebca76329f578811a4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61442,10 +62611,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61453,10 +62619,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d0f7eebc.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61464,10 +62627,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61475,10 +62635,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d2031009d3783fcf083963fa30bb493f7f935541"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61486,10 +62643,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61497,10 +62651,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d28155c6c92642c61dfb097f7b2eb1d6ced272c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61508,10 +62659,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61519,10 +62667,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d6979f0f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61530,10 +62675,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -61541,10 +62699,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d9074e68.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61552,10 +62707,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61563,10 +62715,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d95556cac07e720909aaf2ac09d876106420463f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61574,10 +62723,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61585,10 +62731,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/d96da249094db51ea92b1413907abfd27a4f2426"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61596,10 +62739,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61607,10 +62747,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/da7e44a9.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61618,10 +62755,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61629,10 +62763,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/dab172ff.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61640,10 +62771,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -61651,10 +62795,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/db33559d4afb4c32e68525c000fde16a4c3300f5"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61662,10 +62803,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61673,10 +62811,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/dcabac1ef8b197ef39b188bcf5dc470f9749e903"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61684,10 +62819,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61695,10 +62827,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/df5d3cf5f05eab65ef9d385e263780ae73c42b19"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61706,10 +62835,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61717,10 +62843,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e0d9a9a7.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61728,10 +62851,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61739,10 +62859,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e2652fbb.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61750,10 +62867,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61761,10 +62875,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e2c954e1.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61772,10 +62883,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61783,10 +62891,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e3bab014.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61794,10 +62899,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61805,10 +62907,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e7ad0c4b7d0f289c90a3988309e9e03b78f7eea3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61816,10 +62915,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -61827,10 +62939,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e9bbe2fe47b7b9c2683e7f17f4a33625c6ffbd8c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61838,10 +62947,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61849,10 +62955,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/e9d96662.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61860,10 +62963,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61871,10 +62971,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/eb66106b.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61882,10 +62979,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61893,10 +62987,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/eba8472a.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61904,10 +62995,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61915,10 +63003,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/ed8da77f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61926,10 +63011,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -61937,10 +63035,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f0387dfdd6b8c925d958113e669ec4a1897034b4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61948,10 +63043,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61959,10 +63051,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f1121b952e75463cc71137683dc2528f9cbc19b7"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61970,10 +63059,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -61981,10 +63067,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f3220426.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -61992,10 +63075,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62003,10 +63083,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f3d084cf20b92a5f026fe7cc6e5af49bde28693d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62014,10 +63091,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62025,10 +63099,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f4024b01.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62036,10 +63107,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62047,10 +63115,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f541d27e.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62058,10 +63123,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62069,10 +63131,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f5424a9d7bd14317b6de7b15587df28bfde8362d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62080,10 +63139,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62091,10 +63147,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f5c877c4.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62102,10 +63155,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62113,10 +63163,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f5f0615030439dda162e8862b6bbd09f81f14d81"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62124,10 +63171,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62135,10 +63179,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f74b9428.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62146,10 +63187,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62157,10 +63195,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f7bf0d7bb0dd6e1866ccef9fafc3cb295db2f07f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62168,10 +63203,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62179,10 +63211,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f826100f.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62190,10 +63219,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62201,10 +63227,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f88ffb7f3066f2706cfcd9be077595e07834cc15"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62212,10 +63235,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62223,10 +63243,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/f8b46e92c7ceb4c2f2cdcb3452a6d8c58768eaa2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62234,10 +63251,23 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62245,10 +63275,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fa36b4280d9e28edd81c5e4d192d1a5c2765e5e4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62256,10 +63283,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62267,10 +63291,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fb3b0d80.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62278,10 +63299,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62289,10 +63307,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fb84edfa9e8cbddba26a7184e7fdc219bde556c0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62300,10 +63315,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62311,10 +63323,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fd14bea45ecaf13af0053900edb2f17b71a0bf09"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62322,10 +63331,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62333,10 +63339,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fd26e0a6.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62344,10 +63347,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62355,10 +63355,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fd943e69304dffebf47e1e40b0849e12abeee287"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62366,10 +63363,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62377,10 +63371,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fdf67df81857577361d319e76559c5e85a257b07"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62388,10 +63379,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62399,10 +63387,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe1957b9bc7c6bf9d8b6089c422d72a0f444da6e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62410,10 +63395,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62421,10 +63403,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe66893c.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62432,10 +63411,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62443,10 +63419,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/fe69ddfa5827dd560bb0b5d4da7d982273f17ef9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62454,10 +63427,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62465,10 +63435,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/ff227015.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62476,10 +63443,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62487,10 +63451,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/ff898c08.bin"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62498,10 +63459,103 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62509,10 +63563,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1b6c4b5c1949adae3efd5e3264bb32a40eea524e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62520,10 +63571,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62531,10 +63579,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3991c873ba814d0cd03a67d25fff0c8fe8713aca"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62542,10 +63587,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62553,10 +63627,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-58f116dfba8d428a01ca596174fca63f4ac523f0"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62564,10 +63635,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62575,10 +63643,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-59f6edc7cf4aeed49b4dc024052db4846d5d7fc8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62586,10 +63651,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62597,10 +63659,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-63ebf780ee6c2003eba622686a4bf94c503ad96e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62608,10 +63667,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62619,10 +63707,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6e980a9d12c392175b5f66683e608626ae983276"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62630,10 +63715,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62641,10 +63723,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7233d53f94386b0339b2c2b01ef2d348f5862f1f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62652,10 +63731,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62663,10 +63739,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7281d9eaed0d20b0b6b5e7709c57e78fefe9c315"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62674,10 +63747,55 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62685,10 +63803,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62696,10 +63811,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62707,10 +63819,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9de2e92150e54982d4e502b18f374f8cd8fd453b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62718,10 +63827,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62729,10 +63835,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a61a28cf78149518466b87e5463ec5c771dc504e"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62740,10 +63843,7 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62751,10 +63851,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-aa23c18f6badd88a7bec65e8b04f7801ba624ec6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62762,10 +63859,87 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62773,10 +63947,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-bda43d420a3e5d5228a5f5130207a1f11fc1c81f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62784,10 +63955,71 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62795,10 +64027,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3c3cba3897fafec97665411ea1f94a89bb4de7b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62806,10 +64035,39 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62817,10 +64075,7 @@
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ddfe613d8791b2d377e14fbdffb18b84a89d49b6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62828,10 +64083,55 @@
"language": "c",
"name": "server_fuzzer_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
+ ]
+ },
+ {
+ "args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "linux"
]
},
{
@@ -62839,10 +64139,7 @@
"test/core/client_config/uri_corpus/02d156dc5e6f2c11c90c2e06fcee04adf036a342"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62850,10 +64147,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62861,10 +64155,7 @@
"test/core/client_config/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62872,10 +64163,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62883,10 +64171,7 @@
"test/core/client_config/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62894,10 +64179,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62905,10 +64187,7 @@
"test/core/client_config/uri_corpus/1155aa6ea7ef262a81a63692513ea395f84dad6f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62916,10 +64195,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62927,10 +64203,7 @@
"test/core/client_config/uri_corpus/13856a5569ffd085a4d5c07af5f8e9310835a118"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62938,10 +64211,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62949,10 +64219,7 @@
"test/core/client_config/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62960,10 +64227,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62971,10 +64235,7 @@
"test/core/client_config/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -62982,10 +64243,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -62993,10 +64251,7 @@
"test/core/client_config/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63004,10 +64259,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63015,10 +64267,7 @@
"test/core/client_config/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63026,10 +64275,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63037,10 +64283,7 @@
"test/core/client_config/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63048,10 +64291,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63059,10 +64299,7 @@
"test/core/client_config/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63070,10 +64307,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63081,10 +64315,7 @@
"test/core/client_config/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63092,10 +64323,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63103,10 +64331,7 @@
"test/core/client_config/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63114,10 +64339,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63125,10 +64347,7 @@
"test/core/client_config/uri_corpus/396568fc41c8ccb31ec925b4a862e4d29ead1327"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63136,10 +64355,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63147,10 +64363,7 @@
"test/core/client_config/uri_corpus/3b1e7526a99918006b87e499d2beb6c4ac9c3c0c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63158,10 +64371,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63169,10 +64379,7 @@
"test/core/client_config/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63180,10 +64387,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63191,10 +64395,7 @@
"test/core/client_config/uri_corpus/41963cc10752f70c3af7e3d85868efb097a0ea9c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63202,10 +64403,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63213,10 +64411,7 @@
"test/core/client_config/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63224,10 +64419,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63235,10 +64427,7 @@
"test/core/client_config/uri_corpus/56a2da4b2e6fb795243901023ed8d0aa083d1aab"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63246,10 +64435,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63257,10 +64443,7 @@
"test/core/client_config/uri_corpus/574c2f13858a9a6d724654bd913ede9ae3abf822"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63268,10 +64451,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63279,10 +64459,7 @@
"test/core/client_config/uri_corpus/582f789c19033a152094cbf8565f14154a778ddb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63290,10 +64467,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63301,10 +64475,7 @@
"test/core/client_config/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63312,10 +64483,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63323,10 +64491,7 @@
"test/core/client_config/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63334,10 +64499,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63345,10 +64507,7 @@
"test/core/client_config/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63356,10 +64515,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63367,10 +64523,7 @@
"test/core/client_config/uri_corpus/6ae3acd9d8507b61bf235748026080a4138dba58"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63378,10 +64531,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63389,10 +64539,7 @@
"test/core/client_config/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63400,10 +64547,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63411,10 +64555,7 @@
"test/core/client_config/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63422,10 +64563,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63433,10 +64571,7 @@
"test/core/client_config/uri_corpus/7ff4d8b8d1ffd0d42c48bbb91e5856a9ec31aecb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63444,10 +64579,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63455,10 +64587,7 @@
"test/core/client_config/uri_corpus/87daa131e0973b77a232a870ed749ef29cf58e6d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63466,10 +64595,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63477,10 +64603,7 @@
"test/core/client_config/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63488,10 +64611,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63499,10 +64619,7 @@
"test/core/client_config/uri_corpus/8d7e944fd5d0ede94097fcc98b47b09a3f9c76cb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63510,10 +64627,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63521,10 +64635,7 @@
"test/core/client_config/uri_corpus/9671149af0b444f59bbdf71340d3441dadd8a7b4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63532,10 +64643,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63543,10 +64651,7 @@
"test/core/client_config/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63554,10 +64659,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63565,10 +64667,7 @@
"test/core/client_config/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63576,10 +64675,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63587,10 +64683,7 @@
"test/core/client_config/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63598,10 +64691,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63609,10 +64699,7 @@
"test/core/client_config/uri_corpus/a1140f3f8b5cffc1010221b9a4084a25fb75c1f6"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63620,10 +64707,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63631,10 +64715,7 @@
"test/core/client_config/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63642,10 +64723,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63653,10 +64731,7 @@
"test/core/client_config/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63664,10 +64739,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63675,10 +64747,7 @@
"test/core/client_config/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63686,10 +64755,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63697,10 +64763,7 @@
"test/core/client_config/uri_corpus/aba1472880406a318ce207ee79815b7acf087757"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63708,10 +64771,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63719,10 +64779,7 @@
"test/core/client_config/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63730,10 +64787,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63741,10 +64795,7 @@
"test/core/client_config/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63752,10 +64803,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63763,10 +64811,7 @@
"test/core/client_config/uri_corpus/c28a47409cf5d95bb372238d01e73d8b831408e4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63774,10 +64819,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63785,10 +64827,7 @@
"test/core/client_config/uri_corpus/c3ef1d41888063a08700c3add1e4465aabcf8807"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63796,10 +64835,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63807,10 +64843,7 @@
"test/core/client_config/uri_corpus/c550a76af21f9b9cc92a386d5c8998b26f8f2e4d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63818,10 +64851,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63829,10 +64859,7 @@
"test/core/client_config/uri_corpus/c79721406d0ab80495f186fd88e37fba98637ae9"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63840,10 +64867,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63851,10 +64875,7 @@
"test/core/client_config/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63862,10 +64883,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63873,10 +64891,7 @@
"test/core/client_config/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63884,10 +64899,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63895,10 +64907,7 @@
"test/core/client_config/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63906,10 +64915,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63917,10 +64923,7 @@
"test/core/client_config/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63928,10 +64931,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63939,10 +64939,7 @@
"test/core/client_config/uri_corpus/dns.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63950,10 +64947,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63961,10 +64955,7 @@
"test/core/client_config/uri_corpus/e241f29957b0e30ec11aaaf91b2339f7015fa5fd"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63972,10 +64963,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -63983,10 +64971,7 @@
"test/core/client_config/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -63994,10 +64979,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64005,10 +64987,7 @@
"test/core/client_config/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64016,10 +64995,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64027,10 +65003,7 @@
"test/core/client_config/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64038,10 +65011,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64049,10 +65019,7 @@
"test/core/client_config/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64060,10 +65027,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64071,10 +65035,7 @@
"test/core/client_config/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64082,10 +65043,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64093,10 +65051,7 @@
"test/core/client_config/uri_corpus/f97598cff03306af3c70400608fec47268b5075d"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64104,10 +65059,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64115,10 +65067,7 @@
"test/core/client_config/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64126,10 +65075,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64137,10 +65083,7 @@
"test/core/client_config/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64148,10 +65091,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64159,10 +65099,7 @@
"test/core/client_config/uri_corpus/ipv4.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64170,10 +65107,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64181,10 +65115,7 @@
"test/core/client_config/uri_corpus/ipv6.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64192,10 +65123,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
},
{
@@ -64203,10 +65131,7 @@
"test/core/client_config/uri_corpus/unix.txt"
],
"ci_platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
],
"cpu_cost": 0.1,
"exclude_configs": [],
@@ -64214,10 +65139,7 @@
"language": "c",
"name": "uri_fuzzer_test_one_entry",
"platforms": [
- "linux",
- "mac",
- "windows",
- "posix"
+ "linux"
]
}
]
diff --git a/tox.ini b/tox.ini
index a655935219..66b74a32db 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
# GRPC Python tox (test environment) settings
[tox]
skipsdist = true
-envlist = py27
+envlist = py27,py34
[testenv]
setenv =
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index bdae447545..be8b5d40ac 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -1095,6 +1095,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "initial_settings_frame_bad_
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "large_metadata_bad_client_test", "vcxproj\test\large_metadata_bad_client_test\large_metadata_bad_client_test.vcxproj", "{B706A9EC-7982-0DBC-495D-07B165F6CF56}"
+ ProjectSection(myProperties) = preProject
+ lib = "False"
+ EndProjectSection
+ ProjectSection(ProjectDependencies) = postProject
+ {BA67B418-B699-E41A-9CC4-0279C49481A5} = {BA67B418-B699-E41A-9CC4-0279C49481A5}
+ {0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF} = {0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}
+ {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
+ {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server_registered_method_bad_client_test", "vcxproj\test\server_registered_method_bad_client_test\server_registered_method_bad_client_test.vcxproj", "{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}"
ProjectSection(myProperties) = preProject
lib = "False"
@@ -3087,6 +3099,22 @@ Global
{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|Win32.Build.0 = Release|Win32
{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|x64.ActiveCfg = Release|x64
{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|x64.Build.0 = Release|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|x64.ActiveCfg = Debug|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|Win32.ActiveCfg = Release|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|x64.ActiveCfg = Release|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|Win32.Build.0 = Debug|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|x64.Build.0 = Debug|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|Win32.Build.0 = Release|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|x64.Build.0 = Release|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|Win32.Build.0 = Debug|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|x64.ActiveCfg = Debug|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|x64.Build.0 = Debug|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|Win32.ActiveCfg = Release|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|Win32.Build.0 = Release|Win32
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|x64.ActiveCfg = Release|x64
+ {B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|x64.Build.0 = Release|x64
{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}.Debug|Win32.ActiveCfg = Debug|Win32
{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}.Debug|x64.ActiveCfg = Debug|x64
{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/grpc_protoc_plugins.sln b/vsprojects/grpc_protoc_plugins.sln
index ef1cbb8e57..ace295daea 100644
--- a/vsprojects/grpc_protoc_plugins.sln
+++ b/vsprojects/grpc_protoc_plugins.sln
@@ -24,6 +24,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_plugin", "vcxpr
{B6E81D84-2ACB-41B8-8781-493A944C7817} = {B6E81D84-2ACB-41B8-8781-493A944C7817}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_node_plugin", "vcxproj\.\grpc_node_plugin\grpc_node_plugin.vcxproj", "{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}"
+ ProjectSection(myProperties) = preProject
+ lib = "False"
+ EndProjectSection
+ ProjectSection(ProjectDependencies) = postProject
+ {B6E81D84-2ACB-41B8-8781-493A944C7817} = {B6E81D84-2ACB-41B8-8781-493A944C7817}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_objective_c_plugin", "vcxproj\.\grpc_objective_c_plugin\grpc_objective_c_plugin.vcxproj", "{19564640-CEE6-4921-ABA5-676ED79A36F6}"
ProjectSection(myProperties) = preProject
lib = "False"
@@ -80,6 +88,14 @@ Global
{3C813052-A49A-4662-B90A-1ADBEC7EE453}.Debug|x64.Build.0 = Debug|x64
{3C813052-A49A-4662-B90A-1ADBEC7EE453}.Release|Win32.Build.0 = Release|Win32
{3C813052-A49A-4662-B90A-1ADBEC7EE453}.Release|x64.Build.0 = Release|x64
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|Win32.ActiveCfg = Debug|Win32
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|x64.ActiveCfg = Debug|x64
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|Win32.ActiveCfg = Release|Win32
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|x64.ActiveCfg = Release|x64
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|Win32.Build.0 = Debug|Win32
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|x64.Build.0 = Debug|x64
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|Win32.Build.0 = Release|Win32
+ {57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|x64.Build.0 = Release|x64
{19564640-CEE6-4921-ABA5-676ED79A36F6}.Debug|Win32.ActiveCfg = Debug|Win32
{19564640-CEE6-4921-ABA5-676ED79A36F6}.Debug|x64.ActiveCfg = Debug|x64
{19564640-CEE6-4921-ABA5-676ED79A36F6}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj b/vsprojects/vcxproj/gpr/gpr.vcxproj
index cdb128e48e..26195bb541 100644
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj
@@ -259,6 +259,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_posix.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_util_win32.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_win32.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\subprocess_posix.c">
@@ -287,6 +289,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tls_pthread.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_msys.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_posix.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_win32.c">
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
index 8af6fdd44c..be15391b09 100644
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
@@ -82,6 +82,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_posix.c">
<Filter>src\core\lib\support</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_util_win32.c">
+ <Filter>src\core\lib\support</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_win32.c">
<Filter>src\core\lib\support</Filter>
</ClCompile>
@@ -124,6 +127,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tls_pthread.c">
<Filter>src\core\lib\support</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_msys.c">
+ <Filter>src\core\lib\support</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_posix.c">
<Filter>src\core\lib\support</Filter>
</ClCompile>
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 29cab37d52..0ec53acf65 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -331,6 +331,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index 15e2807fd4..491aeaeb67 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -315,6 +315,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+ <Filter>include\grpc\impl\codegen</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index fcda361ef1..96bee4101c 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -331,6 +331,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 1dc95f985a..fe9eed781c 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -300,6 +300,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+ <Filter>include\grpc\impl\codegen</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 26109c7102..6a2843e37c 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -273,6 +273,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 8d7072b04a..7d53be719c 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -516,6 +516,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+ <Filter>include\grpc\impl\codegen</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj
new file mode 100644
index 0000000000..faf93fd136
--- /dev/null
+++ b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}</ProjectGuid>
+ <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+ <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\protobuf.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\protoc.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+ <TargetName>grpc_node_plugin</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'">
+ <TargetName>grpc_node_plugin</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\src\compiler\node_plugin.cc">
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_plugin_support\grpc_plugin_support.vcxproj">
+ <Project>{B6E81D84-2ACB-41B8-8781-493A944C7817}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters
new file mode 100644
index 0000000000..28b197f6f3
--- /dev/null
+++ b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\src\compiler\node_plugin.cc">
+ <Filter>src\compiler</Filter>
+ </ClCompile>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Filter Include="src">
+ <UniqueIdentifier>{089d5d6b-d438-dc98-b30f-bd608e3bbb78}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\compiler">
+ <UniqueIdentifier>{1cc34440-c001-7578-c4d3-78f5d98fb602}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project>
+
diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
index 4c80226cba..a81d31768d 100644
--- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
+++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
@@ -160,6 +160,8 @@
<ClInclude Include="$(SolutionDir)\..\src\compiler\csharp_generator.h" />
<ClInclude Include="$(SolutionDir)\..\src\compiler\csharp_generator_helpers.h" />
<ClInclude Include="$(SolutionDir)\..\src\compiler\generator_helpers.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator.h" />
+ <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator_helpers.h" />
<ClInclude Include="$(SolutionDir)\..\src\compiler\objective_c_generator.h" />
<ClInclude Include="$(SolutionDir)\..\src\compiler\objective_c_generator_helpers.h" />
<ClInclude Include="$(SolutionDir)\..\src\compiler\python_generator.h" />
@@ -173,6 +175,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\compiler\csharp_generator.cc">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\compiler\node_generator.cc">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\compiler\objective_c_generator.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\compiler\python_generator.cc">
diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
index fc125d911e..b3d2dc2f3d 100644
--- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
@@ -7,6 +7,9 @@
<ClCompile Include="$(SolutionDir)\..\src\compiler\csharp_generator.cc">
<Filter>src\compiler</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\src\compiler\node_generator.cc">
+ <Filter>src\compiler</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\compiler\objective_c_generator.cc">
<Filter>src\compiler</Filter>
</ClCompile>
@@ -50,6 +53,12 @@
<ClInclude Include="$(SolutionDir)\..\src\compiler\generator_helpers.h">
<Filter>src\compiler</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator.h">
+ <Filter>src\compiler</Filter>
+ </ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator_helpers.h">
+ <Filter>src\compiler</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\compiler\objective_c_generator.h">
<Filter>src\compiler</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
index 79e00e78ff..f0a8f7b6b9 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
@@ -156,6 +156,7 @@
<ClInclude Include="$(SolutionDir)\..\test\core\util\memory_counters.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\mock_endpoint.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h" />
+ <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\port.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\port_server_client.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\slice_splitter.h" />
@@ -185,6 +186,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\port_server_client.c">
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
index e7c64c44f4..a1d31eb54e 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
@@ -37,6 +37,9 @@
<ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
<Filter>test\core\util</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+ <Filter>test\core\util</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
<Filter>test\core\util</Filter>
</ClCompile>
@@ -78,6 +81,9 @@
<ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h">
<Filter>test\core\util</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h">
+ <Filter>test\core\util</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\test\core\util\port.h">
<Filter>test\core\util</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
index 336825353c..33860c48a4 100644
--- a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
@@ -154,6 +154,7 @@
<ClInclude Include="$(SolutionDir)\..\test\core\util\memory_counters.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\mock_endpoint.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h" />
+ <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\port.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\port_server_client.h" />
<ClInclude Include="$(SolutionDir)\..\test\core\util\slice_splitter.h" />
@@ -173,6 +174,8 @@
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\port_server_client.c">
diff --git a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters
index 5c2b961b67..372bb2af67 100644
--- a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters
@@ -22,6 +22,9 @@
<ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
<Filter>test\core\util</Filter>
</ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+ <Filter>test\core\util</Filter>
+ </ClCompile>
<ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
<Filter>test\core\util</Filter>
</ClCompile>
@@ -57,6 +60,9 @@
<ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h">
<Filter>test\core\util</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h">
+ <Filter>test\core\util</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\test\core\util\port.h">
<Filter>test\core\util</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 31ab8f4ba4..fbf26a29f3 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -264,6 +264,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 869d92c738..2500d5c106 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -456,6 +456,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+ <Filter>include\grpc\impl\codegen</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj
index cd0b40c873..34e939cf84 100644
--- a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj
+++ b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj
@@ -191,6 +191,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters
index 029b8ef774..d66236580c 100644
--- a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters
+++ b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters
@@ -120,6 +120,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+ <Filter>include\grpc\impl\codegen</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj
index 6d138fae1c..890d77df22 100644
--- a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj
+++ b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj
@@ -191,6 +191,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters
index dc3f0b2d04..4e0ba656fc 100644
--- a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters
+++ b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters
@@ -120,6 +120,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
+ <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+ <Filter>include\grpc\impl\codegen</Filter>
+ </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
<Filter>include\grpc\impl\codegen</Filter>
</ClInclude>
diff --git a/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj
new file mode 100644
index 0000000000..e9802773d8
--- /dev/null
+++ b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0ECDE365-D634-4E15-099F-40A38E151C65}</ProjectGuid>
+ <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+ <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(SolutionDir)\..\vsprojects\cpptest.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\protobuf.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+ <TargetName>golden_file_test</TargetName>
+ <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+ <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+ <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+ <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'">
+ <TargetName>golden_file_test</TargetName>
+ <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+ <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
+ <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+ <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.pb.cc">
+ </ClCompile>
+ <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.pb.h">
+ </ClInclude>
+ <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.grpc.pb.cc">
+ </ClCompile>
+ <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.grpc.pb.h">
+ </ClInclude>
+ <ClCompile Include="$(SolutionDir)\..\test\cpp\codegen\golden_file_test.cc">
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+ <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+ <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+ <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+ </ImportGroup>
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+ </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters
new file mode 100644
index 0000000000..c329e4da5c
--- /dev/null
+++ b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.proto">
+ <Filter>src\proto\grpc\testing</Filter>
+ </ClCompile>
+ <ClCompile Include="$(SolutionDir)\..\test\cpp\codegen\golden_file_test.cc">
+ <Filter>test\cpp\codegen</Filter>
+ </ClCompile>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Filter Include="src">
+ <UniqueIdentifier>{cd916cf8-bce0-7051-b6d4-e1cd0bf3894c}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\proto">
+ <UniqueIdentifier>{a2d414fe-b561-a38e-58a9-40d8bc68a107}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\proto\grpc">
+ <UniqueIdentifier>{edbc155a-ceb8-62b4-2b73-37228e5fa736}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="src\proto\grpc\testing">
+ <UniqueIdentifier>{761a3503-8934-4ee6-8bf1-77ba1385baa7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="test">
+ <UniqueIdentifier>{4f08cfc5-a59d-7cb4-9ef5-a603b2025936}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="test\cpp">
+ <UniqueIdentifier>{af281cac-e23b-109b-8e63-c7cff85c81f4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="test\cpp\codegen">
+ <UniqueIdentifier>{e105f656-566f-3d70-fbe5-e03fee8e612d}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj
new file mode 100644
index 0000000000..0a14694b75
--- /dev/null
+++ b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B706A9EC-7982-0DBC-495D-07B165F6CF56}</ProjectGuid>
+ <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+ <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+ <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+ <TargetName>large_metadata_bad_client_test</TargetName>
+ <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+ <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+ <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+ <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)'=='Release'">
+ <TargetName>large_metadata_bad_client_test</TargetName>
+ <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+ <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
+ <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+ <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+ <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+ <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ </ItemDefinitionGroup>
+
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\test\core\bad_client\tests\large_metadata.c">
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\test/bad_client\bad_client_test\bad_client_test.vcxproj">
+ <Project>{BA67B418-B699-E41A-9CC4-0279C49481A5}</Project>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util_unsecure\grpc_test_util_unsecure.vcxproj">
+ <Project>{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}</Project>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
+ <Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+ <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+ </ProjectReference>
+ <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+ <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+ <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+ </ImportGroup>
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+ <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+ </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters
new file mode 100644
index 0000000000..5eb9a5e7cb
--- /dev/null
+++ b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(SolutionDir)\..\test\core\bad_client\tests\large_metadata.c">
+ <Filter>test\core\bad_client\tests</Filter>
+ </ClCompile>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Filter Include="test">
+ <UniqueIdentifier>{6c1eb0cb-9d82-f961-7220-1f6edc913666}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="test\core">
+ <UniqueIdentifier>{79d5006f-93a1-aa0e-2568-37aa63eef567}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="test\core\bad_client">
+ <UniqueIdentifier>{dbde5995-24a0-2332-4bee-0540ed3aa848}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="test\core\bad_client\tests">
+ <UniqueIdentifier>{5cf4a13f-ae24-fd98-eb59-b5301f30367c}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+</Project>
+