From 4674f2ccf7f53b7a9b8db130b6194955e244c41e Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Thu, 11 May 2023 08:22:34 -0700 Subject: [PATCH] [fuzz] Turn core end2end tests into fuzzers (#33013) Add a new binary that runs all core end2end tests in fuzzing mode. In this mode FuzzingEventEngine is substituted for the default event engine. This means that time is simulated, as is IO. The FEE gets control of callback delays also. In our tests the `Step()` function becomes, instead of a single call to `completion_queue_next`, a series of calls to that function and `FuzzingEventEngine::Tick`, driving forward the event loop until progress can be made. PR guide: --- **New binaries** `core_end2end_test_fuzzer` - the new fuzzer itself `seed_end2end_corpus` - a tool that produces an interesting seed corpus **Config changes for safe fuzzing** The implementation tries to use the config fuzzing work we've previously deployed in api_fuzzer to fuzz across experiments. Since some experiments are far too experimental to be safe in such fuzzing (and this will always be the case): - a new flag is added to experiments to opt-out of this fuzzing - a new hook is added to the config system to allow variables to re-write their inputs before setting them during the fuzz **Event manager/IO changes** Changes are made to the event engine shims so that tcp_server_posix can run with a non-FD carrying EventEngine. These are in my mind a bit clunky, but they work and they're in code that we expect to delete in the medium term, so I think overall the approach is good. **Changes to time** A small tweak is made to fix a bug initializing time for fuzzers in time.cc - we were previously failing to initialize `g_process_epoch_cycles` **Changes to `Crash`** A version that prints to stdio is added so that we can reliably print a crash from the fuzzer. **Changes to CqVerifier** Hooks are added to allow the top level loop to hook the verification functions with a function that steps time between CQ polls. **Changes to end2end fixtures** State machinery moves from the fixture to the test infra, to keep the customizations for fuzzing or not in one place. This means that fixtures are now just client/server factories, which is overall nice. It did necessitate moving some bespoke machinery into h2_ssl_cert_test.cc - this file is beginning to be problematic in borrowing parts but not all of the e2e test machinery. Some future PR needs to solve this. A cq arg is added to the Make functions since the cq is now owned by the test and not the fixture. **Changes to test registration** `TEST_P` is replaced by `CORE_END2END_TEST` and our own test registry is used as a first depot for test information. The gtest version of these tests: queries that registry to manually register tests with gtest. This ultimately changes the name of our tests again (I think for the last time) - the new names are shorter and more readable, so I don't count this as a regression. The fuzzer version of these tests: constructs a database of fuzzable tests that it can consult to look up a particular suite/test/config combination specified by the fuzzer to fuzz against. This gives us a single fuzzer that can test all 3k-ish fuzzing ready tests and cross polinate configuration between them. **Changes to test config** The zero size registry stuff was causing some problems with the event engine feature macros, so instead I've removed those and used GTEST_SKIP in the problematic tests. I think that's the approach we move towards in the future. **Which tests are included** Configs that are compatible - those that do not do fd manipulation directly (these are incompatible with FuzzingEventEngine), and those that do not join threads on their shutdown path (as these are incompatible with our cq wait methodology). Each we can talk about in the future - fd manipulation would be a significant expansion of FuzzingEventEngine, and is probably not worth it, however many uses of background threads now should probably evolve to be EventEngine::Run calls in the future, and then would be trivially enabled in the fuzzers. Some tests currently fail in the fuzzing environment, a `SKIP_IF_FUZZING` macro is used for these few to disable them if in the fuzzing environment. We'll burn these down in the future. **Changes to fuzzing_event_engine** Changes are made to time: an exponential sweep forward is used now - this catches small time precision things early, but makes decade long timers (we have them) able to be used right now. In the future we'll just skip time forward to the next scheduled timer, but that approach doesn't yet work due to legacy timer system interactions. Changes to port assignment: we ensure that ports are legal numbers before assigning them via `grpc_pick_port_or_die`. A race condition between time checking and io is fixed. --------- Co-authored-by: ctiller --- CMakeLists.txt | 40 + build_autogenerated.yaml | 12 + src/core/lib/config/config_vars.yaml | 6 +- src/core/lib/event_engine/shim.cc | 8 +- src/core/lib/experiments/config.h | 1 + src/core/lib/experiments/experiments.cc | 37 +- src/core/lib/experiments/experiments.yaml | 5 + src/core/lib/gprpp/crash.cc | 10 + src/core/lib/gprpp/crash.h | 3 + src/core/lib/gprpp/time.cc | 1 + src/core/lib/iomgr/tcp_server_posix.cc | 255 ++-- src/core/lib/iomgr/tcp_server_utils_posix.h | 2 +- src/core/lib/promise/sleep.cc | 3 +- test/core/end2end/BUILD | 357 ++++-- test/core/end2end/cq_verifier.cc | 28 +- test/core/end2end/cq_verifier.h | 13 +- ...ride_Chttp2FakeSecurityFullstack.textproto | 6 + ...CallHostOverride_Chttp2Fullstack.textproto | 6 + ...rride_Chttp2FullstackCompression.textproto | 6 + ...tOverride_Chttp2FullstackNoRetry.textproto | 6 + ...erride_Chttp2FullstackWithCensus.textproto | 6 + ...erride_Chttp2InsecureCredentials.textproto | 6 + ...ide_Chttp2SimplSslFullstackTls12.textproto | 6 + ...ide_Chttp2SimplSslFullstackTls13.textproto | 6 + ...verride_Chttp2SimpleSslFullstack.textproto | 6 + ...impleSslWithOauth2FullstackTls12.textproto | 6 + ...impleSslWithOauth2FullstackTls13.textproto | 6 + ...verride_Chttp2SslCredReloadTls12.textproto | 6 + ...verride_Chttp2SslCredReloadTls13.textproto | 6 + ...nfig_Chttp2FakeSecurityFullstack.textproto | 6 + ...nfig_Chttp2FakeSecurityFullstack.textproto | 6 + ...Host_Chttp2FakeSecurityFullstack.textproto | 6 + ...rver_Chttp2FakeSecurityFullstack.textproto | 6 + ...hort_Chttp2FakeSecurityFullstack.textproto | 3 + ...ails_Chttp2FakeSecurityFullstack.textproto | 3 + ...cept_Chttp2FakeSecurityFullstack.textproto | 3 + ...eTest_DeadlineAfterAccept_Inproc.textproto | 3 + ...Done_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke3_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke4_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke5_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke6_Chttp2FakeSecurityFullstack.textproto | 3 + ...Trip_Chttp2FakeSecurityFullstack.textproto | 3 + ...cuum_Chttp2FakeSecurityFullstack.textproto | 3 + ...line_Chttp2FakeSecurityFullstack.textproto | 3 + ...data_Chttp2FakeSecurityFullstack.textproto | 3 + ...ient_Chttp2FakeSecurityFullstack.textproto | 3 + ...ient_Chttp2FakeSecurityFullstack.textproto | 3 + ...data_Chttp2FakeSecurityFullstack.textproto | 3 + ...sage_Chttp2FakeSecurityFullstack.textproto | 3 + ...back_Chttp2FakeSecurityFullstack.textproto | 3 + ...nary_Chttp2FakeSecurityFullstack.textproto | 3 + ...back_Chttp2FakeSecurityFullstack.textproto | 3 + ...nary_Chttp2FakeSecurityFullstack.textproto | 3 + ...cept_Chttp2FakeSecurityFullstack.textproto | 3 + ...Done_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke3_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke4_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke5_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke6_Chttp2FakeSecurityFullstack.textproto | 3 + ...Trip_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke1_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke2_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke3_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke4_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke5_Chttp2FakeSecurityFullstack.textproto | 3 + ...oke6_Chttp2FakeSecurityFullstack.textproto | 3 + ...cuum_Chttp2FakeSecurityFullstack.textproto | 3 + ...tus1_Chttp2FakeSecurityFullstack.textproto | 3 + ...tus2_Chttp2FakeSecurityFullstack.textproto | 3 + ...tus3_Chttp2FakeSecurityFullstack.textproto | 3 + ...tus4_Chttp2FakeSecurityFullstack.textproto | 3 + ...bled_Chttp2FakeSecurityFullstack.textproto | 3 + ...race_Chttp2FakeSecurityFullstack.textproto | 3 + ...nelz_Chttp2FakeSecurityFullstack.textproto | 3 + ...ails_Chttp2FakeSecurityFullstack.textproto | 3 + ...ing0_Chttp2FakeSecurityFullstack.textproto | 3 + ...ng10_Chttp2FakeSecurityFullstack.textproto | 3 + ...ing1_Chttp2FakeSecurityFullstack.textproto | 3 + ...ng30_Chttp2FakeSecurityFullstack.textproto | 3 + ...ing3_Chttp2FakeSecurityFullstack.textproto | 3 + ...ered_Chttp2FakeSecurityFullstack.textproto | 3 + ...alls_Chttp2FakeSecurityFullstack.textproto | 3 + ...atch_Chttp2FakeSecurityFullstack.textproto | 3 + ...lose_Chttp2FakeSecurityFullstack.textproto | 3 + ...text_Chttp2FakeSecurityFullstack.textproto | 3 + ...alls_Chttp2FakeSecurityFullstack.textproto | 3 + ...Call_Chttp2FakeSecurityFullstack.textproto | 3 + ...lArg_Chttp2FakeSecurityFullstack.textproto | 3 + ...alue_Chttp2FakeSecurityFullstack.textproto | 3 + ...alue_Chttp2FakeSecurityFullstack.textproto | 3 + ...lArg_Chttp2FakeSecurityFullstack.textproto | 3 + ...alue_Chttp2FakeSecurityFullstack.textproto | 3 + ...alue_Chttp2FakeSecurityFullstack.textproto | 3 + ...lArg_Chttp2FakeSecurityFullstack.textproto | 3 + ...lArg_Chttp2FakeSecurityFullstack.textproto | 3 + ...NoOp_Chttp2FakeSecurityFullstack.textproto | 3 + ...ng10_Chttp2FakeSecurityFullstack.textproto | 3 + ...ing1_Chttp2FakeSecurityFullstack.textproto | 3 + ...ng30_Chttp2FakeSecurityFullstack.textproto | 3 + ...ing3_Chttp2FakeSecurityFullstack.textproto | 3 + ...load_Chttp2FakeSecurityFullstack.textproto | 3 + ...ails_Chttp2FakeSecurityFullstack.textproto | 3 + ...uest_Chttp2FakeSecurityFullstack.textproto | 3 + ...Tags_Chttp2FakeSecurityFullstack.textproto | 3 + ...data_Chttp2FakeSecurityFullstack.textproto | 3 + ...st10_Chttp2FakeSecurityFullstack.textproto | 3 + ...uest_Chttp2FakeSecurityFullstack.textproto | 3 + ...tely_Chttp2FakeSecurityFullstack.textproto | 3 + ...arly_Chttp2FakeSecurityFullstack.textproto | 3 + ...onse_Chttp2FakeSecurityFullstack.textproto | 3 + ...data_Chttp2FakeSecurityFullstack.textproto | 3 + ...sage_Chttp2FakeSecurityFullstack.textproto | 3 + ...sage_Chttp2FakeSecurityFullstack.textproto | 3 + ...sage_Chttp2FakeSecurityFullstack.textproto | 3 + ...sage_Chttp2FakeSecurityFullstack.textproto | 3 + ...imes_Chttp2FakeSecurityFullstack.textproto | 3 + ...load_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...ode0_Chttp2FakeSecurityFullstack.textproto | 3 + ...1000_Chttp2FakeSecurityFullstack.textproto | 3 + ...e100_Chttp2FakeSecurityFullstack.textproto | 3 + ...2768_Chttp2FakeSecurityFullstack.textproto | 3 + ...4096_Chttp2FakeSecurityFullstack.textproto | 3 + ...4304_Chttp2FakeSecurityFullstack.textproto | 3 + ...ode0_Chttp2FakeSecurityFullstack.textproto | 3 + ...1000_Chttp2FakeSecurityFullstack.textproto | 3 + ...e100_Chttp2FakeSecurityFullstack.textproto | 3 + ...2768_Chttp2FakeSecurityFullstack.textproto | 3 + ...4096_Chttp2FakeSecurityFullstack.textproto | 3 + ...4304_Chttp2FakeSecurityFullstack.textproto | 3 + ...ode0_Chttp2FakeSecurityFullstack.textproto | 3 + ...1000_Chttp2FakeSecurityFullstack.textproto | 3 + ...e100_Chttp2FakeSecurityFullstack.textproto | 3 + ...2768_Chttp2FakeSecurityFullstack.textproto | 3 + ...4096_Chttp2FakeSecurityFullstack.textproto | 3 + ...4304_Chttp2FakeSecurityFullstack.textproto | 3 + ...ode0_Chttp2FakeSecurityFullstack.textproto | 3 + ...1000_Chttp2FakeSecurityFullstack.textproto | 3 + ...e100_Chttp2FakeSecurityFullstack.textproto | 3 + ...2768_Chttp2FakeSecurityFullstack.textproto | 3 + ...4096_Chttp2FakeSecurityFullstack.textproto | 3 + ...4304_Chttp2FakeSecurityFullstack.textproto | 3 + ...ode0_Chttp2FakeSecurityFullstack.textproto | 3 + ...1000_Chttp2FakeSecurityFullstack.textproto | 3 + ...e100_Chttp2FakeSecurityFullstack.textproto | 3 + ...2768_Chttp2FakeSecurityFullstack.textproto | 3 + ...4096_Chttp2FakeSecurityFullstack.textproto | 3 + ...4304_Chttp2FakeSecurityFullstack.textproto | 3 + ...ode0_Chttp2FakeSecurityFullstack.textproto | 3 + ...1000_Chttp2FakeSecurityFullstack.textproto | 3 + ...e100_Chttp2FakeSecurityFullstack.textproto | 3 + ...2768_Chttp2FakeSecurityFullstack.textproto | 3 + ...4096_Chttp2FakeSecurityFullstack.textproto | 3 + ...4304_Chttp2FakeSecurityFullstack.textproto | 3 + ...uest_Chttp2FakeSecurityFullstack.textproto | 3 + ...eout_Chttp2FakeSecurityFullstack.textproto | 3 + ...irst_Chttp2FakeSecurityFullstack.textproto | 3 + ...cond_Chttp2FakeSecurityFullstack.textproto | 3 + ...eams_Chttp2FakeSecurityFullstack.textproto | 3 + ...live_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...imit_Chttp2FakeSecurityFullstack.textproto | 3 + ...mits_Chttp2FakeSecurityFullstack.textproto | 3 + ...Hard_Chttp2FakeSecurityFullstack.textproto | 3 + ...Soft_Chttp2FakeSecurityFullstack.textproto | 3 + ...imit_Chttp2FakeSecurityFullstack.textproto | 3 + ...Soft_Chttp2FakeSecurityFullstack.textproto | 3 + ...Hard_Chttp2FakeSecurityFullstack.textproto | 3 + ...imit_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...nApp_Chttp2FakeSecurityFullstack.textproto | 3 + ...Core_Chttp2FakeSecurityFullstack.textproto | 3 + ...down_Chttp2FakeSecurityFullstack.textproto | 3 + ...eqno_Chttp2FakeSecurityFullstack.textproto | 3 + ...lose_Chttp2FakeSecurityFullstack.textproto | 3 + ...lose_Chttp2FakeSecurityFullstack.textproto | 3 + ...sion_Chttp2FakeSecurityFullstack.textproto | 3 + ...sion_Chttp2FakeSecurityFullstack.textproto | 3 + ...ages_Chttp2FakeSecurityFullstack.textproto | 3 + ...ream_Chttp2FakeSecurityFullstack.textproto | 3 + ...ming_Chttp2FakeSecurityFullstack.textproto | 3 + ...Test_Chttp2FakeSecurityFullstack.textproto | 3 + ...reds_Chttp2FakeSecurityFullstack.textproto | 3 + ...reds_Chttp2FakeSecurityFullstack.textproto | 3 + ...reds_Chttp2FakeSecurityFullstack.textproto | 3 + ...reds_Chttp2FakeSecurityFullstack.textproto | 3 + ...reds_Chttp2FakeSecurityFullstack.textproto | 3 + ...eds_Chttp2SimplSslFullstackTls12.textproto | 3 + ...eds_Chttp2SimplSslFullstackTls12.textproto | 3 + ...eds_Chttp2SimplSslFullstackTls12.textproto | 3 + ...eds_Chttp2SimplSslFullstackTls12.textproto | 3 + ...eds_Chttp2SimplSslFullstackTls12.textproto | 3 + ...eds_Chttp2SimplSslFullstackTls12.textproto | 3 + ...uota_Chttp2FakeSecurityFullstack.textproto | 3 + ...Ping_Chttp2FakeSecurityFullstack.textproto | 3 + ...atch_Chttp2FakeSecurityFullstack.textproto | 3 + ...eqno_Chttp2FakeSecurityFullstack.textproto | 3 + ...Idle_Chttp2FakeSecurityFullstack.textproto | 3 + ...Ping_Chttp2FakeSecurityFullstack.textproto | 3 + ...Data_Chttp2FakeSecurityFullstack.textproto | 3 + ...eams_Chttp2FakeSecurityFullstack.textproto | 3 + ...elay_Chttp2FakeSecurityFullstack.textproto | 3 + ...elay_Chttp2FakeSecurityFullstack.textproto | 3 + ...arts_Chttp2FakeSecurityFullstack.textproto | 3 + ...ches_Chttp2FakeSecurityFullstack.textproto | 3 + ...tion_Chttp2FakeSecurityFullstack.textproto | 3 + ...ches_Chttp2FakeSecurityFullstack.textproto | 3 + ...line_Chttp2FakeSecurityFullstack.textproto | 3 + ...bled_Chttp2FakeSecurityFullstack.textproto | 3 + ...elay_Chttp2FakeSecurityFullstack.textproto | 3 + ...atch_Chttp2FakeSecurityFullstack.textproto | 3 + ...atch_Chttp2FakeSecurityFullstack.textproto | 3 + ...Drop_Chttp2FakeSecurityFullstack.textproto | 3 + ...Fail_Chttp2FakeSecurityFullstack.textproto | 3 + ...rted_Chttp2FakeSecurityFullstack.textproto | 3 + ...atus_Chttp2FakeSecurityFullstack.textproto | 3 + ...empt_Chttp2FakeSecurityFullstack.textproto | 3 + ...eout_Chttp2FakeSecurityFullstack.textproto | 3 + ...data_Chttp2FakeSecurityFullstack.textproto | 3 + ...play_Chttp2FakeSecurityFullstack.textproto | 3 + ...sage_Chttp2FakeSecurityFullstack.textproto | 3 + ...rror_Chttp2FakeSecurityFullstack.textproto | 3 + ...Refs_Chttp2FakeSecurityFullstack.textproto | 3 + ...ails_Chttp2FakeSecurityFullstack.textproto | 3 + ...atch_Chttp2FakeSecurityFullstack.textproto | 3 + ...elay_Chttp2FakeSecurityFullstack.textproto | 3 + ...bled_Chttp2FakeSecurityFullstack.textproto | 3 + ...shed_Chttp2FakeSecurityFullstack.textproto | 3 + ...mmit_Chttp2FakeSecurityFullstack.textproto | 3 + ...ming_Chttp2FakeSecurityFullstack.textproto | 3 + ...tled_Chttp2FakeSecurityFullstack.textproto | 3 + ...mpts_Chttp2FakeSecurityFullstack.textproto | 3 + ...Wire_Chttp2FakeSecurityFullstack.textproto | 3 + ...nish_Chttp2FakeSecurityFullstack.textproto | 3 + ...etry_Chttp2FakeSecurityFullstack.textproto | 3 + ...away_Chttp2FakeSecurityFullstack.textproto | 3 + ...Recv_Chttp2FakeSecurityFullstack.textproto | 3 + ...est_Chttp2SimplSslFullstackTls12.textproto | 3 + ...icy_Chttp2SimplSslFullstackTls12.textproto | 3 + ...est_Chttp2SimplSslFullstackTls12.textproto | 3 + ...oad_Chttp2SimplSslFullstackTls12.textproto | 3 + ...ure_Chttp2SimplSslFullstackTls12.textproto | 3 + ...oad_Chttp2SimplSslFullstackTls12.textproto | 3 + ...est_Chttp2SimplSslFullstackTls12.textproto | 3 + ...icy_Chttp2SimplSslFullstackTls12.textproto | 3 + ...est_Chttp2SimplSslFullstackTls12.textproto | 3 + ...tEnd_Chttp2FakeSecurityFullstack.textproto | 3 + ...orks_Chttp2FakeSecurityFullstack.textproto | 3 + ...h-1b8e4624f764fe3793119eec935c852b97565ec8 | 6 + test/core/end2end/end2end_test_fuzzer.cc | 163 +++ test/core/end2end/end2end_test_fuzzer.proto | 29 + test/core/end2end/end2end_test_main.cc | 1071 +---------------- test/core/end2end/end2end_test_suites.cc | 1057 ++++++++++++++++ test/core/end2end/end2end_tests.cc | 92 +- test/core/end2end/end2end_tests.h | 294 +++-- test/core/end2end/fixtures/inproc_fixture.h | 20 +- test/core/end2end/fixtures/local_util.cc | 8 +- test/core/end2end/fixtures/local_util.h | 6 +- test/core/end2end/fixtures/secure_fixture.h | 8 +- test/core/end2end/fixtures/sockpair_fixture.h | 10 +- test/core/end2end/fuzzers/api_fuzzer.cc | 153 +-- test/core/end2end/fuzzers/api_fuzzer.proto | 7 - ...case-minimized-api_fuzzer-4813636509761536 | 21 - ...case-minimized-api_fuzzer-5024669712646144 | 34 - ...minimized-api_fuzzer-5916612266688512.fuzz | 249 ---- .../fuzzers/api_fuzzer_corpus/{0 => empty} | 0 .../fuzzers/api_fuzzer_corpus/sleep-crash | 32 - .../testcase-4638125285834752 | 48 - .../testcase-6256752625319936 | 86 -- ...t-36dbe33cfc4d07ab5c01f283c901ee35bc6de2fd | 49 - test/core/end2end/h2_ssl_cert_test.cc | 24 +- test/core/end2end/seed_end2end_corpus.cc | 69 ++ test/core/end2end/tests/bad_ping.cc | 4 +- test/core/end2end/tests/binary_metadata.cc | 12 +- test/core/end2end/tests/call_creds.cc | 36 +- test/core/end2end/tests/call_host_override.cc | 2 +- .../core/end2end/tests/cancel_after_accept.cc | 6 +- .../end2end/tests/cancel_after_client_done.cc | 4 +- .../core/end2end/tests/cancel_after_invoke.cc | 16 +- .../end2end/tests/cancel_after_round_trip.cc | 7 +- .../end2end/tests/cancel_before_invoke.cc | 12 +- test/core/end2end/tests/cancel_in_a_vacuum.cc | 6 +- test/core/end2end/tests/cancel_with_status.cc | 8 +- test/core/end2end/tests/channelz.cc | 6 +- test/core/end2end/tests/client_streaming.cc | 20 +- test/core/end2end/tests/compressed_payload.cc | 54 +- test/core/end2end/tests/connectivity.cc | 2 +- test/core/end2end/tests/default_host.cc | 2 +- .../core/end2end/tests/disappearing_server.cc | 2 +- test/core/end2end/tests/empty_batch.cc | 4 +- .../core/end2end/tests/filter_causes_close.cc | 2 +- test/core/end2end/tests/filter_context.cc | 2 +- test/core/end2end/tests/filter_init_fails.cc | 19 +- test/core/end2end/tests/filtered_metadata.cc | 2 +- .../end2end/tests/graceful_server_shutdown.cc | 2 +- test/core/end2end/tests/grpc_authz.cc | 19 +- test/core/end2end/tests/high_initial_seqno.cc | 6 +- test/core/end2end/tests/hpack_size.cc | 100 +- .../end2end/tests/invoke_large_request.cc | 2 +- test/core/end2end/tests/keepalive_timeout.cc | 4 +- test/core/end2end/tests/large_metadata.cc | 24 +- .../end2end/tests/max_concurrent_streams.cc | 6 +- test/core/end2end/tests/max_connection_age.cc | 6 +- .../core/end2end/tests/max_connection_idle.cc | 2 +- test/core/end2end/tests/max_message_length.cc | 37 +- test/core/end2end/tests/negative_deadline.cc | 2 +- test/core/end2end/tests/no_logging.cc | 2 +- test/core/end2end/tests/no_op.cc | 4 +- test/core/end2end/tests/payload.cc | 4 +- test/core/end2end/tests/ping.cc | 2 +- .../core/end2end/tests/ping_pong_streaming.cc | 18 +- test/core/end2end/tests/proxy_auth.cc | 2 +- test/core/end2end/tests/registered_call.cc | 4 +- test/core/end2end/tests/request_with_flags.cc | 19 +- .../end2end/tests/request_with_payload.cc | 2 +- .../end2end/tests/resource_quota_server.cc | 7 +- test/core/end2end/tests/retry.cc | 2 +- ...retry_cancel_after_first_attempt_starts.cc | 3 +- .../tests/retry_cancel_during_delay.cc | 4 +- ...retry_cancel_with_multiple_send_batches.cc | 4 +- test/core/end2end/tests/retry_cancellation.cc | 4 +- test/core/end2end/tests/retry_disabled.cc | 2 +- .../retry_exceeds_buffer_size_in_delay.cc | 2 +- ...ry_exceeds_buffer_size_in_initial_batch.cc | 2 +- ...exceeds_buffer_size_in_subsequent_batch.cc | 2 +- test/core/end2end/tests/retry_lb_drop.cc | 2 +- test/core/end2end/tests/retry_lb_fail.cc | 2 +- .../tests/retry_non_retriable_status.cc | 2 +- ...s_before_recv_trailing_metadata_started.cc | 3 +- .../tests/retry_per_attempt_recv_timeout.cc | 2 +- ...er_attempt_recv_timeout_on_last_attempt.cc | 2 +- .../tests/retry_recv_initial_metadata.cc | 2 +- test/core/end2end/tests/retry_recv_message.cc | 2 +- .../tests/retry_recv_message_replay.cc | 2 +- .../retry_recv_trailing_metadata_error.cc | 2 +- .../tests/retry_send_initial_metadata_refs.cc | 2 +- .../core/end2end/tests/retry_send_op_fails.cc | 2 +- .../end2end/tests/retry_send_recv_batch.cc | 2 +- .../tests/retry_server_pushback_delay.cc | 2 +- .../tests/retry_server_pushback_disabled.cc | 2 +- test/core/end2end/tests/retry_streaming.cc | 2 +- .../tests/retry_streaming_after_commit.cc | 2 +- ...reaming_succeeds_before_replay_finished.cc | 2 +- test/core/end2end/tests/retry_throttled.cc | 2 +- .../end2end/tests/retry_too_many_attempts.cc | 2 +- .../end2end/tests/retry_transparent_goaway.cc | 2 +- ...etry_transparent_max_concurrent_streams.cc | 2 +- .../retry_transparent_not_sent_on_wire.cc | 2 +- .../tests/retry_unref_before_finish.cc | 2 +- .../end2end/tests/retry_unref_before_recv.cc | 2 +- .../end2end/tests/server_finishes_request.cc | 2 +- test/core/end2end/tests/server_streaming.cc | 10 +- .../end2end/tests/shutdown_finishes_calls.cc | 4 +- .../end2end/tests/shutdown_finishes_tags.cc | 4 +- .../end2end/tests/simple_delayed_request.cc | 2 +- test/core/end2end/tests/simple_metadata.cc | 2 +- test/core/end2end/tests/simple_request.cc | 4 +- .../end2end/tests/streaming_error_response.cc | 9 +- test/core/end2end/tests/trailing_metadata.cc | 2 +- test/core/end2end/tests/write_buffering.cc | 2 +- .../end2end/tests/write_buffering_at_end.cc | 2 +- .../fuzzing_event_engine.cc | 83 +- .../fuzzing_event_engine.h | 22 +- .../fuzzing_event_engine.proto | 12 +- .../test_suite/fuzzing_event_engine_test.cc | 2 - test/core/filters/filter_test.cc | 2 - test/core/util/BUILD | 26 + test/core/util/fuzz_config_vars.cc | 13 +- test/core/util/fuzz_config_vars.h | 3 + test/core/util/fuzz_config_vars_helpers.cc | 42 + test/core/util/fuzz_config_vars_helpers.h | 30 + test/core/util/grpc_fuzzer.bzl | 7 +- test/core/util/osa_distance.cc | 69 ++ test/core/util/osa_distance.h | 29 + test/core/util/osa_distance_test.cc | 35 + tools/codegen/core/gen_config_vars.py | 30 +- tools/codegen/core/gen_experiments.py | 8 +- tools/distrib/fix_build_deps.py | 4 + tools/run_tests/generated/tests.json | 24 + 393 files changed, 3733 insertions(+), 2435 deletions(-) create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2Fullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackCompression.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackNoRetry.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackWithCensus.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2InsecureCredentials.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls13.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls13.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls13.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterAcceptWithServiceConfig_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterRoundTripWithServiceConfig_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DefaultHost_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DisappearingServer_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SimpleDelayedRequestShort_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SubchannelFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Inproc.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterClientDone_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke3_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke4_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke5_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke6_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineInAVacuum_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreDeadlineTest_NegativeDeadline_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvStatusOnClient_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendCloseFromClient_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendInitialMetadata_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendMessage_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientTrueBinary_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientTrueBinary_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterAccept_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterClientDone_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke3_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke4_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke5_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke6_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke1_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke2_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke3_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke4_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke5_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke6_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelInAVacuum_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus1_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus2_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus3_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus4_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzDisabled_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzWithChannelTrace_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Channelz_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming10_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming1_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming30_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming3_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ContentLengthIsFiltered_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EarlyServerShutdownFinishesInflightCalls_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EmptyBatch_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterCausesClose_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterContext_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Invoke10RegisteredCalls_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_InvokeRegisteredCall_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_NoOp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming10_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming1_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming30_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming3_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_RequestWithPayload_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFinishesRequest_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ShutdownFinishesTags_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleMetadata_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest10_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarly_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponse_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_TrailingMetadata_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferHintAndNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferIntAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteInternalCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload10Times_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode1000_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode100_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode32768_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4096_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4194304_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode1000_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode100_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode32768_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4096_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4194304_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode1000_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode100_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode32768_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4096_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4194304_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode1000_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode100_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode32768_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4096_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4194304_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode1000_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode100_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode32768_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4096_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4194304_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode0_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode1000_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode100_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode32768_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4096_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4194304_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_InvokeLargeRequest_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_KeepaliveTimeout_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnFirst_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnSecond_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_ReadDelaysKeepalive_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataAboveHardLimit_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataBetweenSoftAndHardLimits_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitBelowDefaultHard_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitOverridsDefaultSoft_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitAboveHardLimit_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitBelowDefaultSoft_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitOverridesDefaultHard_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataUnderSoftLimit_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_GracefulServerShutdown_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeForciblyClose_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeGracefullyClose_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnClientOnResponseWithCompression_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnServerOnRequestWithCompression_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming10Messages_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_ServerStreamingEmptyStream_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/NoLoggingTest_NoLoggingTest_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_FailToSendCallCreds_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestWithServerRejectingClientCreds_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndCallCreds_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedCallCreds_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenCallCreds_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/ResourceQuotaTest_ResourceQuota_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_BadPing_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_ConnectivityWatch_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_MaxConnectionIdle_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_Ping_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_PingsWithoutData_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryHttp2Test_RetryTransparentMaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_CancelDuringDelay_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_DeadlineDuringDelay_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelAfterFirstAttemptStarts_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryCancellation_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadlineWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadline_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryDisabled_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInDelay_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInInitialBatch_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInSubsequentBatch_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryLbDrop_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryLbFail_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatus_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeoutOnLastAttempt_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeout_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessageReplay_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessage_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvTrailingMetadataError_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetrySendInitialMetadataRefs_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetrySendOpFails_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetrySendRecvBatch_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDelay_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDisabled_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamSucceedsBeforeReplayFinished_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamingAfterCommit_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryStreaming_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryThrottled_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryTooManyAttempts_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryTransparentNotSentOnWire_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_RetryUnrefBeforeFinish_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_Retry_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_TransparentGoaway_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/RetryTest_UnrefBeforeRecv_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInvalidPolicySkipReload_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherRecoversFromFailure_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherValidPolicyReload_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto create mode 100644 test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingAtEnd_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingWorks_Chttp2FakeSecurityFullstack.textproto create mode 100644 test/core/end2end/end2end_test_corpus/crash-1b8e4624f764fe3793119eec935c852b97565ec8 create mode 100644 test/core/end2end/end2end_test_fuzzer.cc create mode 100644 test/core/end2end/end2end_test_fuzzer.proto create mode 100644 test/core/end2end/end2end_test_suites.cc delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-4813636509761536 delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5024669712646144 delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5916612266688512.fuzz rename test/core/end2end/fuzzers/api_fuzzer_corpus/{0 => empty} (100%) delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/sleep-crash delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-4638125285834752 delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-6256752625319936 delete mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-36dbe33cfc4d07ab5c01f283c901ee35bc6de2fd create mode 100644 test/core/end2end/seed_end2end_corpus.cc create mode 100644 test/core/util/fuzz_config_vars_helpers.cc create mode 100644 test/core/util/fuzz_config_vars_helpers.h create mode 100644 test/core/util/osa_distance.cc create mode 100644 test/core/util/osa_distance.h create mode 100644 test/core/util/osa_distance_test.cc diff --git a/CMakeLists.txt b/CMakeLists.txt index b0f940c7d65..74b550cafb1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1086,6 +1086,7 @@ if(gRPC_BUILD_TESTS) endif() add_dependencies(buildtests_cxx orca_service_end2end_test) add_dependencies(buildtests_cxx orphanable_test) + add_dependencies(buildtests_cxx osa_distance_test) add_dependencies(buildtests_cxx out_of_bounds_bad_client_test) add_dependencies(buildtests_cxx outlier_detection_lb_config_parser_test) add_dependencies(buildtests_cxx outlier_detection_test) @@ -9325,6 +9326,7 @@ if(gRPC_BUILD_TESTS) add_executable(core_end2end_tests test/core/end2end/cq_verifier.cc test/core/end2end/end2end_test_main.cc + test/core/end2end/end2end_test_suites.cc test/core/end2end/end2end_tests.cc test/core/end2end/fixtures/http_proxy_fixture.cc test/core/end2end/fixtures/local_util.cc @@ -15972,6 +15974,44 @@ target_link_libraries(orphanable_test ) +endif() +if(gRPC_BUILD_TESTS) + +add_executable(osa_distance_test + test/core/util/osa_distance.cc + test/core/util/osa_distance_test.cc + third_party/googletest/googletest/src/gtest-all.cc + third_party/googletest/googlemock/src/gmock-all.cc +) +target_compile_features(osa_distance_test PUBLIC cxx_std_14) +target_include_directories(osa_distance_test + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR} + ${_gRPC_RE2_INCLUDE_DIR} + ${_gRPC_SSL_INCLUDE_DIR} + ${_gRPC_UPB_GENERATED_DIR} + ${_gRPC_UPB_GRPC_GENERATED_DIR} + ${_gRPC_UPB_INCLUDE_DIR} + ${_gRPC_XXHASH_INCLUDE_DIR} + ${_gRPC_ZLIB_INCLUDE_DIR} + third_party/googletest/googletest/include + third_party/googletest/googletest + third_party/googletest/googlemock/include + third_party/googletest/googlemock + ${_gRPC_PROTO_GENS_DIR} +) + +target_link_libraries(osa_distance_test + ${_gRPC_BASELIB_LIBRARIES} + ${_gRPC_PROTOBUF_LIBRARIES} + ${_gRPC_ZLIB_LIBRARIES} + ${_gRPC_ALLTARGETS_LIBRARIES} + absl::strings +) + + endif() if(gRPC_BUILD_TESTS) diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index f723640d935..7e4e9fe62b6 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -6236,6 +6236,7 @@ targets: src: - test/core/end2end/cq_verifier.cc - test/core/end2end/end2end_test_main.cc + - test/core/end2end/end2end_test_suites.cc - test/core/end2end/end2end_tests.cc - test/core/end2end/fixtures/http_proxy_fixture.cc - test/core/end2end/fixtures/local_util.cc @@ -9835,6 +9836,17 @@ targets: - test/core/gprpp/orphanable_test.cc deps: - grpc_test_util +- name: osa_distance_test + gtest: true + build: test + language: c++ + headers: + - test/core/util/osa_distance.h + src: + - test/core/util/osa_distance.cc + - test/core/util/osa_distance_test.cc + deps: + - absl/strings:strings - name: out_of_bounds_bad_client_test gtest: true build: test diff --git a/src/core/lib/config/config_vars.yaml b/src/core/lib/config/config_vars.yaml index 1ca1a90f0ac..99916f93409 100644 --- a/src/core/lib/config/config_vars.yaml +++ b/src/core/lib/config/config_vars.yaml @@ -25,7 +25,9 @@ # behavior for some environment variables. # # Optionally, fuzz: true can be added to enable fuzzers to explore variations -# in this config var with their regular fuzzing work. +# in this config var with their regular fuzzing work - or fuzz: FunctionName +# can be used to specify that the config space be explored, but FunctionName should be called to pre-format/validate the value for fuzzing. +# Such functions should be listed in fuzz_config_vars_helpers.h. - name: experiments type: string @@ -33,7 +35,7 @@ A comma separated list of currently active experiments. Experiments may be prefixed with a '-' to disable them. default: - fuzz: true + fuzz: ValidateExperimentsStringForFuzzing - name: client_channel_backup_poll_interval_ms type: int default: 5000 diff --git a/src/core/lib/event_engine/shim.cc b/src/core/lib/event_engine/shim.cc index 0758c572b51..8a91ab5935a 100644 --- a/src/core/lib/event_engine/shim.cc +++ b/src/core/lib/event_engine/shim.cc @@ -22,6 +22,12 @@ namespace grpc_event_engine { namespace experimental { +#if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM) +bool g_event_engine_supports_fd = true; +#else +bool g_event_engine_supports_fd = false; +#endif + bool UseEventEngineClient() { // TODO(hork, eryu): Adjust the ifdefs accordingly when event engines become // available for other platforms. @@ -48,7 +54,7 @@ bool UseEventEngineListener() { bool EventEngineSupportsFd() { #if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM) - return true; + return g_event_engine_supports_fd; #else return false; #endif diff --git a/src/core/lib/experiments/config.h b/src/core/lib/experiments/config.h index 859e7abbbe4..f282e7a319e 100644 --- a/src/core/lib/experiments/config.h +++ b/src/core/lib/experiments/config.h @@ -46,6 +46,7 @@ struct ExperimentMetadata { const char* name; const char* description; bool default_value; + bool allow_in_fuzzing_config; }; } // namespace grpc_core diff --git a/src/core/lib/experiments/experiments.cc b/src/core/lib/experiments/experiments.cc index 9f4ffe5fb76..ce9360977b1 100644 --- a/src/core/lib/experiments/experiments.cc +++ b/src/core/lib/experiments/experiments.cc @@ -67,27 +67,30 @@ const char* const description_work_stealing = namespace grpc_core { const ExperimentMetadata g_experiment_metadata[] = { - {"tcp_frame_size_tuning", description_tcp_frame_size_tuning, false}, - {"tcp_rcv_lowat", description_tcp_rcv_lowat, false}, - {"peer_state_based_framing", description_peer_state_based_framing, false}, - {"flow_control_fixes", description_flow_control_fixes, true}, + {"tcp_frame_size_tuning", description_tcp_frame_size_tuning, false, true}, + {"tcp_rcv_lowat", description_tcp_rcv_lowat, false, true}, + {"peer_state_based_framing", description_peer_state_based_framing, false, + true}, + {"flow_control_fixes", description_flow_control_fixes, true, true}, {"memory_pressure_controller", description_memory_pressure_controller, - false}, + false, true}, {"unconstrained_max_quota_buffer_size", - description_unconstrained_max_quota_buffer_size, false}, - {"event_engine_client", description_event_engine_client, false}, - {"monitoring_experiment", description_monitoring_experiment, true}, - {"promise_based_client_call", description_promise_based_client_call, false}, - {"free_large_allocator", description_free_large_allocator, false}, - {"promise_based_server_call", description_promise_based_server_call, false}, + description_unconstrained_max_quota_buffer_size, false, true}, + {"event_engine_client", description_event_engine_client, false, true}, + {"monitoring_experiment", description_monitoring_experiment, true, true}, + {"promise_based_client_call", description_promise_based_client_call, false, + true}, + {"free_large_allocator", description_free_large_allocator, false, true}, + {"promise_based_server_call", description_promise_based_server_call, false, + true}, {"transport_supplies_client_latency", - description_transport_supplies_client_latency, false}, - {"event_engine_listener", description_event_engine_listener, false}, + description_transport_supplies_client_latency, false, true}, + {"event_engine_listener", description_event_engine_listener, false, true}, {"schedule_cancellation_over_write", - description_schedule_cancellation_over_write, false}, - {"trace_record_callops", description_trace_record_callops, false}, - {"event_engine_dns", description_event_engine_dns, false}, - {"work_stealing", description_work_stealing, false}, + description_schedule_cancellation_over_write, false, true}, + {"trace_record_callops", description_trace_record_callops, false, true}, + {"event_engine_dns", description_event_engine_dns, false, false}, + {"work_stealing", description_work_stealing, false, false}, }; } // namespace grpc_core diff --git a/src/core/lib/experiments/experiments.yaml b/src/core/lib/experiments/experiments.yaml index 55fdd3467b6..8da011fc5f3 100644 --- a/src/core/lib/experiments/experiments.yaml +++ b/src/core/lib/experiments/experiments.yaml @@ -27,6 +27,9 @@ # (date, YYYY/MM/DD) # test_tags: a set of bazel tags, that if a test declares them signals # that that test should be run with this experiment enabled in CI +# allow_in_fuzzing_config: optional boolean (true if not specified) +# if false, this experiment will not be included in fuzzers that +# explore the config space # # Well known test tags: # core_end2end_test: all tests, fixtures in the core end2end suite @@ -145,6 +148,7 @@ expiry: 2023/06/01 owner: yijiem@google.com test_tags: [] + allow_in_fuzzing_config: false - name: work_stealing description: If set, use a work stealing thread pool implementation in EventEngine @@ -152,3 +156,4 @@ expiry: 2023/06/01 owner: hork@google.com test_tags: ["core_end2end_test"] + allow_in_fuzzing_config: false diff --git a/src/core/lib/gprpp/crash.cc b/src/core/lib/gprpp/crash.cc index e287359d6ce..5669e17bfba 100644 --- a/src/core/lib/gprpp/crash.cc +++ b/src/core/lib/gprpp/crash.cc @@ -16,10 +16,13 @@ #include "src/core/lib/gprpp/crash.h" +#include #include #include +#include "absl/strings/str_cat.h" + #include namespace grpc_core { @@ -30,4 +33,11 @@ void Crash(absl::string_view message, SourceLocation location) { abort(); } +void CrashWithStdio(absl::string_view message, SourceLocation location) { + fputs(absl::StrCat(location.file(), ":", location.line(), ": ", message, "\n") + .c_str(), + stderr); + abort(); +} + } // namespace grpc_core diff --git a/src/core/lib/gprpp/crash.h b/src/core/lib/gprpp/crash.h index 5d31e59a836..2f7ce75bcf6 100644 --- a/src/core/lib/gprpp/crash.h +++ b/src/core/lib/gprpp/crash.h @@ -29,6 +29,9 @@ namespace grpc_core { [[noreturn]] void Crash(absl::string_view message, ::grpc_core::SourceLocation location = {}); +[[noreturn]] void CrashWithStdio(absl::string_view message, + ::grpc_core::SourceLocation location = {}); + } // namespace grpc_core #endif // GRPC_SRC_CORE_LIB_GPRPP_CRASH_H diff --git a/src/core/lib/gprpp/time.cc b/src/core/lib/gprpp/time.cc index 2c9e96d4211..40ba366c574 100644 --- a/src/core/lib/gprpp/time.cc +++ b/src/core/lib/gprpp/time.cc @@ -229,6 +229,7 @@ Duration::operator grpc_event_engine::experimental::EventEngine::Duration() void TestOnlySetProcessEpoch(gpr_timespec epoch) { g_process_epoch_seconds.store( gpr_convert_clock_type(epoch, GPR_CLOCK_MONOTONIC).tv_sec); + g_process_epoch_cycles.store(gpr_get_cycle_counter()); } std::ostream& operator<<(std::ostream& out, Timestamp timestamp) { diff --git a/src/core/lib/iomgr/tcp_server_posix.cc b/src/core/lib/iomgr/tcp_server_posix.cc index dbe7bec3383..3bb93918be6 100644 --- a/src/core/lib/iomgr/tcp_server_posix.cc +++ b/src/core/lib/iomgr/tcp_server_posix.cc @@ -16,13 +16,16 @@ // // +#include + +#include + // FIXME: "posix" files shouldn't be depending on _GNU_SOURCE #ifndef _GNU_SOURCE #define _GNU_SOURCE +#include #endif -#include - #include "src/core/lib/iomgr/port.h" #ifdef GRPC_POSIX_SOCKET_TCP_SERVER @@ -86,99 +89,118 @@ using ::grpc_event_engine::experimental::SliceBuffer; static grpc_error_handle CreateEventEngineListener( grpc_tcp_server* s, grpc_closure* shutdown_complete, const EndpointConfig& config, grpc_tcp_server** server) { - PosixEventEngineWithFdSupport::PosixAcceptCallback accept_cb = - [s](int listener_fd, std::unique_ptr ep, - bool is_external, MemoryAllocator /*allocator*/, - SliceBuffer* pending_data) { - grpc_core::ApplicationCallbackExecCtx app_ctx; - grpc_core::ExecCtx exec_ctx; - grpc_tcp_server_acceptor* acceptor = - static_cast( - gpr_malloc(sizeof(*acceptor))); - acceptor->from_server = s; - acceptor->port_index = -1; - acceptor->fd_index = -1; - if (!is_external) { - auto it = s->listen_fd_to_index_map.find(listener_fd); - if (it != s->listen_fd_to_index_map.end()) { - acceptor->port_index = std::get<0>(it->second); - acceptor->fd_index = std::get<1>(it->second); + absl::StatusOr> listener; + if (grpc_event_engine::experimental::EventEngineSupportsFd()) { + PosixEventEngineWithFdSupport::PosixAcceptCallback accept_cb = + [s](int listener_fd, std::unique_ptr ep, + bool is_external, MemoryAllocator /*allocator*/, + SliceBuffer* pending_data) { + grpc_core::ApplicationCallbackExecCtx app_ctx; + grpc_core::ExecCtx exec_ctx; + grpc_tcp_server_acceptor* acceptor = + static_cast( + gpr_malloc(sizeof(*acceptor))); + acceptor->from_server = s; + acceptor->port_index = -1; + acceptor->fd_index = -1; + if (!is_external) { + auto it = s->listen_fd_to_index_map.find(listener_fd); + if (it != s->listen_fd_to_index_map.end()) { + acceptor->port_index = std::get<0>(it->second); + acceptor->fd_index = std::get<1>(it->second); + } + } else { + // External connection handling. + grpc_resolved_address addr; + memset(&addr, 0, sizeof(addr)); + addr.len = static_cast(sizeof(struct sockaddr_storage)); + // Get the fd of the socket connected to peer. + int fd = reinterpret_cast(ep.get()) + ->GetWrappedFd(); + if (getpeername(fd, reinterpret_cast(addr.addr), + &(addr.len)) < 0) { + gpr_log(GPR_ERROR, "Failed getpeername: %s", + grpc_core::StrError(errno).c_str()); + close(fd); + return; + } + (void)grpc_set_socket_no_sigpipe_if_possible(fd); + auto addr_uri = grpc_sockaddr_to_uri(&addr); + if (!addr_uri.ok()) { + gpr_log(GPR_ERROR, "Invalid address: %s", + addr_uri.status().ToString().c_str()); + return; + } + if (grpc_tcp_trace.enabled()) { + gpr_log(GPR_INFO, + "SERVER_CONNECT: incoming external connection: %s", + addr_uri->c_str()); + } } - } else { - // External connection handling. - grpc_resolved_address addr; - memset(&addr, 0, sizeof(addr)); - addr.len = static_cast(sizeof(struct sockaddr_storage)); - // Get the fd of the socket connected to peer. - int fd = - reinterpret_cast< - grpc_event_engine::experimental::PosixEndpointWithFdSupport*>( - ep.get()) - ->GetWrappedFd(); - if (getpeername(fd, reinterpret_cast(addr.addr), - &(addr.len)) < 0) { - gpr_log(GPR_ERROR, "Failed getpeername: %s", - grpc_core::StrError(errno).c_str()); - close(fd); - return; - } - (void)grpc_set_socket_no_sigpipe_if_possible(fd); - auto addr_uri = grpc_sockaddr_to_uri(&addr); - if (!addr_uri.ok()) { - gpr_log(GPR_ERROR, "Invalid address: %s", - addr_uri.status().ToString().c_str()); - return; + grpc_pollset* read_notifier_pollset = + (*(s->pollsets))[static_cast(gpr_atm_no_barrier_fetch_add( + &s->next_pollset_to_assign, 1)) % + s->pollsets->size()]; + acceptor->external_connection = is_external; + acceptor->listener_fd = listener_fd; + grpc_byte_buffer* buf = nullptr; + if (pending_data != nullptr && pending_data->Length() > 0) { + buf = grpc_raw_byte_buffer_create(nullptr, 0); + grpc_slice_buffer_swap(&buf->data.raw.slice_buffer, + pending_data->c_slice_buffer()); + pending_data->Clear(); } - if (grpc_tcp_trace.enabled()) { - gpr_log(GPR_INFO, - "SERVER_CONNECT: incoming external connection: %s", - addr_uri->c_str()); - } - } - grpc_pollset* read_notifier_pollset = - (*(s->pollsets))[static_cast(gpr_atm_no_barrier_fetch_add( - &s->next_pollset_to_assign, 1)) % - s->pollsets->size()]; - acceptor->external_connection = is_external; - acceptor->listener_fd = listener_fd; - grpc_byte_buffer* buf = nullptr; - if (pending_data != nullptr && pending_data->Length() > 0) { - buf = grpc_raw_byte_buffer_create(nullptr, 0); - grpc_slice_buffer_swap(&buf->data.raw.slice_buffer, - pending_data->c_slice_buffer()); - pending_data->Clear(); - } - acceptor->pending_data = buf; - s->on_accept_cb( - s->on_accept_cb_arg, - grpc_event_engine::experimental::grpc_event_engine_endpoint_create( - std::move(ep)), - read_notifier_pollset, acceptor); - }; - auto on_shutdown_complete_cb = - grpc_event_engine::experimental::GrpcClosureToStatusCallback( - shutdown_complete); - PosixEventEngineWithFdSupport* engine_ptr = - reinterpret_cast( - config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE)); - // Keeps the engine alive for some tests that have not otherwise instantiated - // an EventEngine - std::shared_ptr keeper; - if (engine_ptr == nullptr) { - keeper = grpc_event_engine::experimental::GetDefaultEventEngine(); - engine_ptr = reinterpret_cast(keeper.get()); - } - auto listener = engine_ptr->CreatePosixListener( - std::move(accept_cb), - [s, shutdown_complete](absl::Status status) { - grpc_event_engine::experimental::RunEventEngineClosure( - shutdown_complete, absl_status_to_grpc_error(status)); - delete s->fd_handler; - delete s; - }, - config, - std::make_unique( - s->memory_quota)); + acceptor->pending_data = buf; + s->on_accept_cb(s->on_accept_cb_arg, + grpc_event_engine::experimental:: + grpc_event_engine_endpoint_create(std::move(ep)), + read_notifier_pollset, acceptor); + }; + PosixEventEngineWithFdSupport* engine_ptr = + reinterpret_cast( + config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE)); + // Keeps the engine alive for some tests that have not otherwise + // instantiated an EventEngine + std::shared_ptr keeper; + if (engine_ptr == nullptr) { + keeper = grpc_event_engine::experimental::GetDefaultEventEngine(); + engine_ptr = + reinterpret_cast(keeper.get()); + } + listener = engine_ptr->CreatePosixListener( + std::move(accept_cb), + [s, shutdown_complete](absl::Status status) { + grpc_event_engine::experimental::RunEventEngineClosure( + shutdown_complete, absl_status_to_grpc_error(status)); + delete s->fd_handler; + delete s; + }, + config, + std::make_unique( + s->memory_quota)); + } else { + EventEngine::Listener::AcceptCallback accept_cb = + [s](std::unique_ptr ep, MemoryAllocator) { + s->on_accept_cb(s->on_accept_cb_arg, + grpc_event_engine::experimental:: + grpc_event_engine_endpoint_create(std::move(ep)), + nullptr, nullptr); + }; + auto ee = grpc_event_engine::experimental::GetDefaultEventEngine(); + listener = ee->CreateListener( + std::move(accept_cb), + [s, ee, shutdown_complete](absl::Status status) { + GPR_ASSERT(gpr_atm_no_barrier_load(&s->refs.count) == 0); + grpc_event_engine::experimental::RunEventEngineClosure( + shutdown_complete, absl_status_to_grpc_error(status)); + delete s->fd_handler; + delete s; + }, + config, + std::make_unique( + s->memory_quota)); + } if (!listener.ok()) { delete s; *server = nullptr; @@ -565,16 +587,27 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s, return absl::UnknownError("Server already shutdown"); } int fd_index = 0; - auto port = s->ee_listener->BindWithFd( - grpc_event_engine::experimental::CreateResolvedAddress(*addr), - [s, &fd_index](absl::StatusOr listen_fd) { - if (!listen_fd.ok()) { - return; - } - GPR_DEBUG_ASSERT(*listen_fd > 0); - s->listen_fd_to_index_map.insert_or_assign( - *listen_fd, std::make_tuple(s->n_bind_ports, fd_index++)); - }); + absl::StatusOr port; + if (grpc_event_engine::experimental::EventEngineSupportsFd()) { + port = + static_cast< + grpc_event_engine::experimental::PosixListenerWithFdSupport*>( + s->ee_listener.get()) + ->BindWithFd( + grpc_event_engine::experimental::CreateResolvedAddress(*addr), + [s, &fd_index](absl::StatusOr listen_fd) { + if (!listen_fd.ok()) { + return; + } + GPR_DEBUG_ASSERT(*listen_fd > 0); + s->listen_fd_to_index_map.insert_or_assign( + *listen_fd, + std::make_tuple(s->n_bind_ports, fd_index++)); + }); + } else { + port = s->ee_listener->Bind( + grpc_event_engine::experimental::CreateResolvedAddress(*addr)); + } if (port.ok()) { s->n_bind_ports++; *out_port = *port; @@ -774,7 +807,11 @@ static void tcp_server_shutdown_listeners(grpc_tcp_server* s) { gpr_mu_lock(&s->mu); s->shutdown_listeners = true; if (grpc_event_engine::experimental::UseEventEngineListener()) { - s->ee_listener->ShutdownListeningFds(); + if (grpc_event_engine::experimental::EventEngineSupportsFd()) { + static_cast( + s->ee_listener.get()) + ->ShutdownListeningFds(); + } } /* shutdown all fd's */ if (s->active_ports) { @@ -804,15 +841,19 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler { // TODO(yangg) resolve duplicate code with on_read void Handle(int listener_fd, int fd, grpc_byte_buffer* buf) override { if (grpc_event_engine::experimental::UseEventEngineListener()) { + GPR_ASSERT(grpc_event_engine::experimental::EventEngineSupportsFd()); grpc_event_engine::experimental::SliceBuffer pending_data; if (buf != nullptr) { pending_data = grpc_event_engine::experimental::SliceBuffer::TakeCSliceBuffer( buf->data.raw.slice_buffer); } - GPR_ASSERT(GRPC_LOG_IF_ERROR("listener_handle_external_connection", - s_->ee_listener->HandleExternalConnection( - listener_fd, fd, &pending_data))); + GPR_ASSERT(GRPC_LOG_IF_ERROR( + "listener_handle_external_connection", + static_cast< + grpc_event_engine::experimental::PosixListenerWithFdSupport*>( + s_->ee_listener.get()) + ->HandleExternalConnection(listener_fd, fd, &pending_data))); return; } grpc_pollset* read_notifier_pollset; diff --git a/src/core/lib/iomgr/tcp_server_utils_posix.h b/src/core/lib/iomgr/tcp_server_utils_posix.h index 26cef0209fb..7fbd772224b 100644 --- a/src/core/lib/iomgr/tcp_server_utils_posix.h +++ b/src/core/lib/iomgr/tcp_server_utils_posix.h @@ -107,7 +107,7 @@ struct grpc_tcp_server { /* used when event engine based servers are enabled */ int n_bind_ports = 0; absl::flat_hash_map> listen_fd_to_index_map; - std::unique_ptr + std::unique_ptr ee_listener = nullptr; /* used to store a pre-allocated FD assigned to a socket */ int pre_allocated_fd; diff --git a/src/core/lib/promise/sleep.cc b/src/core/lib/promise/sleep.cc index 4b0247af9d3..8288dc14fdd 100644 --- a/src/core/lib/promise/sleep.cc +++ b/src/core/lib/promise/sleep.cc @@ -41,8 +41,9 @@ Poll Sleep::operator()() { // Invalidate now so that we see a fresh version of the time. // TODO(ctiller): the following can be safely removed when we remove ExecCtx. ExecCtx::Get()->InvalidateNow(); + const auto now = Timestamp::Now(); // If the deadline is earlier than now we can just return. - if (deadline_ <= Timestamp::Now()) return absl::OkStatus(); + if (deadline_ <= now) return absl::OkStatus(); if (closure_ == nullptr) { // TODO(ctiller): it's likely we'll want a pool of closures - probably per // cpu? - to avoid allocating/deallocating on fast paths. diff --git a/test/core/end2end/BUILD b/test/core/end2end/BUILD index bdea58bf0df..b7eb258c8ad 100644 --- a/test/core/end2end/BUILD +++ b/test/core/end2end/BUILD @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_cc_test", "grpc_package") +load("//bazel:grpc_build_system.bzl", "grpc_cc_binary", "grpc_cc_library", "grpc_cc_test", "grpc_package", "grpc_proto_library") +load("//test/core/util:grpc_fuzzer.bzl", "grpc_proto_fuzzer") licenses(["notice"]) @@ -111,7 +112,9 @@ grpc_cc_library( "end2end_tests.h", ], external_deps = [ + "absl/functional:any_invocable", "absl/memory", + "absl/meta:type_traits", "absl/random", "absl/strings", "absl/types:optional", @@ -181,107 +184,114 @@ grpc_cc_library( ], ) +END2END_TEST_SRCS = [ + "end2end_test_suites.cc", + "tests/bad_ping.cc", + "tests/binary_metadata.cc", + "tests/call_creds.cc", + "tests/call_host_override.cc", + "tests/cancel_after_accept.cc", + "tests/cancel_after_client_done.cc", + "tests/cancel_after_invoke.cc", + "tests/cancel_after_round_trip.cc", + "tests/cancel_before_invoke.cc", + "tests/cancel_in_a_vacuum.cc", + "tests/cancel_with_status.cc", + "tests/channelz.cc", + "tests/client_streaming.cc", + "tests/compressed_payload.cc", + "tests/connectivity.cc", + "tests/default_host.cc", + "tests/disappearing_server.cc", + "tests/empty_batch.cc", + "tests/filter_causes_close.cc", + "tests/filter_context.cc", + "tests/filter_init_fails.cc", + "tests/filtered_metadata.cc", + "tests/graceful_server_shutdown.cc", + "tests/grpc_authz.cc", + "tests/high_initial_seqno.cc", + "tests/hpack_size.cc", + "tests/invoke_large_request.cc", + "tests/keepalive_timeout.cc", + "tests/large_metadata.cc", + "tests/max_concurrent_streams.cc", + "tests/max_connection_age.cc", + "tests/max_connection_idle.cc", + "tests/max_message_length.cc", + "tests/negative_deadline.cc", + "tests/no_logging.cc", + "tests/no_op.cc", + "tests/payload.cc", + "tests/ping.cc", + "tests/ping_pong_streaming.cc", + "tests/proxy_auth.cc", + "tests/registered_call.cc", + "tests/request_with_flags.cc", + "tests/request_with_payload.cc", + "tests/resource_quota_server.cc", + "tests/retry.cc", + "tests/retry_cancel_after_first_attempt_starts.cc", + "tests/retry_cancel_during_delay.cc", + "tests/retry_cancel_with_multiple_send_batches.cc", + "tests/retry_cancellation.cc", + "tests/retry_disabled.cc", + "tests/retry_exceeds_buffer_size_in_delay.cc", + "tests/retry_exceeds_buffer_size_in_initial_batch.cc", + "tests/retry_exceeds_buffer_size_in_subsequent_batch.cc", + "tests/retry_lb_drop.cc", + "tests/retry_lb_fail.cc", + "tests/retry_non_retriable_status.cc", + "tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc", + "tests/retry_per_attempt_recv_timeout.cc", + "tests/retry_per_attempt_recv_timeout_on_last_attempt.cc", + "tests/retry_recv_initial_metadata.cc", + "tests/retry_recv_message.cc", + "tests/retry_recv_message_replay.cc", + "tests/retry_recv_trailing_metadata_error.cc", + "tests/retry_send_initial_metadata_refs.cc", + "tests/retry_send_op_fails.cc", + "tests/retry_send_recv_batch.cc", + "tests/retry_server_pushback_delay.cc", + "tests/retry_server_pushback_disabled.cc", + "tests/retry_streaming.cc", + "tests/retry_streaming_after_commit.cc", + "tests/retry_streaming_succeeds_before_replay_finished.cc", + "tests/retry_throttled.cc", + "tests/retry_too_many_attempts.cc", + "tests/retry_transparent_goaway.cc", + "tests/retry_transparent_max_concurrent_streams.cc", + "tests/retry_transparent_not_sent_on_wire.cc", + "tests/retry_unref_before_finish.cc", + "tests/retry_unref_before_recv.cc", + "tests/server_finishes_request.cc", + "tests/server_streaming.cc", + "tests/shutdown_finishes_calls.cc", + "tests/shutdown_finishes_tags.cc", + "tests/simple_delayed_request.cc", + "tests/simple_metadata.cc", + "tests/simple_request.cc", + "tests/streaming_error_response.cc", + "tests/trailing_metadata.cc", + "tests/write_buffering.cc", + "tests/write_buffering_at_end.cc", +] + +END2END_TEST_DATA = [ + "//src/core/tsi/test_creds:ca.pem", + "//src/core/tsi/test_creds:server1.key", + "//src/core/tsi/test_creds:server1.pem", +] + grpc_cc_test( name = "core_end2end_tests", timeout = "long", srcs = [ "end2end_test_main.cc", - "tests/bad_ping.cc", - "tests/binary_metadata.cc", - "tests/call_creds.cc", - "tests/call_host_override.cc", - "tests/cancel_after_accept.cc", - "tests/cancel_after_client_done.cc", - "tests/cancel_after_invoke.cc", - "tests/cancel_after_round_trip.cc", - "tests/cancel_before_invoke.cc", - "tests/cancel_in_a_vacuum.cc", - "tests/cancel_with_status.cc", - "tests/channelz.cc", - "tests/client_streaming.cc", - "tests/compressed_payload.cc", - "tests/connectivity.cc", - "tests/default_host.cc", - "tests/disappearing_server.cc", - "tests/empty_batch.cc", - "tests/filter_causes_close.cc", - "tests/filter_context.cc", - "tests/filter_init_fails.cc", - "tests/filtered_metadata.cc", - "tests/graceful_server_shutdown.cc", - "tests/grpc_authz.cc", - "tests/high_initial_seqno.cc", - "tests/hpack_size.cc", - "tests/invoke_large_request.cc", - "tests/keepalive_timeout.cc", - "tests/large_metadata.cc", - "tests/max_concurrent_streams.cc", - "tests/max_connection_age.cc", - "tests/max_connection_idle.cc", - "tests/max_message_length.cc", - "tests/negative_deadline.cc", - "tests/no_logging.cc", - "tests/no_op.cc", - "tests/payload.cc", - "tests/ping.cc", - "tests/ping_pong_streaming.cc", - "tests/proxy_auth.cc", - "tests/registered_call.cc", - "tests/request_with_flags.cc", - "tests/request_with_payload.cc", - "tests/resource_quota_server.cc", - "tests/retry.cc", - "tests/retry_cancel_after_first_attempt_starts.cc", - "tests/retry_cancel_during_delay.cc", - "tests/retry_cancel_with_multiple_send_batches.cc", - "tests/retry_cancellation.cc", - "tests/retry_disabled.cc", - "tests/retry_exceeds_buffer_size_in_delay.cc", - "tests/retry_exceeds_buffer_size_in_initial_batch.cc", - "tests/retry_exceeds_buffer_size_in_subsequent_batch.cc", - "tests/retry_lb_drop.cc", - "tests/retry_lb_fail.cc", - "tests/retry_non_retriable_status.cc", - "tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc", - "tests/retry_per_attempt_recv_timeout.cc", - "tests/retry_per_attempt_recv_timeout_on_last_attempt.cc", - "tests/retry_recv_initial_metadata.cc", - "tests/retry_recv_message.cc", - "tests/retry_recv_message_replay.cc", - "tests/retry_recv_trailing_metadata_error.cc", - "tests/retry_send_initial_metadata_refs.cc", - "tests/retry_send_op_fails.cc", - "tests/retry_send_recv_batch.cc", - "tests/retry_server_pushback_delay.cc", - "tests/retry_server_pushback_disabled.cc", - "tests/retry_streaming.cc", - "tests/retry_streaming_after_commit.cc", - "tests/retry_streaming_succeeds_before_replay_finished.cc", - "tests/retry_throttled.cc", - "tests/retry_too_many_attempts.cc", - "tests/retry_transparent_goaway.cc", - "tests/retry_transparent_max_concurrent_streams.cc", - "tests/retry_transparent_not_sent_on_wire.cc", - "tests/retry_unref_before_finish.cc", - "tests/retry_unref_before_recv.cc", - "tests/server_finishes_request.cc", - "tests/server_streaming.cc", - "tests/shutdown_finishes_calls.cc", - "tests/shutdown_finishes_tags.cc", - "tests/simple_delayed_request.cc", - "tests/simple_metadata.cc", - "tests/simple_request.cc", - "tests/streaming_error_response.cc", - "tests/trailing_metadata.cc", - "tests/write_buffering.cc", - "tests/write_buffering_at_end.cc", - ], - data = [ - "//src/core/tsi/test_creds:ca.pem", - "//src/core/tsi/test_creds:server1.key", - "//src/core/tsi/test_creds:server1.pem", - ], + ] + END2END_TEST_SRCS, + data = END2END_TEST_DATA, external_deps = [ + "absl/functional:any_invocable", "absl/status", "absl/status:statusor", "absl/strings", @@ -472,7 +482,9 @@ grpc_cc_test( "h2_ssl_cert_test.cc", ], external_deps = [ + "absl/functional:any_invocable", "absl/memory", + "absl/meta:type_traits", "absl/strings", "absl/types:optional", "absl/types:variant", @@ -495,6 +507,7 @@ grpc_cc_test( "//src/core:channel_args", "//src/core:slice", "//src/core:time", + "//test/core/event_engine:event_engine_test_utils", "//test/core/util:grpc_test_util", ], ) @@ -556,3 +569,155 @@ grpc_cc_test( "//test/core/util:grpc_test_util", ], ) + +grpc_cc_binary( + name = "seed_end2end_corpus", + testonly = 1, + srcs = ["seed_end2end_corpus.cc"] + END2END_TEST_SRCS, + external_deps = [ + "absl/cleanup", + "absl/status", + "absl/status:statusor", + "absl/strings", + "absl/strings:str_format", + "absl/types:optional", + "gtest", + ], + deps = [ + "cq_verifier", + "end2end_test_lib", + "fixture_support", + "http_proxy", + "proxy", + "//:channel_stack_builder", + "//:config", + "//:config_vars", + "//:debug_location", + "//:exec_ctx", + "//:gpr", + "//:grpc_authorization_provider", + "//:grpc_public_hdrs", + "//:grpc_security_base", + "//:grpc_trace", + "//:grpc_unsecure", + "//:legacy_context", + "//:orphanable", + "//:promise", + "//:ref_counted_ptr", + "//:stats", + "//src/core:arena_promise", + "//src/core:bitset", + "//src/core:channel_args", + "//src/core:channel_fwd", + "//src/core:channel_init", + "//src/core:channel_stack_type", + "//src/core:closure", + "//src/core:error", + "//src/core:experiments", + "//src/core:grpc_authorization_base", + "//src/core:grpc_fake_credentials", + "//src/core:iomgr_port", + "//src/core:json", + "//src/core:lb_policy", + "//src/core:lb_policy_factory", + "//src/core:no_destruct", + "//src/core:notification", + "//src/core:slice", + "//src/core:stats_data", + "//src/core:status_helper", + "//src/core:time", + "//test/core/util:grpc_test_util", + "//test/core/util:test_lb_policies", + ], +) + +grpc_proto_library( + name = "end2end_test_fuzzer_proto", + srcs = ["end2end_test_fuzzer.proto"], + has_services = False, + deps = [ + "//test/core/event_engine/fuzzing_event_engine:fuzzing_event_engine_proto", + "//test/core/util:fuzz_config_vars_proto", + ], +) + +grpc_proto_fuzzer( + name = "core_end2end_test_fuzzer", + size = "enormous", + srcs = ["end2end_test_fuzzer.cc"] + END2END_TEST_SRCS, + corpus = "end2end_test_corpus", + data = END2END_TEST_DATA, + external_deps = [ + "absl/functional:any_invocable", + "absl/status", + "absl/status:statusor", + "absl/strings", + "absl/strings:str_format", + "absl/types:optional", + "gtest", + ], + language = "C++", + proto = None, + shard_count = 50, + tags = [ + "no_mac", + "no_windows", + ], + uses_event_engine = False, + uses_polling = False, + deps = [ + "cq_verifier", + "end2end_test_fuzzer_proto", + "end2end_test_lib", + "fixture_support", + "http_proxy", + "proxy", + "//:channel_stack_builder", + "//:config", + "//:config_vars", + "//:debug_location", + "//:exec_ctx", + "//:gpr", + "//:grpc", + "//:grpc_authorization_provider", + "//:grpc_public_hdrs", + "//:grpc_security_base", + "//:grpc_trace", + "//:iomgr_timer", + "//:legacy_context", + "//:orphanable", + "//:promise", + "//:ref_counted_ptr", + "//:stats", + "//src/core:arena_promise", + "//src/core:bitset", + "//src/core:channel_args", + "//src/core:channel_fwd", + "//src/core:channel_init", + "//src/core:channel_stack_type", + "//src/core:closure", + "//src/core:default_event_engine", + "//src/core:env", + "//src/core:error", + "//src/core:experiments", + "//src/core:grpc_authorization_base", + "//src/core:grpc_fake_credentials", + "//src/core:iomgr_port", + "//src/core:json", + "//src/core:lb_policy", + "//src/core:lb_policy_factory", + "//src/core:no_destruct", + "//src/core:notification", + "//src/core:slice", + "//src/core:stats_data", + "//src/core:status_helper", + "//src/core:time", + "//test/core/event_engine/fuzzing_event_engine", + "//test/core/event_engine/fuzzing_event_engine:fuzzing_event_engine_proto", + "//test/core/util:fuzz_config_vars", + "//test/core/util:fuzz_config_vars_proto", + "//test/core/util:grpc_test_util", + "//test/core/util:osa_distance", + "//test/core/util:test_lb_policies", + ], +) diff --git a/test/core/end2end/cq_verifier.cc b/test/core/end2end/cq_verifier.cc index 11308a46cb3..29b0f3a9065 100644 --- a/test/core/end2end/cq_verifier.cc +++ b/test/core/end2end/cq_verifier.cc @@ -197,9 +197,12 @@ std::string TagStr(void* tag) { namespace grpc_core { -CqVerifier::CqVerifier(grpc_completion_queue* cq, - absl::AnyInvocable fail) - : cq_(cq), fail_(std::move(fail)) {} +CqVerifier::CqVerifier( + grpc_completion_queue* cq, absl::AnyInvocable fail, + absl::AnyInvocable< + void(grpc_event_engine::experimental::EventEngine::Duration) const> + step_fn) + : cq_(cq), fail_(std::move(fail)), step_fn_(std::move(step_fn)) {} CqVerifier::~CqVerifier() { Verify(); } @@ -274,11 +277,26 @@ bool IsMaybe(const CqVerifier::ExpectedResult& r) { } } // namespace +grpc_event CqVerifier::Step(gpr_timespec deadline) { + if (step_fn_ != nullptr) { + while (true) { + grpc_event r = grpc_completion_queue_next( + cq_, gpr_inf_past(deadline.clock_type), nullptr); + if (r.type != GRPC_QUEUE_TIMEOUT) return r; + auto now = gpr_now(deadline.clock_type); + if (gpr_time_cmp(deadline, now) < 0) break; + step_fn_(Timestamp::FromTimespecRoundDown(deadline) - Timestamp::Now()); + } + return grpc_event{GRPC_QUEUE_TIMEOUT, 0, nullptr}; + } + return grpc_completion_queue_next(cq_, deadline, nullptr); +} + void CqVerifier::Verify(Duration timeout, SourceLocation location) { const gpr_timespec deadline = grpc_timeout_milliseconds_to_deadline(timeout.millis()); while (!expectations_.empty()) { - grpc_event ev = grpc_completion_queue_next(cq_, deadline, nullptr); + grpc_event ev = Step(deadline); if (ev.type == GRPC_QUEUE_TIMEOUT) break; if (ev.type != GRPC_OP_COMPLETE) { FailUnexpectedEvent(&ev, location); @@ -334,7 +352,7 @@ void CqVerifier::VerifyEmpty(Duration timeout, SourceLocation location) { const gpr_timespec deadline = gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), timeout.as_timespec()); GPR_ASSERT(expectations_.empty()); - grpc_event ev = grpc_completion_queue_next(cq_, deadline, nullptr); + grpc_event ev = Step(deadline); if (ev.type != GRPC_QUEUE_TIMEOUT) { FailUnexpectedEvent(&ev, location); } diff --git a/test/core/end2end/cq_verifier.h b/test/core/end2end/cq_verifier.h index 85f32351e8f..862cf718f48 100644 --- a/test/core/end2end/cq_verifier.h +++ b/test/core/end2end/cq_verifier.h @@ -28,8 +28,10 @@ #include "absl/functional/any_invocable.h" #include "absl/types/variant.h" +#include #include #include +#include #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/time.h" @@ -77,7 +79,10 @@ class CqVerifier { // will produce nicer failure messages. explicit CqVerifier( grpc_completion_queue* cq, - absl::AnyInvocable fail = FailUsingGprCrash); + absl::AnyInvocable fail = FailUsingGprCrash, + absl::AnyInvocable< + void(grpc_event_engine::experimental::EventEngine::Duration) const> + step_fn = nullptr); ~CqVerifier(); CqVerifier(const CqVerifier&) = delete; @@ -117,10 +122,14 @@ class CqVerifier { void FailUnexpectedEvent(grpc_event* ev, const SourceLocation& location) const; bool AllMaybes() const; + grpc_event Step(gpr_timespec deadline); grpc_completion_queue* const cq_; std::vector expectations_; - mutable absl::AnyInvocable fail_; + absl::AnyInvocable fail_; + absl::AnyInvocable + step_fn_; }; } // namespace grpc_core diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..de86bc52e4c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2FakeSecurityFullstack" +config_vars { + experiments: "tcp_frame_size_tuning" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2Fullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2Fullstack.textproto new file mode 100644 index 00000000000..d418b42888c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2Fullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2Fullstack" +config_vars { + experiments: "tcp_rcv_lowat" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackCompression.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackCompression.textproto new file mode 100644 index 00000000000..83241093746 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackCompression.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2FullstackCompression" +config_vars { + experiments: "peer_state_based_framing" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackNoRetry.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackNoRetry.textproto new file mode 100644 index 00000000000..ecd1569d0ed --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackNoRetry.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2FullstackNoRetry" +config_vars { + experiments: "flow_control_fixes" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackWithCensus.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackWithCensus.textproto new file mode 100644 index 00000000000..0e7c445b926 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2FullstackWithCensus.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2FullstackWithCensus" +config_vars { + experiments: "memory_pressure_controller" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2InsecureCredentials.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2InsecureCredentials.textproto new file mode 100644 index 00000000000..5e408e70f5d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2InsecureCredentials.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2InsecureCredentials" +config_vars { + experiments: "unconstrained_max_quota_buffer_size" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..d3f2fa43eb3 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SimplSslFullstackTls12" +config_vars { + experiments: "event_engine_client" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls13.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls13.textproto new file mode 100644 index 00000000000..5c2cdf52145 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimplSslFullstackTls13.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SimplSslFullstackTls13" +config_vars { + experiments: "monitoring_experiment" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslFullstack.textproto new file mode 100644 index 00000000000..d6501f6796e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslFullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SimpleSslFullstack" +config_vars { + experiments: "promise_based_client_call" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls12.textproto new file mode 100644 index 00000000000..6b573fcf560 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls12.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SimpleSslWithOauth2FullstackTls12" +config_vars { + experiments: "free_large_allocator" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls13.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls13.textproto new file mode 100644 index 00000000000..27d615a1fa7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SimpleSslWithOauth2FullstackTls13.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SimpleSslWithOauth2FullstackTls13" +config_vars { + experiments: "promise_based_server_call" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls12.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls12.textproto new file mode 100644 index 00000000000..280dbdff8c7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls12.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SslCredReloadTls12" +config_vars { + experiments: "transport_supplies_client_latency" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls13.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls13.textproto new file mode 100644 index 00000000000..97ae6e90390 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_CallHostOverride_Chttp2SslCredReloadTls13.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "CallHostOverride" +config: "Chttp2SslCredReloadTls13" +config_vars { + experiments: "event_engine_listener" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterAcceptWithServiceConfig_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterAcceptWithServiceConfig_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..6849a0ab0ef --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterAcceptWithServiceConfig_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "DeadlineAfterAcceptWithServiceConfig" +config: "Chttp2FakeSecurityFullstack" +config_vars { + experiments: "schedule_cancellation_over_write" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterRoundTripWithServiceConfig_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterRoundTripWithServiceConfig_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b5e96bfc431 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DeadlineAfterRoundTripWithServiceConfig_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "DeadlineAfterRoundTripWithServiceConfig" +config: "Chttp2FakeSecurityFullstack" +config_vars { + experiments: "trace_record_callops" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DefaultHost_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DefaultHost_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e09195a3e01 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DefaultHost_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "DefaultHost" +config: "Chttp2FakeSecurityFullstack" +config_vars { + experiments: "event_engine_dns" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DisappearingServer_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DisappearingServer_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7a802071e75 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_DisappearingServer_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,6 @@ +suite: "CoreClientChannelTest" +test: "DisappearingServer" +config: "Chttp2FakeSecurityFullstack" +config_vars { + experiments: "work_stealing" +} diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SimpleDelayedRequestShort_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SimpleDelayedRequestShort_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..341a5a3d16c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SimpleDelayedRequestShort_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreClientChannelTest" +test: "SimpleDelayedRequestShort" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SubchannelFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SubchannelFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..62603db6029 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreClientChannelTest_SubchannelFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreClientChannelTest" +test: "SubchannelFilterCallInitFails" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4e13ef5fe6e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterAccept" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Inproc.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Inproc.textproto new file mode 100644 index 00000000000..9d2ea521360 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterAccept_Inproc.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterAccept" +config: "Inproc" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterClientDone_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterClientDone_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..5c574685cd7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterClientDone_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterClientDone" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke3_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke3_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..22a0a060e4f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke3_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterInvoke3" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke4_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke4_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..33812591715 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke4_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterInvoke4" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke5_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke5_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..3e6ecbe4762 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke5_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterInvoke5" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke6_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke6_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7f21992d2d3 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterInvoke6_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterInvoke6" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ef7d53fc446 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineAfterRoundTrip" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineInAVacuum_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineInAVacuum_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c35a8bee238 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_DeadlineInAVacuum_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "DeadlineInAVacuum" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_NegativeDeadline_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_NegativeDeadline_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..09ca61c8a42 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreDeadlineTest_NegativeDeadline_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreDeadlineTest" +test: "NegativeDeadline" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e3ab5b18de7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BadFlagsOnRecvInitialMetadata" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvStatusOnClient_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvStatusOnClient_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d9638bc269d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnRecvStatusOnClient_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BadFlagsOnRecvStatusOnClient" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendCloseFromClient_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendCloseFromClient_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..dcfd9a5d686 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendCloseFromClient_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BadFlagsOnSendCloseFromClient" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendInitialMetadata_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendInitialMetadata_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d1cf9259666 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendInitialMetadata_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BadFlagsOnSendInitialMetadata" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendMessage_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendMessage_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b5a11101f95 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BadFlagsOnSendMessage_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BadFlagsOnSendMessage" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9137a31df39 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BinaryMetadataServerHttp2FallbackClientHttp2Fallback" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientTrueBinary_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientTrueBinary_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7978db5c99c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerHttp2FallbackClientTrueBinary_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BinaryMetadataServerHttp2FallbackClientTrueBinary" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..67282593869 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientHttp2Fallback_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BinaryMetadataServerTrueBinaryClientHttp2Fallback" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientTrueBinary_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientTrueBinary_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..77f26150424 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_BinaryMetadataServerTrueBinaryClientTrueBinary_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "BinaryMetadataServerTrueBinaryClientTrueBinary" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterAccept_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterAccept_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..1d5130ee67f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterAccept_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterAccept" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterClientDone_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterClientDone_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8f2d6471efb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterClientDone_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterClientDone" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke3_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke3_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..76477acc9a1 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke3_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterInvoke3" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke4_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke4_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c9f0b93a4d7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke4_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterInvoke4" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke5_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke5_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..3cc97434be1 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke5_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterInvoke5" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke6_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke6_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..07aaa9f4cbc --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterInvoke6_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterInvoke6" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..31303d06229 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelAfterRoundTrip_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelAfterRoundTrip" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke1_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke1_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8eb9304ab57 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke1_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelBeforeInvoke1" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke2_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke2_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..96811e12aab --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke2_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelBeforeInvoke2" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke3_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke3_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4d3dfe431fa --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke3_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelBeforeInvoke3" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke4_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke4_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..bd0e6e2f7af --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke4_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelBeforeInvoke4" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke5_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke5_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b216dbc45eb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke5_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelBeforeInvoke5" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke6_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke6_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..883d1548bbe --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelBeforeInvoke6_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelBeforeInvoke6" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelInAVacuum_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelInAVacuum_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..75ad1358143 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelInAVacuum_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelInAVacuum" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus1_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus1_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d533448d18d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus1_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelWithStatus1" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus2_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus2_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..21b1e5301b6 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus2_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelWithStatus2" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus3_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus3_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e3a14a8aef0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus3_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelWithStatus3" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus4_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus4_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..51510104672 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_CancelWithStatus4_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "CancelWithStatus4" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzDisabled_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzDisabled_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..215ca446a06 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzDisabled_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ChannelzDisabled" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzWithChannelTrace_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzWithChannelTrace_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..090487136c2 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ChannelzWithChannelTrace_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ChannelzWithChannelTrace" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Channelz_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Channelz_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4f2751ae462 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Channelz_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "Channelz" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e6972c97b41 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ClientFilterCallInitFails" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..94f72dba3c0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ClientStreaming0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming10_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming10_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..10e9a98d2ce --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming10_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ClientStreaming10" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming1_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming1_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7cc54e66b08 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming1_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ClientStreaming1" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming30_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming30_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..5b95c9bed03 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming30_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ClientStreaming30" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming3_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming3_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9b79667dac2 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ClientStreaming3_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ClientStreaming3" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ContentLengthIsFiltered_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ContentLengthIsFiltered_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a0577b7ae43 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ContentLengthIsFiltered_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ContentLengthIsFiltered" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EarlyServerShutdownFinishesInflightCalls_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EarlyServerShutdownFinishesInflightCalls_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..bc46a593baf --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EarlyServerShutdownFinishesInflightCalls_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "EarlyServerShutdownFinishesInflightCalls" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EmptyBatch_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EmptyBatch_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..26c3cb3eeff --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_EmptyBatch_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "EmptyBatch" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterCausesClose_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterCausesClose_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..47fecc47a70 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterCausesClose_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "FilterCausesClose" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterContext_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterContext_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..635074ad44e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_FilterContext_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "FilterContext" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Invoke10RegisteredCalls_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Invoke10RegisteredCalls_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c35b09c3510 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_Invoke10RegisteredCalls_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "Invoke10RegisteredCalls" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_InvokeRegisteredCall_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_InvokeRegisteredCall_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..50014f336c0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_InvokeRegisteredCall_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "InvokeRegisteredCall" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..0845e7bfb6c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnClientOnRequestViaChannelArg" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a6b1cebe36a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..06718770e3f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..82f77fb7191 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnClientOnResponseViaChannelArg" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..215a197e1f9 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..414f41ab070 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..420917d82a6 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnRequestViaChannelArg_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnServerOnRequestViaChannelArg" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..aabca600aa7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_MaxMessageLengthOnServerOnResponseViaChannelArg_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "MaxMessageLengthOnServerOnResponseViaChannelArg" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_NoOp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_NoOp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..62b43694c56 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_NoOp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "NoOp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming10_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming10_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a29ebedfc53 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming10_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "PingPongStreaming10" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming1_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming1_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a86e2531c98 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming1_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "PingPongStreaming1" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming30_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming30_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..567497a774a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming30_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "PingPongStreaming30" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming3_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming3_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..33e0ea50ddf --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_PingPongStreaming3_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "PingPongStreaming3" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_RequestWithPayload_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_RequestWithPayload_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..3ecf868b1ef --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_RequestWithPayload_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "RequestWithPayload" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7f3701f7d76 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFilterCallInitFails_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ServerFilterCallInitFails" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFinishesRequest_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFinishesRequest_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8590b3ef229 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ServerFinishesRequest_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ServerFinishesRequest" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ShutdownFinishesTags_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ShutdownFinishesTags_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..f48f49942d0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_ShutdownFinishesTags_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "ShutdownFinishesTags" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleMetadata_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleMetadata_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..0983c51c12c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleMetadata_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "SimpleMetadata" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest10_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest10_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9410022d3be --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest10_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "SimpleRequest10" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..729298800cc --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_SimpleRequest_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "SimpleRequest" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..5fc8cdf09cb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarly_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarly_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8eaa817d9ee --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponseRequestStatusEarly_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "StreamingErrorResponseRequestStatusEarly" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponse_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponse_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..911a5baf5f9 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_StreamingErrorResponse_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "StreamingErrorResponse" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_TrailingMetadata_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_TrailingMetadata_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..607d63047b2 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_TrailingMetadata_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "TrailingMetadata" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferHintAndNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferHintAndNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d736dc93558 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferHintAndNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "WriteBufferHintAndNoCompressAcceptedOnSendMessage" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferIntAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferIntAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c6db3c27122 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteBufferIntAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "WriteBufferIntAcceptedOnSendMessage" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteInternalCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteInternalCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..65a21b4133b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteInternalCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "WriteInternalCompressAcceptedOnSendMessage" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e2e72460041 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreEnd2endTest_WriteNoCompressAcceptedOnSendMessage_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreEnd2endTest" +test: "WriteNoCompressAcceptedOnSendMessage" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload10Times_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload10Times_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..12c3b242395 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload10Times_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreLargeSendTest" +test: "RequestResponseWithPayload10Times" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8707943ad3c --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/CoreLargeSendTest_RequestResponseWithPayload_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "CoreLargeSendTest" +test: "RequestResponseWithPayload" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..bdb936530e0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "DisabledAlgorithmDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..dfcc4405803 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_DisabledAlgorithmDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "DisabledAlgorithmDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..6024da0b65a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode0Decode0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode1000_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode1000_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9de5a6ff22b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode1000_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode0Decode1000" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode100_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode100_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ba81b3afbae --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode100_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode0Decode100" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode32768_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode32768_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..56547f97769 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode32768_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode0Decode32768" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4096_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4096_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e00aaca0f6d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4096_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode0Decode4096" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4194304_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4194304_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..f7f8f0bc2b0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode0Decode4194304_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode0Decode4194304" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..32341f7befd --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode1000Decode0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode1000_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode1000_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4db3016865e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode1000_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode1000Decode1000" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode100_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode100_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8ac116e2e33 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode100_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode1000Decode100" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode32768_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode32768_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b488241bfba --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode32768_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode1000Decode32768" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4096_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4096_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..6155741d933 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4096_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode1000Decode4096" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4194304_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4194304_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..00b1c0a5713 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode1000Decode4194304_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode1000Decode4194304" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..55afaf2d288 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode100Decode0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode1000_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode1000_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..889209c28ee --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode1000_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode100Decode1000" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode100_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode100_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..80115bbd029 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode100_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode100Decode100" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode32768_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode32768_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..eae10a558be --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode32768_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode100Decode32768" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4096_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4096_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..171edec8550 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4096_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode100Decode4096" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4194304_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4194304_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..0e328994dba --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode100Decode4194304_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode100Decode4194304" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..dd04f77999b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode32768Decode0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode1000_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode1000_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ea2975c17d9 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode1000_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode32768Decode1000" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode100_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode100_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ea4066d558a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode100_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode32768Decode100" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode32768_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode32768_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a4e48bbda55 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode32768_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode32768Decode32768" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4096_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4096_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b1abd153117 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4096_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode32768Decode4096" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4194304_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4194304_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9cceddb1688 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode32768Decode4194304_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode32768Decode4194304" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8e3f63e8da6 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4096Decode0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode1000_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode1000_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a7911402546 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode1000_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4096Decode1000" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode100_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode100_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..f02588d866a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode100_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4096Decode100" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode32768_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode32768_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..3551fdc84de --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode32768_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4096Decode32768" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4096_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4096_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ca03710114b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4096_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4096Decode4096" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4194304_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4194304_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..fbb36eef001 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4096Decode4194304_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4096Decode4194304" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode0_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode0_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..fb6737503b6 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode0_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4194304Decode0" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode1000_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode1000_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9ac4f9c6577 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode1000_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4194304Decode1000" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode100_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode100_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..0a1df8d27d8 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode100_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4194304Decode100" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode32768_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode32768_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d03cad233e4 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode32768_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4194304Decode32768" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4096_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4096_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b83c67ab50d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4096_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4194304Decode4096" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4194304_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4194304_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..38d3c104cd2 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_Encode4194304Decode4194304_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "Encode4194304Decode4194304" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_InvokeLargeRequest_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_InvokeLargeRequest_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..698b25aebf1 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_InvokeLargeRequest_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "InvokeLargeRequest" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_KeepaliveTimeout_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_KeepaliveTimeout_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..2209efbef9a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_KeepaliveTimeout_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "KeepaliveTimeout" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnFirst_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnFirst_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..96426232624 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnFirst_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "MaxConcurrentStreamsTimeoutOnFirst" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnSecond_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnSecond_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..43356b90818 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreamsTimeoutOnSecond_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "MaxConcurrentStreamsTimeoutOnSecond" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..930766d8835 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_MaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "MaxConcurrentStreams" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_ReadDelaysKeepalive_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_ReadDelaysKeepalive_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..93e442c18d0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_ReadDelaysKeepalive_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "ReadDelaysKeepalive" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..844ef5e2e29 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..030cf2eb547 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..571a7f56a26 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4e20525dfd5 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d3198580cc0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e2f16b670f0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..618611e6db4 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8b830c69b10 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..fd6b96d98cb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithExceptionallyUncompressedPayloadDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..397b8ffc58b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithExceptionallyUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithExceptionallyUncompressedPayloadDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataAboveHardLimit_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataAboveHardLimit_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..63e739870f8 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataAboveHardLimit_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataAboveHardLimit" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataBetweenSoftAndHardLimits_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataBetweenSoftAndHardLimits_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..58f81c954f9 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataBetweenSoftAndHardLimits_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataBetweenSoftAndHardLimits" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitBelowDefaultHard_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitBelowDefaultHard_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a1c7410c168 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitBelowDefaultHard_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataHardLimitBelowDefaultHard" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitOverridsDefaultSoft_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitOverridsDefaultSoft_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..232140f48b7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataHardLimitOverridsDefaultSoft_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataHardLimitOverridsDefaultSoft" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitAboveHardLimit_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitAboveHardLimit_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..5218c0ff12a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitAboveHardLimit_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataSoftLimitAboveHardLimit" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitBelowDefaultSoft_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitBelowDefaultSoft_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c828dc6c776 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitBelowDefaultSoft_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataSoftLimitBelowDefaultSoft" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitOverridesDefaultHard_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitOverridesDefaultHard_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..17f66a755cc --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataSoftLimitOverridesDefaultHard_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataSoftLimitOverridesDefaultHard" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataUnderSoftLimit_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataUnderSoftLimit_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c987ba76ff1 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithLargeMetadataUnderSoftLimit_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithLargeMetadataUnderSoftLimit" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..f6cc9adad9b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithSendMessageBeforeInitialMetadataDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..8bf7e773217 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithSendMessageBeforeInitialMetadataDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithSendMessageBeforeInitialMetadataDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..3b0a6fba81f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithServerLevelDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..0b30c9b7a4b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithServerLevelDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithServerLevelDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..03d7f341608 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInApp_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithUncompressedPayloadDecompressInApp" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..edceb8f89b4 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2SingleHopTest_RequestWithUncompressedPayloadDecompressInCore_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2SingleHopTest" +test: "RequestWithUncompressedPayloadDecompressInCore" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_GracefulServerShutdown_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_GracefulServerShutdown_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..0abe54b2d8a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_GracefulServerShutdown_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "GracefulServerShutdown" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ca015fbf90e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "HighInitialSeqno" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeForciblyClose_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeForciblyClose_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..98226ba784b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeForciblyClose_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "MaxAgeForciblyClose" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeGracefullyClose_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeGracefullyClose_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c38143a74e9 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_MaxAgeGracefullyClose_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "MaxAgeGracefullyClose" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnClientOnResponseWithCompression_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnClientOnResponseWithCompression_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..f40daa2c18b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnClientOnResponseWithCompression_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "MaxMessageLengthOnClientOnResponseWithCompression" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnServerOnRequestWithCompression_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnServerOnRequestWithCompression_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ca3d52971b5 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_MaxMessageLengthOnServerOnRequestWithCompression_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "MaxMessageLengthOnServerOnRequestWithCompression" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming10Messages_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming10Messages_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..15e25b192ee --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming10Messages_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "ServerStreaming10Messages" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreamingEmptyStream_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreamingEmptyStream_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e97ccfd39cc --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreamingEmptyStream_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "ServerStreamingEmptyStream" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..625f48ed468 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/Http2Test_ServerStreaming_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "Http2Test" +test: "ServerStreaming" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/NoLoggingTest_NoLoggingTest_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/NoLoggingTest_NoLoggingTest_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..17e2030f7f0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/NoLoggingTest_NoLoggingTest_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "NoLoggingTest" +test: "NoLoggingTest" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_FailToSendCallCreds_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_FailToSendCallCreds_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ca40310b07a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_FailToSendCallCreds_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsOnInsecureTest" +test: "FailToSendCallCreds" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b5af3efe705 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsOnInsecureTest" +test: "RequestResponseWithPayloadAndDeletedInsecureCallCreds" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..d8c4a278902 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsOnInsecureTest" +test: "RequestResponseWithPayloadAndInsecureCallCreds" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..fab59a55974 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsOnInsecureTest" +test: "RequestResponseWithPayloadAndOverriddenInsecureCallCreds" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestWithServerRejectingClientCreds_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestWithServerRejectingClientCreds_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..41a3a340697 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsOnInsecureTest_RequestWithServerRejectingClientCreds_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsOnInsecureTest" +test: "RequestWithServerRejectingClientCreds" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndCallCreds_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndCallCreds_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..9ad43c590c6 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndCallCreds_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsTest" +test: "RequestResponseWithPayloadAndCallCreds" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedCallCreds_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedCallCreds_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..423985dd07f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedCallCreds_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsTest" +test: "RequestResponseWithPayloadAndDeletedCallCreds" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..c4dd58ed6dc --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndDeletedInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsTest" +test: "RequestResponseWithPayloadAndDeletedInsecureCallCreds" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..ea267c0f816 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsTest" +test: "RequestResponseWithPayloadAndInsecureCallCreds" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenCallCreds_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenCallCreds_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..cdc9d9cdcaf --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenCallCreds_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsTest" +test: "RequestResponseWithPayloadAndOverriddenCallCreds" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..311a807b9e5 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/PerCallCredsTest_RequestResponseWithPayloadAndOverriddenInsecureCallCreds_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "PerCallCredsTest" +test: "RequestResponseWithPayloadAndOverriddenInsecureCallCreds" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/ResourceQuotaTest_ResourceQuota_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/ResourceQuotaTest_ResourceQuota_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..29c7c851dd8 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/ResourceQuotaTest_ResourceQuota_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "ResourceQuotaTest" +test: "ResourceQuota" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_BadPing_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_BadPing_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a0dd740cc72 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_BadPing_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "BadPing" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_ConnectivityWatch_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_ConnectivityWatch_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4f8ca7e776e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_ConnectivityWatch_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "ConnectivityWatch" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a0a107f7ee5 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_HighInitialSeqno_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "HighInitialSeqno" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_MaxConnectionIdle_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_MaxConnectionIdle_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..6609679a2e0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_MaxConnectionIdle_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "MaxConnectionIdle" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_Ping_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_Ping_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..2e7f51961c7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_Ping_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "Ping" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_PingsWithoutData_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_PingsWithoutData_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..03c9990177e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_PingsWithoutData_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "PingsWithoutData" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryHttp2Test_RetryTransparentMaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_RetryTransparentMaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..1152a001a5b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryHttp2Test_RetryTransparentMaxConcurrentStreams_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryHttp2Test" +test: "RetryTransparentMaxConcurrentStreams" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_CancelDuringDelay_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_CancelDuringDelay_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4050e826c54 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_CancelDuringDelay_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "CancelDuringDelay" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_DeadlineDuringDelay_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_DeadlineDuringDelay_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..1131def9fc4 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_DeadlineDuringDelay_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "DeadlineDuringDelay" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelAfterFirstAttemptStarts_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelAfterFirstAttemptStarts_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7a8c8fb4fbc --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelAfterFirstAttemptStarts_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryCancelAfterFirstAttemptStarts" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..c6481664a20 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancelWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryCancelWithMultipleSendBatches" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancellation_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancellation_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..21e03463dc2 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryCancellation_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryCancellation" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadlineWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadlineWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9011fcccdfd --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadlineWithMultipleSendBatches_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryDeadlineWithMultipleSendBatches" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadline_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadline_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..577b93889cb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryDeadline_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryDeadline" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryDisabled_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryDisabled_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..96a92a3ad49 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryDisabled_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryDisabled" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInDelay_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInDelay_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7501512222f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInDelay_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryExceedsBufferSizeInDelay" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInInitialBatch_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInInitialBatch_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b1df7dea295 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInInitialBatch_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryExceedsBufferSizeInInitialBatch" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInSubsequentBatch_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInSubsequentBatch_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..aecf09346da --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryExceedsBufferSizeInSubsequentBatch_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryExceedsBufferSizeInSubsequentBatch" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryLbDrop_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryLbDrop_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..83a7b41084f --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryLbDrop_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryLbDrop" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryLbFail_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryLbFail_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..5f4b95131a2 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryLbFail_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryLbFail" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b1df99cd1ce --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatus_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatus_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..462e8a3c67d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryNonRetriableStatus_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryNonRetriableStatus" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeoutOnLastAttempt_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeoutOnLastAttempt_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4d098ddacb0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeoutOnLastAttempt_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryPerAttemptRecvTimeoutOnLastAttempt" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeout_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeout_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..e4e98e68fe5 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryPerAttemptRecvTimeout_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryPerAttemptRecvTimeout" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..15573b9ce9e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvInitialMetadata_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryRecvInitialMetadata" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessageReplay_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessageReplay_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..ad62913d5cd --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessageReplay_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryRecvMessageReplay" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessage_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessage_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..25b5cada945 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvMessage_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryRecvMessage" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvTrailingMetadataError_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvTrailingMetadataError_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4e03e522ea1 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryRecvTrailingMetadataError_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryRecvTrailingMetadataError" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendInitialMetadataRefs_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendInitialMetadataRefs_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..cb3ea8f8deb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendInitialMetadataRefs_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetrySendInitialMetadataRefs" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendOpFails_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendOpFails_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4ea5bac564d --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendOpFails_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetrySendOpFails" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendRecvBatch_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendRecvBatch_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..501a178ce2a --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetrySendRecvBatch_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetrySendRecvBatch" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDelay_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDelay_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..2da33702d02 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDelay_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryServerPushbackDelay" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDisabled_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDisabled_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..4d720bc4f7b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryServerPushbackDisabled_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryServerPushbackDisabled" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamSucceedsBeforeReplayFinished_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamSucceedsBeforeReplayFinished_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..53baa8fecc0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamSucceedsBeforeReplayFinished_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryStreamSucceedsBeforeReplayFinished" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamingAfterCommit_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamingAfterCommit_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..f44630b5950 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreamingAfterCommit_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryStreamingAfterCommit" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreaming_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreaming_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..1fe633455aa --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryStreaming_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryStreaming" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryThrottled_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryThrottled_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..502e1cd30ac --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryThrottled_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryThrottled" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryTooManyAttempts_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryTooManyAttempts_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..9d98f586e01 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryTooManyAttempts_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryTooManyAttempts" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryTransparentNotSentOnWire_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryTransparentNotSentOnWire_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a834e34ac4e --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryTransparentNotSentOnWire_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryTransparentNotSentOnWire" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_RetryUnrefBeforeFinish_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_RetryUnrefBeforeFinish_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..7f586b39809 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_RetryUnrefBeforeFinish_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "RetryUnrefBeforeFinish" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_Retry_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_Retry_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..3ba2c1f3cb1 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_Retry_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "Retry" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_TransparentGoaway_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_TransparentGoaway_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..fcb0a72c0d9 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_TransparentGoaway_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "TransparentGoaway" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/RetryTest_UnrefBeforeRecv_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/RetryTest_UnrefBeforeRecv_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..95f30030ff7 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/RetryTest_UnrefBeforeRecv_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "RetryTest" +test: "UnrefBeforeRecv" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..73a61d9e7af --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "FileWatcherInitAllowAuthorizedRequest" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..820dbfe9e8b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "FileWatcherInitDenyRequestNoMatchInPolicy" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..bfa32862c1b --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "FileWatcherInitDenyUnauthorizedRequest" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInvalidPolicySkipReload_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInvalidPolicySkipReload_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..5cb72860771 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherInvalidPolicySkipReload_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "FileWatcherInvalidPolicySkipReload" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherRecoversFromFailure_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherRecoversFromFailure_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..5c3ec21ac44 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherRecoversFromFailure_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "FileWatcherRecoversFromFailure" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherValidPolicyReload_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherValidPolicyReload_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..219656e50b0 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_FileWatcherValidPolicyReload_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "FileWatcherValidPolicyReload" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..ffcd7729f76 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitAllowAuthorizedRequest_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "StaticInitAllowAuthorizedRequest" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..5e95eed2a45 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyRequestNoMatchInPolicy_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "StaticInitDenyRequestNoMatchInPolicy" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto new file mode 100644 index 00000000000..f4c20e5dfa6 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/SecureEnd2endTest_StaticInitDenyUnauthorizedRequest_Chttp2SimplSslFullstackTls12.textproto @@ -0,0 +1,3 @@ +suite: "SecureEnd2endTest" +test: "StaticInitDenyUnauthorizedRequest" +config: "Chttp2SimplSslFullstackTls12" diff --git a/test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingAtEnd_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingAtEnd_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..b3da24ac9dd --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingAtEnd_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "WriteBufferingTest" +test: "WriteBufferingAtEnd" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingWorks_Chttp2FakeSecurityFullstack.textproto b/test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingWorks_Chttp2FakeSecurityFullstack.textproto new file mode 100644 index 00000000000..a656ffbcfcb --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/WriteBufferingTest_WriteBufferingWorks_Chttp2FakeSecurityFullstack.textproto @@ -0,0 +1,3 @@ +suite: "WriteBufferingTest" +test: "WriteBufferingWorks" +config: "Chttp2FakeSecurityFullstack" diff --git a/test/core/end2end/end2end_test_corpus/crash-1b8e4624f764fe3793119eec935c852b97565ec8 b/test/core/end2end/end2end_test_corpus/crash-1b8e4624f764fe3793119eec935c852b97565ec8 new file mode 100644 index 00000000000..7a3f6d616e8 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/crash-1b8e4624f764fe3793119eec935c852b97565ec8 @@ -0,0 +1,6 @@ +suite: "Http2SingleHopTest" +test: "RequestWithExceptionallyUncompressedPayloadDecompressInCore" +config: "Chttp2SslCredReloadTls12" +event_engine_actions { + assign_ports: 0 +} diff --git a/test/core/end2end/end2end_test_fuzzer.cc b/test/core/end2end/end2end_test_fuzzer.cc new file mode 100644 index 00000000000..d2a8ae3e74c --- /dev/null +++ b/test/core/end2end/end2end_test_fuzzer.cc @@ -0,0 +1,163 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "absl/functional/any_invocable.h" +#include "absl/strings/str_cat.h" +#include "absl/strings/string_view.h" +#include "absl/types/optional.h" + +#include +#include + +#include "src/core/lib/config/config_vars.h" +#include "src/core/lib/event_engine/default_event_engine.h" +#include "src/core/lib/experiments/config.h" +#include "src/core/lib/gprpp/env.h" +#include "src/core/lib/iomgr/exec_ctx.h" +#include "src/core/lib/iomgr/executor.h" +#include "src/core/lib/iomgr/timer_manager.h" +#include "src/libfuzzer/libfuzzer_macro.h" +#include "test/core/end2end/end2end_test_fuzzer.pb.h" +#include "test/core/end2end/end2end_tests.h" +#include "test/core/end2end/fixtures/h2_tls_common.h" +#include "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h" +#include "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h" +#include "test/core/util/fuzz_config_vars.h" +#include "test/core/util/fuzz_config_vars.pb.h" +#include "test/core/util/osa_distance.h" + +using ::grpc_event_engine::experimental::FuzzingEventEngine; +using ::grpc_event_engine::experimental::GetDefaultEventEngine; + +namespace grpc_event_engine { +namespace experimental { +extern bool g_event_engine_supports_fd; +} +} // namespace grpc_event_engine + +bool squelch = true; +static void dont_log(gpr_log_func_args* /*args*/) {} + +int force_experiments = []() { + grpc_event_engine::experimental::g_event_engine_supports_fd = false; + grpc_core::ForceEnableExperiment("event_engine_client", true); + grpc_core::ForceEnableExperiment("event_engine_listener", true); + return 1; +}(); + +DEFINE_PROTO_FUZZER(const core_end2end_test_fuzzer::Msg& msg) { + grpc_core::g_is_fuzzing_core_e2e_tests = true; + + struct Test { + std::string name; + absl::AnyInvocable() const> + factory; + }; + + static const auto all_tests = + grpc_core::CoreEnd2endTestRegistry::Get().AllTests(); + static const auto tests = []() { + auto only_suite = grpc_core::GetEnv("GRPC_TEST_FUZZER_SUITE"); + auto only_test = grpc_core::GetEnv("GRPC_TEST_FUZZER_TEST"); + auto only_config = grpc_core::GetEnv("GRPC_TEST_FUZZER_CONFIG"); + std::vector tests; + for (const auto& test : all_tests) { + if (test.config->feature_mask & FEATURE_MASK_DO_NOT_FUZZ) continue; + if (only_suite.has_value() && test.suite != only_suite.value()) continue; + if (only_test.has_value() && test.name != only_test.value()) continue; + if (only_config.has_value() && test.config->name != only_config.value()) { + continue; + } + tests.emplace_back( + Test{absl::StrCat(test.suite, ".", test.name, "/", test.config->name), + [&test]() { + return std::unique_ptr( + test.make_test(test.config)); + }}); + } + GPR_ASSERT(!tests.empty()); + return tests; + }(); + static const auto only_experiment = + grpc_core::GetEnv("GRPC_TEST_FUZZER_EXPERIMENT"); + + if (squelch && !grpc_core::GetEnv("GRPC_TRACE_FUZZER").has_value()) { + gpr_set_log_function(dont_log); + } + + auto test_name = + absl::StrCat(msg.suite(), ".", msg.test(), "/", msg.config()); + size_t best_test = 0; + for (size_t i = 0; i < tests.size(); i++) { + if (grpc_core::OsaDistance(test_name, tests[i].name) < + grpc_core::OsaDistance(test_name, tests[best_test].name)) { + best_test = i; + } + } + + if (only_experiment.has_value() && + msg.config_vars().experiments() != only_experiment.value()) { + return; + } + + // TODO(ctiller): make this per fixture? + grpc_core::ConfigVars::Overrides overrides = + grpc_core::OverridesFromFuzzConfigVars(msg.config_vars()); + overrides.default_ssl_roots_file_path = CA_CERT_PATH; + grpc_core::ConfigVars::SetOverrides(overrides); + grpc_event_engine::experimental::SetEventEngineFactory( + [actions = msg.event_engine_actions()]() { + FuzzingEventEngine::Options options; + options.max_delay_run_after = std::chrono::milliseconds(1500); + return std::make_unique(options, actions); + }); + auto engine = + std::dynamic_pointer_cast(GetDefaultEventEngine()); + + auto test = tests[best_test].factory(); + test->SetCrashOnStepFailure(); + test->SetQuiesceEventEngine( + [](std::shared_ptr&& ee) { + static_cast(ee.get())->TickUntilIdle(); + }); + test->SetCqVerifierStepFn( + [engine = std::move(engine)]( + grpc_event_engine::experimental::EventEngine::Duration max_step) { + grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; + grpc_core::ExecCtx exec_ctx; + engine->Tick(max_step); + grpc_timer_manager_tick(); + }); + test->SetPostGrpcInitFunc([]() { + grpc_timer_manager_set_threading(false); + grpc_core::ExecCtx exec_ctx; + grpc_core::Executor::SetThreadingAll(false); + }); + test->SetUp(); + test->RunTest(); + test->TearDown(); + GPR_ASSERT(!::testing::Test::HasFailure()); +} diff --git a/test/core/end2end/end2end_test_fuzzer.proto b/test/core/end2end/end2end_test_fuzzer.proto new file mode 100644 index 00000000000..596f844a770 --- /dev/null +++ b/test/core/end2end/end2end_test_fuzzer.proto @@ -0,0 +1,29 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package core_end2end_test_fuzzer; + +import "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto"; +import "test/core/util/fuzz_config_vars.proto"; + +message Msg { + string suite = 1; + string test = 2; + string config = 3; + + fuzzing_event_engine.Actions event_engine_actions = 10; + grpc.testing.FuzzConfigVars config_vars = 11; +} diff --git a/test/core/end2end/end2end_test_main.cc b/test/core/end2end/end2end_test_main.cc index 0cc2c1a5ef5..158c273f404 100644 --- a/test/core/end2end/end2end_test_main.cc +++ b/test/core/end2end/end2end_test_main.cc @@ -12,1076 +12,19 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include -#include - -#include -#include -#include -#include -#include -#include -#include #include -#include #include -#include "absl/status/status.h" -#include "absl/strings/str_format.h" +#include "absl/functional/any_invocable.h" +#include "absl/strings/str_cat.h" #include "absl/types/optional.h" #include "gtest/gtest.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "src/core/lib/channel/channel_args.h" #include "src/core/lib/config/config_vars.h" -#include "src/core/lib/debug/trace.h" -#include "src/core/lib/experiments/experiments.h" -#include "src/core/lib/gprpp/host_port.h" -#include "src/core/lib/gprpp/no_destruct.h" -#include "src/core/lib/iomgr/error.h" -#include "src/core/lib/iomgr/exec_ctx.h" -#include "src/core/lib/iomgr/load_file.h" -#include "src/core/lib/iomgr/port.h" -#include "src/core/lib/security/credentials/fake/fake_credentials.h" #include "test/core/end2end/end2end_tests.h" -#include "test/core/end2end/fixtures/h2_oauth2_common.h" -#include "test/core/end2end/fixtures/h2_ssl_cred_reload_fixture.h" -#include "test/core/end2end/fixtures/h2_ssl_tls_common.h" #include "test/core/end2end/fixtures/h2_tls_common.h" -#include "test/core/end2end/fixtures/http_proxy_fixture.h" -#include "test/core/end2end/fixtures/inproc_fixture.h" -#include "test/core/end2end/fixtures/local_util.h" -#include "test/core/end2end/fixtures/proxy.h" -#include "test/core/end2end/fixtures/secure_fixture.h" -#include "test/core/end2end/fixtures/sockpair_fixture.h" -#include "test/core/util/port.h" #include "test/core/util/test_config.h" -// IWYU pragma: no_include - -#ifdef GRPC_POSIX_SOCKET -#include - -#include "src/core/lib/iomgr/socket_utils_posix.h" -#include "src/core/lib/iomgr/unix_sockets_posix.h" -#endif - -#ifdef GRPC_POSIX_WAKEUP_FD -#include "src/core/lib/iomgr/wakeup_fd_posix.h" -#endif - -#define CA_CERT_PATH "src/core/tsi/test_creds/ca.pem" -#define SERVER_CERT_PATH "src/core/tsi/test_creds/server1.pem" -#define SERVER_KEY_PATH "src/core/tsi/test_creds/server1.key" - -namespace grpc_core { - -namespace { - -std::atomic unique{0}; - -void ProcessAuthFailure(void* state, grpc_auth_context* /*ctx*/, - const grpc_metadata* /*md*/, size_t /*md_count*/, - grpc_process_auth_metadata_done_cb cb, - void* user_data) { - GPR_ASSERT(state == nullptr); - cb(user_data, nullptr, 0, nullptr, 0, GRPC_STATUS_UNAUTHENTICATED, nullptr); -} - -void AddFailAuthCheckIfNeeded(const ChannelArgs& args, - grpc_server_credentials* creds) { - if (args.Contains(FAIL_AUTH_CHECK_SERVER_ARG_NAME)) { - grpc_auth_metadata_processor processor = {ProcessAuthFailure, nullptr, - nullptr}; - grpc_server_credentials_set_auth_metadata_processor(creds, processor); - } -} - -} // namespace - -class CensusFixture : public CoreTestFixture { - private: - grpc_server* MakeServer(const ChannelArgs& args) override { - grpc_server_credentials* server_creds = - grpc_insecure_server_credentials_create(); - auto* server = grpc_server_create( - args.Set(GRPC_ARG_ENABLE_CENSUS, true).ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - GPR_ASSERT( - grpc_server_add_http2_port(server, localaddr_.c_str(), server_creds)); - grpc_server_credentials_release(server_creds); - grpc_server_start(server); - return server; - } - grpc_channel* MakeClient(const ChannelArgs& args) override { - auto* creds = grpc_insecure_credentials_create(); - auto* client = - grpc_channel_create(localaddr_.c_str(), creds, - args.Set(GRPC_ARG_ENABLE_CENSUS, true).ToC().get()); - grpc_channel_credentials_release(creds); - return client; - } - const std::string localaddr_ = - JoinHostPort("localhost", grpc_pick_unused_port_or_die()); -}; - -class CompressionFixture : public CoreTestFixture { - private: - grpc_server* MakeServer(const ChannelArgs& args) override { - auto* server = grpc_server_create( - args.SetIfUnset(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, - GRPC_COMPRESS_GZIP) - .ToC() - .get(), - nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - grpc_server_credentials* server_creds = - grpc_insecure_server_credentials_create(); - GPR_ASSERT( - grpc_server_add_http2_port(server, localaddr_.c_str(), server_creds)); - grpc_server_credentials_release(server_creds); - grpc_server_start(server); - return server; - } - grpc_channel* MakeClient(const ChannelArgs& args) override { - grpc_channel_credentials* creds = grpc_insecure_credentials_create(); - auto* client = grpc_channel_create( - localaddr_.c_str(), creds, - args.SetIfUnset(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, - GRPC_COMPRESS_GZIP) - .ToC() - .get()); - grpc_channel_credentials_release(creds); - return client; - } - - std::string localaddr_ = - JoinHostPort("localhost", grpc_pick_unused_port_or_die()); -}; - -class FakesecFixture : public SecureFixture { - private: - grpc_channel_credentials* MakeClientCreds(const ChannelArgs&) override { - return grpc_fake_transport_security_credentials_create(); - } - grpc_server_credentials* MakeServerCreds(const ChannelArgs& args) override { - grpc_server_credentials* fake_ts_creds = - grpc_fake_transport_security_server_credentials_create(); - AddFailAuthCheckIfNeeded(args, fake_ts_creds); - return fake_ts_creds; - } -}; - -class InsecureCredsFixture : public InsecureFixture { - private: - grpc_server_credentials* MakeServerCreds(const ChannelArgs& args) override { - auto* creds = grpc_insecure_server_credentials_create(); - AddFailAuthCheckIfNeeded(args, creds); - return creds; - } -}; - -class SockpairWithMinstackFixture : public SockpairFixture { - public: - using SockpairFixture::SockpairFixture; - - private: - ChannelArgs MutateClientArgs(ChannelArgs args) override { - return args.Set(GRPC_ARG_MINIMAL_STACK, true); - } - ChannelArgs MutateServerArgs(ChannelArgs args) override { - return args.Set(GRPC_ARG_MINIMAL_STACK, true); - } -}; - -class Sockpair1Byte : public SockpairFixture { - public: - Sockpair1Byte() - : SockpairFixture(ChannelArgs() - .Set(GRPC_ARG_TCP_READ_CHUNK_SIZE, 1) - .Set(GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE, 1) - .Set(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE, 1)) { - g_fixture_slowdown_factor = 2; - } - ~Sockpair1Byte() override { g_fixture_slowdown_factor = 1; } - - private: - ChannelArgs MutateClientArgs(ChannelArgs args) override { - return args.Set(GRPC_ARG_MINIMAL_STACK, true); - } - ChannelArgs MutateServerArgs(ChannelArgs args) override { - return args.Set(GRPC_ARG_MINIMAL_STACK, true); - } -}; - -#ifdef GRPC_POSIX_SOCKET - -class FdFixture : public CoreTestFixture { - public: - FdFixture() { create_sockets(fd_pair_); } - - private: - grpc_server* MakeServer(const ChannelArgs& args) override { - ExecCtx exec_ctx; - auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - grpc_server_start(server); - grpc_server_credentials* creds = grpc_insecure_server_credentials_create(); - grpc_server_add_channel_from_fd(server, fd_pair_[1], creds); - grpc_server_credentials_release(creds); - return server; - } - grpc_channel* MakeClient(const ChannelArgs& args) override { - ExecCtx exec_ctx; - grpc_channel_credentials* creds = grpc_insecure_credentials_create(); - auto* client = grpc_channel_create_from_fd("fixture_client", fd_pair_[0], - creds, args.ToC().get()); - grpc_channel_credentials_release(creds); - return client; - } - - static void create_sockets(int sv[2]) { - int flags; - grpc_create_socketpair_if_unix(sv); - flags = fcntl(sv[0], F_GETFL, 0); - GPR_ASSERT(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK) == 0); - flags = fcntl(sv[1], F_GETFL, 0); - GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0); - GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv[0]) == - absl::OkStatus()); - GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == - absl::OkStatus()); - } - - int fd_pair_[2]; -}; -#endif - -class NoRetryFixture : public InsecureFixture { - private: - ChannelArgs MutateClientArgs(ChannelArgs args) override { - return args.Set(GRPC_ARG_ENABLE_RETRIES, false); - } -}; - -class HttpProxyFilter : public CoreTestFixture { - public: - explicit HttpProxyFilter(const ChannelArgs& client_args) - : proxy_(grpc_end2end_http_proxy_create(client_args.ToC().get())) {} - ~HttpProxyFilter() override { - // Need to shut down the proxy users before closing the proxy (otherwise we - // become stuck). - ShutdownClient(); - ShutdownServer(); - grpc_end2end_http_proxy_destroy(proxy_); - } - - private: - grpc_server* MakeServer(const ChannelArgs& args) override { - auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - grpc_server_credentials* server_creds = - grpc_insecure_server_credentials_create(); - GPR_ASSERT( - grpc_server_add_http2_port(server, server_addr_.c_str(), server_creds)); - grpc_server_credentials_release(server_creds); - grpc_server_start(server); - return server; - } - - grpc_channel* MakeClient(const ChannelArgs& args) override { - // If testing for proxy auth, add credentials to proxy uri - absl::optional proxy_auth_str = - args.GetOwnedString(GRPC_ARG_HTTP_PROXY_AUTH_CREDS); - std::string proxy_uri; - if (!proxy_auth_str.has_value()) { - proxy_uri = absl::StrFormat( - "http://%s", grpc_end2end_http_proxy_get_proxy_name(proxy_)); - } else { - proxy_uri = - absl::StrFormat("http://%s@%s", proxy_auth_str->c_str(), - grpc_end2end_http_proxy_get_proxy_name(proxy_)); - } - grpc_channel_credentials* creds = grpc_insecure_credentials_create(); - auto* client = grpc_channel_create( - server_addr_.c_str(), creds, - args.Set(GRPC_ARG_HTTP_PROXY, proxy_uri).ToC().get()); - grpc_channel_credentials_release(creds); - GPR_ASSERT(client); - return client; - } - - std::string server_addr_ = - JoinHostPort("localhost", grpc_pick_unused_port_or_die()); - grpc_end2end_http_proxy* proxy_; -}; - -class ProxyFixture : public CoreTestFixture { - public: - ProxyFixture(const ChannelArgs& client_args, const ChannelArgs& server_args) - : proxy_(grpc_end2end_proxy_create(&proxy_def_, client_args.ToC().get(), - server_args.ToC().get())) {} - ~ProxyFixture() override { grpc_end2end_proxy_destroy(proxy_); } - - private: - static grpc_server* CreateProxyServer(const char* port, - const grpc_channel_args* server_args) { - grpc_server* s = grpc_server_create(server_args, nullptr); - grpc_server_credentials* server_creds = - grpc_insecure_server_credentials_create(); - GPR_ASSERT(grpc_server_add_http2_port(s, port, server_creds)); - grpc_server_credentials_release(server_creds); - return s; - } - - static grpc_channel* CreateProxyClient(const char* target, - const grpc_channel_args* client_args) { - grpc_channel_credentials* creds = grpc_insecure_credentials_create(); - grpc_channel* channel = grpc_channel_create(target, creds, client_args); - grpc_channel_credentials_release(creds); - return channel; - } - - grpc_server* MakeServer(const ChannelArgs& args) override { - auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - grpc_server_credentials* server_creds = - grpc_insecure_server_credentials_create(); - GPR_ASSERT(grpc_server_add_http2_port( - server, grpc_end2end_proxy_get_server_port(proxy_), server_creds)); - grpc_server_credentials_release(server_creds); - grpc_server_start(server); - return server; - } - - grpc_channel* MakeClient(const ChannelArgs& args) override { - grpc_channel_credentials* creds = grpc_insecure_credentials_create(); - auto* client = grpc_channel_create( - grpc_end2end_proxy_get_client_target(proxy_), creds, args.ToC().get()); - grpc_channel_credentials_release(creds); - GPR_ASSERT(client); - return client; - } - const grpc_end2end_proxy_def proxy_def_ = {CreateProxyServer, - CreateProxyClient}; - grpc_end2end_proxy* proxy_; -}; - -class SslProxyFixture : public CoreTestFixture { - public: - SslProxyFixture(const ChannelArgs& client_args, - const ChannelArgs& server_args) - : proxy_(grpc_end2end_proxy_create(&proxy_def_, client_args.ToC().get(), - server_args.ToC().get())) {} - ~SslProxyFixture() override { grpc_end2end_proxy_destroy(proxy_); } - - private: - static grpc_server* CreateProxyServer(const char* port, - const grpc_channel_args* server_args) { - grpc_server* s = grpc_server_create(server_args, nullptr); - grpc_slice cert_slice, key_slice; - GPR_ASSERT(GRPC_LOG_IF_ERROR( - "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice))); - GPR_ASSERT(GRPC_LOG_IF_ERROR( - "load_file", grpc_load_file(SERVER_KEY_PATH, 1, &key_slice))); - const char* server_cert = - reinterpret_cast GRPC_SLICE_START_PTR(cert_slice); - const char* server_key = - reinterpret_cast GRPC_SLICE_START_PTR(key_slice); - grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert}; - grpc_server_credentials* ssl_creds = grpc_ssl_server_credentials_create( - nullptr, &pem_key_cert_pair, 1, 0, nullptr); - grpc_slice_unref(cert_slice); - grpc_slice_unref(key_slice); - GPR_ASSERT(grpc_server_add_http2_port(s, port, ssl_creds)); - grpc_server_credentials_release(ssl_creds); - return s; - } - - static grpc_channel* CreateProxyClient(const char* target, - const grpc_channel_args* client_args) { - grpc_channel* channel; - grpc_channel_credentials* ssl_creds = - grpc_ssl_credentials_create(nullptr, nullptr, nullptr, nullptr); - grpc_arg ssl_name_override = { - GRPC_ARG_STRING, - const_cast(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG), - {const_cast("foo.test.google.fr")}}; - const grpc_channel_args* new_client_args = - grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); - channel = grpc_channel_create(target, ssl_creds, new_client_args); - grpc_channel_credentials_release(ssl_creds); - { - ExecCtx exec_ctx; - grpc_channel_args_destroy(new_client_args); - } - return channel; - } - - grpc_server* MakeServer(const ChannelArgs& args) override { - grpc_slice cert_slice, key_slice; - GPR_ASSERT(GRPC_LOG_IF_ERROR( - "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice))); - GPR_ASSERT(GRPC_LOG_IF_ERROR( - "load_file", grpc_load_file(SERVER_KEY_PATH, 1, &key_slice))); - const char* server_cert = - reinterpret_cast GRPC_SLICE_START_PTR(cert_slice); - const char* server_key = - reinterpret_cast GRPC_SLICE_START_PTR(key_slice); - grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert}; - grpc_server_credentials* ssl_creds = grpc_ssl_server_credentials_create( - nullptr, &pem_key_cert_pair, 1, 0, nullptr); - grpc_slice_unref(cert_slice); - grpc_slice_unref(key_slice); - if (args.Contains(FAIL_AUTH_CHECK_SERVER_ARG_NAME)) { - grpc_auth_metadata_processor processor = {ProcessAuthFailure, nullptr, - nullptr}; - grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor); - } - - auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - GPR_ASSERT(grpc_server_add_http2_port( - server, grpc_end2end_proxy_get_server_port(proxy_), ssl_creds)); - grpc_server_credentials_release(ssl_creds); - grpc_server_start(server); - return server; - } - - grpc_channel* MakeClient(const ChannelArgs& args) override { - grpc_channel_credentials* ssl_creds = - grpc_ssl_credentials_create(nullptr, nullptr, nullptr, nullptr); - auto* client = grpc_channel_create( - grpc_end2end_proxy_get_client_target(proxy_), ssl_creds, - args.Set(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, "foo.test.google.fr") - .ToC() - .get()); - GPR_ASSERT(client != nullptr); - grpc_channel_credentials_release(ssl_creds); - return client; - } - const grpc_end2end_proxy_def proxy_def_ = {CreateProxyServer, - CreateProxyClient}; - grpc_end2end_proxy* proxy_; -}; - -class FixtureWithTracing final : public CoreTestFixture { - public: - explicit FixtureWithTracing(std::unique_ptr fixture) - : fixture_(std::move(fixture)) { - // g_fixture_slowdown_factor = 10; - EXPECT_FALSE(grpc_tracer_set_enabled("doesnt-exist", 0)); - EXPECT_TRUE(grpc_tracer_set_enabled("http", 1)); - EXPECT_TRUE(grpc_tracer_set_enabled("all", 1)); - } - ~FixtureWithTracing() override { - saved_trace_flags_.Restore(); - // g_fixture_slowdown_factor = 1; - } - - grpc_server* MakeServer(const ChannelArgs& args) override { - return fixture_->MakeServer(args); - } - - grpc_channel* MakeClient(const ChannelArgs& args) override { - return fixture_->MakeClient(args); - } - - private: - SavedTraceFlags saved_trace_flags_; - std::unique_ptr fixture_; -}; - -#ifdef GRPC_POSIX_WAKEUP_FD -class InsecureFixtureWithPipeForWakeupFd : public InsecureFixture { - public: - InsecureFixtureWithPipeForWakeupFd() - : old_value_(std::exchange(grpc_allow_specialized_wakeup_fd, 0)) {} - - ~InsecureFixtureWithPipeForWakeupFd() override { - grpc_allow_specialized_wakeup_fd = old_value_; - } - - private: - const int old_value_; -}; -#endif - -std::vector AllConfigs() { - std::vector configs { -#ifdef GRPC_POSIX_SOCKET - CoreTestConfiguration{"Chttp2Fd", FEATURE_MASK_IS_HTTP2, nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(); - }}, -#endif - CoreTestConfiguration{ - "Chttp2FakeSecurityFullstack", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(); - }}, - CoreTestConfiguration{ - "Chttp2Fullstack", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - return std::make_unique(); - }}, - CoreTestConfiguration{ - "Chttp2FullstackCompression", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(); - }}, -#ifdef GPR_LINUX - CoreTestConfiguration{ - "Chttp2FullstackLocalAbstractUdsPercentEncoded", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); - return std::make_unique( - absl::StrFormat( - "unix-abstract:grpc_fullstack_test.%%00.%d.%" PRId64 - ".%" PRId32 ".%d", - getpid(), now.tv_sec, now.tv_nsec, - unique.fetch_add(1, std::memory_order_relaxed)), - UDS); - }}, -#endif - CoreTestConfiguration{"Chttp2FullstackLocalIpv4", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - int port = grpc_pick_unused_port_or_die(); - return std::make_unique( - JoinHostPort("127.0.0.1", port), LOCAL_TCP); - }}, - CoreTestConfiguration{"Chttp2FullstackLocalIpv6", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - int port = grpc_pick_unused_port_or_die(); - return std::make_unique( - JoinHostPort("[::1]", port), LOCAL_TCP); - }}, -#ifdef GRPC_HAVE_UNIX_SOCKET - CoreTestConfiguration{ - "Chttp2FullstackLocalUdsPercentEncoded", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); - return std::make_unique( - absl::StrFormat( - "unix:/tmp/grpc_fullstack_test.%%25.%d.%" PRId64 - ".%" PRId32 ".%d", - getpid(), now.tv_sec, now.tv_nsec, - unique.fetch_add(1, std::memory_order_relaxed)), - UDS); - }}, - CoreTestConfiguration{ - "Chttp2FullstackLocalUds", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); - return std::make_unique( - absl::StrFormat( - "unix:/tmp/grpc_fullstack_test.%d.%" PRId64 ".%" PRId32 - ".%d", - getpid(), now.tv_sec, now.tv_nsec, - unique.fetch_add(1, std::memory_order_relaxed)), - UDS); - }}, -#endif - CoreTestConfiguration{"Chttp2FullstackNoRetry", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_IS_HTTP2 | - FEATURE_MASK_DOES_NOT_SUPPORT_RETRY, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - return std::make_unique(); - }}, - CoreTestConfiguration{ - "Chttp2FullstackWithCensus", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(); - }}, - CoreTestConfiguration{ - "Chttp2FullstackWithProxy", - FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& client_args, const ChannelArgs& server_args) { - return std::make_unique(client_args, server_args); - }}, - CoreTestConfiguration{ - "Chttp2HttpProxy", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& client_args, const ChannelArgs&) { - return std::make_unique(client_args); - }}, - CoreTestConfiguration{ - "Chttp2SslProxy", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_SECURE | - FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_IS_HTTP2, - "foo.test.google.fr", - [](const ChannelArgs& client_args, const ChannelArgs& server_args) { - return std::make_unique(client_args, - server_args); - }}, - CoreTestConfiguration{ - "Chttp2InsecureCredentials", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE | - FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(); - }, - }, - CoreTestConfiguration{ - "Chttp2SimpleSslWithOauth2FullstackTls12", - FEATURE_MASK_IS_SECURE | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(grpc_tls_version::TLS1_2); - }}, - CoreTestConfiguration{ - "Chttp2SimpleSslWithOauth2FullstackTls13", - FEATURE_MASK_IS_SECURE | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(grpc_tls_version::TLS1_3); - }}, - CoreTestConfiguration{ - "Chttp2SimplSslFullstackTls12", - FEATURE_MASK_IS_SECURE | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(grpc_tls_version::TLS1_2); - }}, - CoreTestConfiguration{ - "Chttp2SimplSslFullstackTls13", - FEATURE_MASK_IS_SECURE | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_DOES_NOT_SUPPORT_CLIENT_HANDSHAKE_COMPLETE_FIRST | - FEATURE_MASK_IS_HTTP2, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(grpc_tls_version::TLS1_3); - }}, - CoreTestConfiguration{ - "Chttp2SocketPair", FEATURE_MASK_IS_HTTP2, nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(ChannelArgs()); - }}, - CoreTestConfiguration{ - "Chttp2SocketPair1ByteAtATime", - FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_1BYTE_AT_A_TIME, nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - ChannelArgs() - .Set(GRPC_ARG_TCP_READ_CHUNK_SIZE, 1) - .Set(GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE, 1) - .Set(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE, 1)); - }}, - CoreTestConfiguration{ - "Chttp2SocketPairMinstack", - FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_IS_MINSTACK, nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - ChannelArgs()); - }}, - CoreTestConfiguration{ - "Inproc", - FEATURE_MASK_DOES_NOT_SUPPORT_WRITE_BUFFERING, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(); - }, - }, - CoreTestConfiguration{ - "Chttp2SslCredReloadTls12", - FEATURE_MASK_IS_SECURE | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(TLS1_2); - }}, - CoreTestConfiguration{ - "Chttp2SslCredReloadTls13", - FEATURE_MASK_IS_SECURE | FEATURE_MASK_IS_HTTP2 | - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_DOES_NOT_SUPPORT_CLIENT_HANDSHAKE_COMPLETE_FIRST, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique(TLS1_3); - }}, - CoreTestConfiguration{ - // client: certificate watcher provider + async external verifier - // server: certificate watcher provider + async external verifier - // extra: TLS 1.3 - "Chttp2CertWatcherProviderAsyncVerifierTls13", - kH2TLSFeatureMask, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - SecurityPrimitives::TlsVersion::V_13, - SecurityPrimitives::ProviderType::FILE_PROVIDER, - SecurityPrimitives::VerifierType::EXTERNAL_ASYNC_VERIFIER); - }, - }, - CoreTestConfiguration{ - // client: certificate watcher provider + hostname verifier - // server: certificate watcher provider + sync external verifier - // extra: TLS 1.2 - "Chttp2CertWatcherProviderSyncVerifierTls12", - kH2TLSFeatureMask, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - SecurityPrimitives::TlsVersion::V_12, - SecurityPrimitives::ProviderType::FILE_PROVIDER, - SecurityPrimitives::VerifierType::HOSTNAME_VERIFIER); - }, - }, - CoreTestConfiguration{ - // client: static data provider + sync external verifier - // server: static data provider + sync external verifier - // extra: TLS 1.2 - "Chttp2SimpleSslFullstack", - kH2TLSFeatureMask, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - SecurityPrimitives::TlsVersion::V_12, - SecurityPrimitives::ProviderType::STATIC_PROVIDER, - SecurityPrimitives::VerifierType::EXTERNAL_SYNC_VERIFIER); - }, - }, - CoreTestConfiguration{ - // client: static data provider + async external verifier - // server: static data provider + async external verifier - // extra: TLS 1.3 - "Chttp2StaticProviderAsyncVerifierTls13", - kH2TLSFeatureMask, - "foo.test.google.fr", - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - SecurityPrimitives::TlsVersion::V_13, - SecurityPrimitives::ProviderType::STATIC_PROVIDER, - SecurityPrimitives::VerifierType::EXTERNAL_ASYNC_VERIFIER); - }, - }, -#ifdef GPR_LINUX - CoreTestConfiguration{ - "Chttp2FullstackUdsAbstractNamespace", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); - return std::make_unique(absl::StrFormat( - "unix-abstract:grpc_fullstack_test.%d.%" PRId64 ".%" PRId32 - ".%d", - getpid(), now.tv_sec, now.tv_nsec, - unique.fetch_add(1, std::memory_order_relaxed))); - }}, -#endif -#ifdef GRPC_HAVE_UNIX_SOCKET - CoreTestConfiguration{ - "Chttp2FullstackUds", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); - return std::make_unique(absl::StrFormat( - "unix:/tmp/grpc_fullstack_test.%d.%" PRId64 ".%" PRId32 ".%d", - getpid(), now.tv_sec, now.tv_nsec, - unique.fetch_add(1, std::memory_order_relaxed))); - }}, -#endif -// TODO(ctiller): these got inadvertently disabled when the project -// switched to Bazel in 2016, and have not been re-enabled since and are now -// quite broken. We should re-enable them however, as they provide defense in -// depth that enabling tracers is safe. When doing so, we'll need to re-enable -// the windows setvbuf statement in main(). -#if 0 - CoreTestConfiguration{ - "Chttp2SocketPairWithTrace", - FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_ENABLES_TRACES, nullptr, - [](const ChannelArgs&, const ChannelArgs&) { - return std::make_unique( - std::make_unique(ChannelArgs())); - }}, - CoreTestConfiguration{"Chttp2FullstackWithTrace", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | - FEATURE_MASK_IS_HTTP2 | - FEATURE_MASK_ENABLES_TRACES, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - return std::make_unique( - std::make_unique()); - }}, -#endif -#ifdef GRPC_POSIX_WAKEUP_FD - CoreTestConfiguration{ - "Chttp2FullstackWithPipeWakeup", - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, - nullptr, - [](const ChannelArgs& /*client_args*/, - const ChannelArgs& /*server_args*/) { - return std::make_unique(); - }}, -#endif - }; - std::sort(configs.begin(), configs.end(), - [](const CoreTestConfiguration& a, const CoreTestConfiguration& b) { - return strcmp(a.name, b.name) < 0; - }); - return configs; -} - -// A ConfigQuery queries a database a set of test configurations -// that match some criteria. -class ConfigQuery { - public: - ConfigQuery() = default; - ConfigQuery(const ConfigQuery&) = delete; - ConfigQuery& operator=(const ConfigQuery&) = delete; - // Enforce that the returned configurations have the given features. - ConfigQuery& EnforceFeatures(uint32_t features) { - enforce_features_ |= features; - return *this; - } - // Envorce that the returned configurations do not have the given features. - ConfigQuery& ExcludeFeatures(uint32_t features) { - exclude_features_ |= features; - return *this; - } - // Enforce that the returned configurations have the given name (regex). - ConfigQuery& AllowName(const std::string& name) { - allowed_names_.emplace_back( - std::regex(name, std::regex_constants::ECMAScript)); - return *this; - } - // Enforce that the returned configurations do not have the given name - // (regex). - ConfigQuery& ExcludeName(const std::string& name) { - excluded_names_.emplace_back( - std::regex(name, std::regex_constants::ECMAScript)); - return *this; - } - - auto Run() const { - static NoDestruct> kConfigs( - AllConfigs()); - std::vector out; - for (const CoreTestConfiguration& config : *kConfigs) { - if (IsEventEngineClientEnabled() && - // Ignore disabled test suites - (((exclude_features_ & - FEATURE_MASK_DISABLE_EVENT_ENGINE_CLIENT_EXPERIMENT) != 0) || - // Ignore disabled tests - ((config.feature_mask & - FEATURE_MASK_DISABLE_EVENT_ENGINE_CLIENT_EXPERIMENT) != 0))) { - continue; - } - if (IsEventEngineListenerEnabled() && - // Ignore disabled test suites - (((exclude_features_ & - FEATURE_MASK_DISABLE_EVENT_ENGINE_LISTENER_EXPERIMENT) != 0) || - // Ignore disabled tests - ((config.feature_mask & - FEATURE_MASK_DISABLE_EVENT_ENGINE_LISTENER_EXPERIMENT) != 0))) { - continue; - } - if ((config.feature_mask & enforce_features_) == enforce_features_ && - (config.feature_mask & exclude_features_) == 0) { - bool allowed = allowed_names_.empty(); - for (const std::regex& re : allowed_names_) { - if (std::regex_match(config.name, re)) { - allowed = true; - break; - } - } - for (const std::regex& re : excluded_names_) { - if (std::regex_match(config.name, re)) { - allowed = false; - break; - } - } - if (allowed) { - out.push_back(&config); - } - } - } - return ::testing::ValuesIn(out); - } - - private: - uint32_t enforce_features_ = 0; - uint32_t exclude_features_ = 0; - std::vector allowed_names_; - std::vector excluded_names_; -}; - -// Produce a nice name to print next to each test case for gtest. -inline const char* NameFromConfig( - const ::testing::TestParamInfo& config) { - return config.param->name; -} - -INSTANTIATE_TEST_SUITE_P(CoreEnd2endTests, CoreEnd2endTest, ConfigQuery().Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - SecureEnd2endTests, SecureEnd2endTest, - ConfigQuery().EnforceFeatures(FEATURE_MASK_IS_SECURE).Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P(CoreLargeSendTests, CoreLargeSendTest, - ConfigQuery() - .ExcludeFeatures(FEATURE_MASK_1BYTE_AT_A_TIME | - FEATURE_MASK_ENABLES_TRACES) - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - CoreDeadlineTests, CoreDeadlineTest, - ConfigQuery().ExcludeFeatures(FEATURE_MASK_IS_MINSTACK).Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - CoreClientChannelTests, CoreClientChannelTest, - ConfigQuery().EnforceFeatures(FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL).Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - Http2SingleHopTests, Http2SingleHopTest, - ConfigQuery() - .EnforceFeatures(FEATURE_MASK_IS_HTTP2) - .ExcludeFeatures(FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | - FEATURE_MASK_ENABLES_TRACES) - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - RetryTests, RetryTest, - ConfigQuery() - .EnforceFeatures(FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL) - .ExcludeFeatures(FEATURE_MASK_DOES_NOT_SUPPORT_RETRY) - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - WriteBufferingTests, WriteBufferingTest, - ConfigQuery() - .ExcludeFeatures(FEATURE_MASK_DOES_NOT_SUPPORT_WRITE_BUFFERING) - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - Http2Tests, Http2Test, - ConfigQuery().EnforceFeatures(FEATURE_MASK_IS_HTTP2).Run(), NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - RetryHttp2Tests, RetryHttp2Test, - ConfigQuery() - .EnforceFeatures(FEATURE_MASK_IS_HTTP2 | - FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL) - .ExcludeFeatures(FEATURE_MASK_DOES_NOT_SUPPORT_RETRY | - FEATURE_MASK_SUPPORTS_REQUEST_PROXYING) - .Run(), - NameFromConfig); - -// TODO(ctiller): Resolve the ResourceQuota / EventEngine listener problems and -// re-enable this test. -GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(ResourceQuotaTest); -INSTANTIATE_TEST_SUITE_P( - ResourceQuotaTests, ResourceQuotaTest, - ConfigQuery() - .ExcludeFeatures(FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | - FEATURE_MASK_1BYTE_AT_A_TIME | - FEATURE_MASK_DISABLE_EVENT_ENGINE_LISTENER_EXPERIMENT) - .ExcludeName("Chttp2.*Uds.*") - .ExcludeName("Chttp2HttpProxy") - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - PerCallCredsTests, PerCallCredsTest, - ConfigQuery() - .EnforceFeatures(FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS) - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - PerCallCredsOnInsecureTests, PerCallCredsOnInsecureTest, - ConfigQuery() - .EnforceFeatures( - FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE) - .Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P( - NoLoggingTests, NoLoggingTest, - ConfigQuery().ExcludeFeatures(FEATURE_MASK_ENABLES_TRACES).Run(), - NameFromConfig); - -INSTANTIATE_TEST_SUITE_P(ProxyAuthTests, ProxyAuthTest, - ConfigQuery().AllowName("Chttp2HttpProxy").Run(), - NameFromConfig); - -} // namespace grpc_core - int main(int argc, char** argv) { grpc::testing::TestEnvironment env(&argc, argv); ::testing::InitGoogleTest(&argc, argv); @@ -1089,5 +32,15 @@ int main(int argc, char** argv) { grpc_core::ConfigVars::Overrides overrides; overrides.default_ssl_roots_file_path = CA_CERT_PATH; grpc_core::ConfigVars::SetOverrides(overrides); + const auto all_tests = grpc_core::CoreEnd2endTestRegistry::Get().AllTests(); + for (const auto& test : all_tests) { + ::testing::RegisterTest( + absl::StrCat(test.suite).c_str(), + absl::StrCat(test.name, "/", test.config->name).c_str(), nullptr, + nullptr, __FILE__, __LINE__, + [test = &test]() -> grpc_core::CoreEnd2endTest* { + return test->make_test(test->config); + }); + } return RUN_ALL_TESTS(); } diff --git a/test/core/end2end/end2end_test_suites.cc b/test/core/end2end/end2end_test_suites.cc new file mode 100644 index 00000000000..b5ea7d47de0 --- /dev/null +++ b/test/core/end2end/end2end_test_suites.cc @@ -0,0 +1,1057 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "absl/status/status.h" +#include "absl/strings/str_format.h" +#include "absl/types/optional.h" +#include "gtest/gtest.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "src/core/lib/channel/channel_args.h" +#include "src/core/lib/debug/trace.h" +#include "src/core/lib/gprpp/host_port.h" +#include "src/core/lib/gprpp/no_destruct.h" +#include "src/core/lib/iomgr/error.h" +#include "src/core/lib/iomgr/exec_ctx.h" +#include "src/core/lib/iomgr/load_file.h" +#include "src/core/lib/iomgr/port.h" +#include "src/core/lib/security/credentials/fake/fake_credentials.h" +#include "test/core/end2end/end2end_tests.h" +#include "test/core/end2end/fixtures/h2_oauth2_common.h" +#include "test/core/end2end/fixtures/h2_ssl_cred_reload_fixture.h" +#include "test/core/end2end/fixtures/h2_ssl_tls_common.h" +#include "test/core/end2end/fixtures/h2_tls_common.h" +#include "test/core/end2end/fixtures/http_proxy_fixture.h" +#include "test/core/end2end/fixtures/inproc_fixture.h" +#include "test/core/end2end/fixtures/local_util.h" +#include "test/core/end2end/fixtures/proxy.h" +#include "test/core/end2end/fixtures/secure_fixture.h" +#include "test/core/end2end/fixtures/sockpair_fixture.h" +#include "test/core/util/port.h" +#include "test/core/util/test_config.h" + +// IWYU pragma: no_include + +#ifdef GRPC_POSIX_SOCKET +#include + +#include "src/core/lib/iomgr/socket_utils_posix.h" +#include "src/core/lib/iomgr/unix_sockets_posix.h" +#endif + +#ifdef GRPC_POSIX_WAKEUP_FD +#include "src/core/lib/iomgr/wakeup_fd_posix.h" +#endif + +#define CA_CERT_PATH "src/core/tsi/test_creds/ca.pem" +#define SERVER_CERT_PATH "src/core/tsi/test_creds/server1.pem" +#define SERVER_KEY_PATH "src/core/tsi/test_creds/server1.key" + +namespace grpc_core { + +namespace { + +std::atomic unique{0}; + +void ProcessAuthFailure(void* state, grpc_auth_context* /*ctx*/, + const grpc_metadata* /*md*/, size_t /*md_count*/, + grpc_process_auth_metadata_done_cb cb, + void* user_data) { + GPR_ASSERT(state == nullptr); + cb(user_data, nullptr, 0, nullptr, 0, GRPC_STATUS_UNAUTHENTICATED, nullptr); +} + +void AddFailAuthCheckIfNeeded(const ChannelArgs& args, + grpc_server_credentials* creds) { + if (args.Contains(FAIL_AUTH_CHECK_SERVER_ARG_NAME)) { + grpc_auth_metadata_processor processor = {ProcessAuthFailure, nullptr, + nullptr}; + grpc_server_credentials_set_auth_metadata_processor(creds, processor); + } +} + +} // namespace + +class CensusFixture : public CoreTestFixture { + private: + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + grpc_server_credentials* server_creds = + grpc_insecure_server_credentials_create(); + auto* server = grpc_server_create( + args.Set(GRPC_ARG_ENABLE_CENSUS, true).ToC().get(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + GPR_ASSERT( + grpc_server_add_http2_port(server, localaddr_.c_str(), server_creds)); + grpc_server_credentials_release(server_creds); + grpc_server_start(server); + return server; + } + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue*) override { + auto* creds = grpc_insecure_credentials_create(); + auto* client = + grpc_channel_create(localaddr_.c_str(), creds, + args.Set(GRPC_ARG_ENABLE_CENSUS, true).ToC().get()); + grpc_channel_credentials_release(creds); + return client; + } + const std::string localaddr_ = + JoinHostPort("localhost", grpc_pick_unused_port_or_die()); +}; + +class CompressionFixture : public CoreTestFixture { + private: + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + auto* server = grpc_server_create( + args.SetIfUnset(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, + GRPC_COMPRESS_GZIP) + .ToC() + .get(), + nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + grpc_server_credentials* server_creds = + grpc_insecure_server_credentials_create(); + GPR_ASSERT( + grpc_server_add_http2_port(server, localaddr_.c_str(), server_creds)); + grpc_server_credentials_release(server_creds); + grpc_server_start(server); + return server; + } + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue*) override { + grpc_channel_credentials* creds = grpc_insecure_credentials_create(); + auto* client = grpc_channel_create( + localaddr_.c_str(), creds, + args.SetIfUnset(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, + GRPC_COMPRESS_GZIP) + .ToC() + .get()); + grpc_channel_credentials_release(creds); + return client; + } + + std::string localaddr_ = + JoinHostPort("localhost", grpc_pick_unused_port_or_die()); +}; + +class FakesecFixture : public SecureFixture { + private: + grpc_channel_credentials* MakeClientCreds(const ChannelArgs&) override { + return grpc_fake_transport_security_credentials_create(); + } + grpc_server_credentials* MakeServerCreds(const ChannelArgs& args) override { + grpc_server_credentials* fake_ts_creds = + grpc_fake_transport_security_server_credentials_create(); + AddFailAuthCheckIfNeeded(args, fake_ts_creds); + return fake_ts_creds; + } +}; + +class InsecureCredsFixture : public InsecureFixture { + private: + grpc_server_credentials* MakeServerCreds(const ChannelArgs& args) override { + auto* creds = grpc_insecure_server_credentials_create(); + AddFailAuthCheckIfNeeded(args, creds); + return creds; + } +}; + +class SockpairWithMinstackFixture : public SockpairFixture { + public: + using SockpairFixture::SockpairFixture; + + private: + ChannelArgs MutateClientArgs(ChannelArgs args) override { + return args.Set(GRPC_ARG_MINIMAL_STACK, true); + } + ChannelArgs MutateServerArgs(ChannelArgs args) override { + return args.Set(GRPC_ARG_MINIMAL_STACK, true); + } +}; + +class Sockpair1Byte : public SockpairFixture { + public: + Sockpair1Byte() + : SockpairFixture(ChannelArgs() + .Set(GRPC_ARG_TCP_READ_CHUNK_SIZE, 1) + .Set(GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE, 1) + .Set(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE, 1)) { + g_fixture_slowdown_factor = 2; + } + ~Sockpair1Byte() override { g_fixture_slowdown_factor = 1; } + + private: + ChannelArgs MutateClientArgs(ChannelArgs args) override { + return args.Set(GRPC_ARG_MINIMAL_STACK, true); + } + ChannelArgs MutateServerArgs(ChannelArgs args) override { + return args.Set(GRPC_ARG_MINIMAL_STACK, true); + } +}; + +#ifdef GRPC_POSIX_SOCKET + +class FdFixture : public CoreTestFixture { + public: + FdFixture() { create_sockets(fd_pair_); } + + private: + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + ExecCtx exec_ctx; + auto* server = grpc_server_create(args.ToC().get(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + grpc_server_start(server); + grpc_server_credentials* creds = grpc_insecure_server_credentials_create(); + grpc_server_add_channel_from_fd(server, fd_pair_[1], creds); + grpc_server_credentials_release(creds); + return server; + } + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue*) override { + ExecCtx exec_ctx; + grpc_channel_credentials* creds = grpc_insecure_credentials_create(); + auto* client = grpc_channel_create_from_fd("fixture_client", fd_pair_[0], + creds, args.ToC().get()); + grpc_channel_credentials_release(creds); + return client; + } + + static void create_sockets(int sv[2]) { + int flags; + grpc_create_socketpair_if_unix(sv); + flags = fcntl(sv[0], F_GETFL, 0); + GPR_ASSERT(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK) == 0); + flags = fcntl(sv[1], F_GETFL, 0); + GPR_ASSERT(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK) == 0); + GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv[0]) == + absl::OkStatus()); + GPR_ASSERT(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == + absl::OkStatus()); + } + + int fd_pair_[2]; +}; +#endif + +class NoRetryFixture : public InsecureFixture { + private: + ChannelArgs MutateClientArgs(ChannelArgs args) override { + return args.Set(GRPC_ARG_ENABLE_RETRIES, false); + } +}; + +class HttpProxyFilter : public CoreTestFixture { + public: + explicit HttpProxyFilter(const ChannelArgs& client_args) + : proxy_(grpc_end2end_http_proxy_create(client_args.ToC().get())) {} + ~HttpProxyFilter() override { grpc_end2end_http_proxy_destroy(proxy_); } + + private: + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + auto* server = grpc_server_create(args.ToC().get(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + grpc_server_credentials* server_creds = + grpc_insecure_server_credentials_create(); + GPR_ASSERT( + grpc_server_add_http2_port(server, server_addr_.c_str(), server_creds)); + grpc_server_credentials_release(server_creds); + grpc_server_start(server); + return server; + } + + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue*) override { + // If testing for proxy auth, add credentials to proxy uri + absl::optional proxy_auth_str = + args.GetOwnedString(GRPC_ARG_HTTP_PROXY_AUTH_CREDS); + std::string proxy_uri; + if (!proxy_auth_str.has_value()) { + proxy_uri = absl::StrFormat( + "http://%s", grpc_end2end_http_proxy_get_proxy_name(proxy_)); + } else { + proxy_uri = + absl::StrFormat("http://%s@%s", proxy_auth_str->c_str(), + grpc_end2end_http_proxy_get_proxy_name(proxy_)); + } + grpc_channel_credentials* creds = grpc_insecure_credentials_create(); + auto* client = grpc_channel_create( + server_addr_.c_str(), creds, + args.Set(GRPC_ARG_HTTP_PROXY, proxy_uri).ToC().get()); + grpc_channel_credentials_release(creds); + GPR_ASSERT(client); + return client; + } + + std::string server_addr_ = + JoinHostPort("localhost", grpc_pick_unused_port_or_die()); + grpc_end2end_http_proxy* proxy_; +}; + +class ProxyFixture : public CoreTestFixture { + public: + ProxyFixture(const ChannelArgs& client_args, const ChannelArgs& server_args) + : proxy_(grpc_end2end_proxy_create(&proxy_def_, client_args.ToC().get(), + server_args.ToC().get())) {} + ~ProxyFixture() override { grpc_end2end_proxy_destroy(proxy_); } + + private: + static grpc_server* CreateProxyServer(const char* port, + const grpc_channel_args* server_args) { + grpc_server* s = grpc_server_create(server_args, nullptr); + grpc_server_credentials* server_creds = + grpc_insecure_server_credentials_create(); + GPR_ASSERT(grpc_server_add_http2_port(s, port, server_creds)); + grpc_server_credentials_release(server_creds); + return s; + } + + static grpc_channel* CreateProxyClient(const char* target, + const grpc_channel_args* client_args) { + grpc_channel_credentials* creds = grpc_insecure_credentials_create(); + grpc_channel* channel = grpc_channel_create(target, creds, client_args); + grpc_channel_credentials_release(creds); + return channel; + } + + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + auto* server = grpc_server_create(args.ToC().get(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + grpc_server_credentials* server_creds = + grpc_insecure_server_credentials_create(); + GPR_ASSERT(grpc_server_add_http2_port( + server, grpc_end2end_proxy_get_server_port(proxy_), server_creds)); + grpc_server_credentials_release(server_creds); + grpc_server_start(server); + return server; + } + + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue*) override { + grpc_channel_credentials* creds = grpc_insecure_credentials_create(); + auto* client = grpc_channel_create( + grpc_end2end_proxy_get_client_target(proxy_), creds, args.ToC().get()); + grpc_channel_credentials_release(creds); + GPR_ASSERT(client); + return client; + } + const grpc_end2end_proxy_def proxy_def_ = {CreateProxyServer, + CreateProxyClient}; + grpc_end2end_proxy* proxy_; +}; + +class SslProxyFixture : public CoreTestFixture { + public: + SslProxyFixture(const ChannelArgs& client_args, + const ChannelArgs& server_args) + : proxy_(grpc_end2end_proxy_create(&proxy_def_, client_args.ToC().get(), + server_args.ToC().get())) {} + ~SslProxyFixture() override { grpc_end2end_proxy_destroy(proxy_); } + + private: + static grpc_server* CreateProxyServer(const char* port, + const grpc_channel_args* server_args) { + grpc_server* s = grpc_server_create(server_args, nullptr); + grpc_slice cert_slice, key_slice; + GPR_ASSERT(GRPC_LOG_IF_ERROR( + "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice))); + GPR_ASSERT(GRPC_LOG_IF_ERROR( + "load_file", grpc_load_file(SERVER_KEY_PATH, 1, &key_slice))); + const char* server_cert = + reinterpret_cast GRPC_SLICE_START_PTR(cert_slice); + const char* server_key = + reinterpret_cast GRPC_SLICE_START_PTR(key_slice); + grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert}; + grpc_server_credentials* ssl_creds = grpc_ssl_server_credentials_create( + nullptr, &pem_key_cert_pair, 1, 0, nullptr); + grpc_slice_unref(cert_slice); + grpc_slice_unref(key_slice); + GPR_ASSERT(grpc_server_add_http2_port(s, port, ssl_creds)); + grpc_server_credentials_release(ssl_creds); + return s; + } + + static grpc_channel* CreateProxyClient(const char* target, + const grpc_channel_args* client_args) { + grpc_channel* channel; + grpc_channel_credentials* ssl_creds = + grpc_ssl_credentials_create(nullptr, nullptr, nullptr, nullptr); + grpc_arg ssl_name_override = { + GRPC_ARG_STRING, + const_cast(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG), + {const_cast("foo.test.google.fr")}}; + const grpc_channel_args* new_client_args = + grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1); + channel = grpc_channel_create(target, ssl_creds, new_client_args); + grpc_channel_credentials_release(ssl_creds); + { + ExecCtx exec_ctx; + grpc_channel_args_destroy(new_client_args); + } + return channel; + } + + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + grpc_slice cert_slice, key_slice; + GPR_ASSERT(GRPC_LOG_IF_ERROR( + "load_file", grpc_load_file(SERVER_CERT_PATH, 1, &cert_slice))); + GPR_ASSERT(GRPC_LOG_IF_ERROR( + "load_file", grpc_load_file(SERVER_KEY_PATH, 1, &key_slice))); + const char* server_cert = + reinterpret_cast GRPC_SLICE_START_PTR(cert_slice); + const char* server_key = + reinterpret_cast GRPC_SLICE_START_PTR(key_slice); + grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {server_key, server_cert}; + grpc_server_credentials* ssl_creds = grpc_ssl_server_credentials_create( + nullptr, &pem_key_cert_pair, 1, 0, nullptr); + grpc_slice_unref(cert_slice); + grpc_slice_unref(key_slice); + if (args.Contains(FAIL_AUTH_CHECK_SERVER_ARG_NAME)) { + grpc_auth_metadata_processor processor = {ProcessAuthFailure, nullptr, + nullptr}; + grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor); + } + + auto* server = grpc_server_create(args.ToC().get(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); + GPR_ASSERT(grpc_server_add_http2_port( + server, grpc_end2end_proxy_get_server_port(proxy_), ssl_creds)); + grpc_server_credentials_release(ssl_creds); + grpc_server_start(server); + return server; + } + + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue*) override { + grpc_channel_credentials* ssl_creds = + grpc_ssl_credentials_create(nullptr, nullptr, nullptr, nullptr); + auto* client = grpc_channel_create( + grpc_end2end_proxy_get_client_target(proxy_), ssl_creds, + args.Set(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, "foo.test.google.fr") + .ToC() + .get()); + GPR_ASSERT(client != nullptr); + grpc_channel_credentials_release(ssl_creds); + return client; + } + const grpc_end2end_proxy_def proxy_def_ = {CreateProxyServer, + CreateProxyClient}; + grpc_end2end_proxy* proxy_; +}; + +class FixtureWithTracing final : public CoreTestFixture { + public: + explicit FixtureWithTracing(std::unique_ptr fixture) + : fixture_(std::move(fixture)) { + // g_fixture_slowdown_factor = 10; + EXPECT_FALSE(grpc_tracer_set_enabled("doesnt-exist", 0)); + EXPECT_TRUE(grpc_tracer_set_enabled("http", 1)); + EXPECT_TRUE(grpc_tracer_set_enabled("all", 1)); + } + ~FixtureWithTracing() override { + saved_trace_flags_.Restore(); + // g_fixture_slowdown_factor = 1; + } + + grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) override { + return fixture_->MakeServer(args, cq); + } + + grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue* cq) override { + return fixture_->MakeClient(args, cq); + } + + private: + SavedTraceFlags saved_trace_flags_; + std::unique_ptr fixture_; +}; + +#ifdef GRPC_POSIX_WAKEUP_FD +class InsecureFixtureWithPipeForWakeupFd : public InsecureFixture { + public: + InsecureFixtureWithPipeForWakeupFd() + : old_value_(std::exchange(grpc_allow_specialized_wakeup_fd, 0)) {} + + ~InsecureFixtureWithPipeForWakeupFd() override { + grpc_allow_specialized_wakeup_fd = old_value_; + } + + private: + const int old_value_; +}; +#endif + +std::vector AllConfigs() { + std::vector configs { +#ifdef GRPC_POSIX_SOCKET + CoreTestConfiguration{ + "Chttp2Fd", FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_DO_NOT_FUZZ, nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(); + }}, +#endif + CoreTestConfiguration{ + "Chttp2FakeSecurityFullstack", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE | + FEATURE_MASK_IS_HTTP2, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(); + }}, + CoreTestConfiguration{ + "Chttp2Fullstack", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + return std::make_unique(); + }}, + CoreTestConfiguration{ + "Chttp2FullstackCompression", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(); + }}, +#ifdef GPR_LINUX + CoreTestConfiguration{ + "Chttp2FullstackLocalAbstractUdsPercentEncoded", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); + return std::make_unique( + absl::StrFormat( + "unix-abstract:grpc_fullstack_test.%%00.%d.%" PRId64 + ".%" PRId32 ".%d", + getpid(), now.tv_sec, now.tv_nsec, + unique.fetch_add(1, std::memory_order_relaxed)), + UDS); + }}, +#endif + CoreTestConfiguration{"Chttp2FullstackLocalIpv4", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + int port = grpc_pick_unused_port_or_die(); + return std::make_unique( + JoinHostPort("127.0.0.1", port), LOCAL_TCP); + }}, + CoreTestConfiguration{"Chttp2FullstackLocalIpv6", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + int port = grpc_pick_unused_port_or_die(); + return std::make_unique( + JoinHostPort("[::1]", port), LOCAL_TCP); + }}, +#ifdef GRPC_HAVE_UNIX_SOCKET + CoreTestConfiguration{ + "Chttp2FullstackLocalUdsPercentEncoded", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC); + return std::make_unique( + absl::StrFormat( + "unix:/tmp/grpc_fullstack_test.%%25.%d.%" PRId64 + ".%" PRId32 ".%d", + getpid(), now.tv_sec, now.tv_nsec, + unique.fetch_add(1, std::memory_order_relaxed)), + UDS); + }}, + CoreTestConfiguration{ + "Chttp2FullstackLocalUds", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); + return std::make_unique( + absl::StrFormat( + "unix:/tmp/grpc_fullstack_test.%d.%" PRId64 ".%" PRId32 + ".%d", + getpid(), now.tv_sec, now.tv_nsec, + unique.fetch_add(1, std::memory_order_relaxed)), + UDS); + }}, +#endif + CoreTestConfiguration{"Chttp2FullstackNoRetry", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DOES_NOT_SUPPORT_RETRY, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + return std::make_unique(); + }}, + CoreTestConfiguration{ + "Chttp2FullstackWithCensus", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(); + }}, + CoreTestConfiguration{ + "Chttp2FullstackWithProxy", + FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& client_args, const ChannelArgs& server_args) { + return std::make_unique(client_args, server_args); + }}, + CoreTestConfiguration{ + "Chttp2HttpProxy", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& client_args, const ChannelArgs&) { + return std::make_unique(client_args); + }}, + CoreTestConfiguration{ + "Chttp2SslProxy", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_SECURE | + FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_DO_NOT_FUZZ, + "foo.test.google.fr", + [](const ChannelArgs& client_args, const ChannelArgs& server_args) { + return std::make_unique(client_args, + server_args); + }}, + CoreTestConfiguration{ + "Chttp2InsecureCredentials", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE | + FEATURE_MASK_IS_HTTP2, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(); + }, + }, + CoreTestConfiguration{ + "Chttp2SimpleSslWithOauth2FullstackTls12", + FEATURE_MASK_IS_SECURE | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(grpc_tls_version::TLS1_2); + }}, + CoreTestConfiguration{ + "Chttp2SimpleSslWithOauth2FullstackTls13", + FEATURE_MASK_IS_SECURE | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(grpc_tls_version::TLS1_3); + }}, + CoreTestConfiguration{ + "Chttp2SimplSslFullstackTls12", + FEATURE_MASK_IS_SECURE | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(grpc_tls_version::TLS1_2); + }}, + CoreTestConfiguration{ + "Chttp2SimplSslFullstackTls13", + FEATURE_MASK_IS_SECURE | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_DOES_NOT_SUPPORT_CLIENT_HANDSHAKE_COMPLETE_FIRST | + FEATURE_MASK_IS_HTTP2, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(grpc_tls_version::TLS1_3); + }}, + CoreTestConfiguration{ + "Chttp2SocketPair", + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_DO_NOT_FUZZ, nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(ChannelArgs()); + }}, + CoreTestConfiguration{ + "Chttp2SocketPair1ByteAtATime", + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_1BYTE_AT_A_TIME | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + ChannelArgs() + .Set(GRPC_ARG_TCP_READ_CHUNK_SIZE, 1) + .Set(GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE, 1) + .Set(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE, 1)); + }}, + CoreTestConfiguration{ + "Chttp2SocketPairMinstack", + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_IS_MINSTACK | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + ChannelArgs()); + }}, + CoreTestConfiguration{ + "Inproc", + FEATURE_MASK_DOES_NOT_SUPPORT_WRITE_BUFFERING, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(); + }, + }, + CoreTestConfiguration{ + "Chttp2SslCredReloadTls12", + FEATURE_MASK_IS_SECURE | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(TLS1_2); + }}, + CoreTestConfiguration{ + "Chttp2SslCredReloadTls13", + FEATURE_MASK_IS_SECURE | FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_DOES_NOT_SUPPORT_CLIENT_HANDSHAKE_COMPLETE_FIRST, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique(TLS1_3); + }}, + CoreTestConfiguration{ + // client: certificate watcher provider + async external verifier + // server: certificate watcher provider + async external verifier + // extra: TLS 1.3 + "Chttp2CertWatcherProviderAsyncVerifierTls13", + kH2TLSFeatureMask | FEATURE_MASK_DO_NOT_FUZZ, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + SecurityPrimitives::TlsVersion::V_13, + SecurityPrimitives::ProviderType::FILE_PROVIDER, + SecurityPrimitives::VerifierType::EXTERNAL_ASYNC_VERIFIER); + }, + }, + CoreTestConfiguration{ + // client: certificate watcher provider + hostname verifier + // server: certificate watcher provider + sync external verifier + // extra: TLS 1.2 + "Chttp2CertWatcherProviderSyncVerifierTls12", + kH2TLSFeatureMask | FEATURE_MASK_DO_NOT_FUZZ, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + SecurityPrimitives::TlsVersion::V_12, + SecurityPrimitives::ProviderType::FILE_PROVIDER, + SecurityPrimitives::VerifierType::HOSTNAME_VERIFIER); + }, + }, + CoreTestConfiguration{ + // client: static data provider + sync external verifier + // server: static data provider + sync external verifier + // extra: TLS 1.2 + "Chttp2SimpleSslFullstack", + kH2TLSFeatureMask, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + SecurityPrimitives::TlsVersion::V_12, + SecurityPrimitives::ProviderType::STATIC_PROVIDER, + SecurityPrimitives::VerifierType::EXTERNAL_SYNC_VERIFIER); + }, + }, + CoreTestConfiguration{ + // client: static data provider + async external verifier + // server: static data provider + async external verifier + // extra: TLS 1.3 + "Chttp2StaticProviderAsyncVerifierTls13", + kH2TLSFeatureMask | FEATURE_MASK_DO_NOT_FUZZ, + "foo.test.google.fr", + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + SecurityPrimitives::TlsVersion::V_13, + SecurityPrimitives::ProviderType::STATIC_PROVIDER, + SecurityPrimitives::VerifierType::EXTERNAL_ASYNC_VERIFIER); + }, + }, +#ifdef GPR_LINUX + CoreTestConfiguration{ + "Chttp2FullstackUdsAbstractNamespace", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); + return std::make_unique(absl::StrFormat( + "unix-abstract:grpc_fullstack_test.%d.%" PRId64 ".%" PRId32 + ".%d", + getpid(), now.tv_sec, now.tv_nsec, + unique.fetch_add(1, std::memory_order_relaxed))); + }}, +#endif +#ifdef GRPC_HAVE_UNIX_SOCKET + CoreTestConfiguration{ + "Chttp2FullstackUds", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME); + return std::make_unique(absl::StrFormat( + "unix:/tmp/grpc_fullstack_test.%d.%" PRId64 ".%" PRId32 ".%d", + getpid(), now.tv_sec, now.tv_nsec, + unique.fetch_add(1, std::memory_order_relaxed))); + }}, +#endif +// TODO(ctiller): these got inadvertently disabled when the project +// switched to Bazel in 2016, and have not been re-enabled since and are now +// quite broken. We should re-enable them however, as they provide defense in +// depth that enabling tracers is safe. When doing so, we'll need to re-enable +// the windows setvbuf statement in main(). +#if 0 + CoreTestConfiguration{ + "Chttp2SocketPairWithTrace", + FEATURE_MASK_IS_HTTP2 | FEATURE_MASK_ENABLES_TRACES, nullptr, + [](const ChannelArgs&, const ChannelArgs&) { + return std::make_unique( + std::make_unique(ChannelArgs())); + }}, + CoreTestConfiguration{"Chttp2FullstackWithTrace", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | + FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_ENABLES_TRACES, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + return std::make_unique( + std::make_unique()); + }}, +#endif +#ifdef GRPC_POSIX_WAKEUP_FD + CoreTestConfiguration{ + "Chttp2FullstackWithPipeWakeup", + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL | FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_DO_NOT_FUZZ, + nullptr, + [](const ChannelArgs& /*client_args*/, + const ChannelArgs& /*server_args*/) { + return std::make_unique(); + }}, +#endif + }; + std::sort(configs.begin(), configs.end(), + [](const CoreTestConfiguration& a, const CoreTestConfiguration& b) { + return strcmp(a.name, b.name) < 0; + }); + return configs; +} + +// A ConfigQuery queries a database a set of test configurations +// that match some criteria. +class ConfigQuery { + public: + ConfigQuery() = default; + ConfigQuery(const ConfigQuery&) = delete; + ConfigQuery& operator=(const ConfigQuery&) = delete; + // Enforce that the returned configurations have the given features. + ConfigQuery& EnforceFeatures(uint32_t features) { + enforce_features_ |= features; + return *this; + } + // Envorce that the returned configurations do not have the given features. + ConfigQuery& ExcludeFeatures(uint32_t features) { + exclude_features_ |= features; + return *this; + } + // Enforce that the returned configurations have the given name (regex). + ConfigQuery& AllowName(const std::string& name) { + allowed_names_.emplace_back( + std::regex(name, std::regex_constants::ECMAScript)); + return *this; + } + // Enforce that the returned configurations do not have the given name + // (regex). + ConfigQuery& ExcludeName(const std::string& name) { + excluded_names_.emplace_back( + std::regex(name, std::regex_constants::ECMAScript)); + return *this; + } + + auto Run() const { + static NoDestruct> kConfigs( + AllConfigs()); + std::vector out; + for (const CoreTestConfiguration& config : *kConfigs) { + if ((config.feature_mask & enforce_features_) == enforce_features_ && + (config.feature_mask & exclude_features_) == 0) { + bool allowed = allowed_names_.empty(); + for (const std::regex& re : allowed_names_) { + if (std::regex_match(config.name, re)) { + allowed = true; + break; + } + } + for (const std::regex& re : excluded_names_) { + if (std::regex_match(config.name, re)) { + allowed = false; + break; + } + } + if (allowed) { + out.push_back(&config); + } + } + } + return out; + } + + private: + uint32_t enforce_features_ = 0; + uint32_t exclude_features_ = 0; + std::vector allowed_names_; + std::vector excluded_names_; +}; + +CORE_END2END_TEST_SUITE(CoreEnd2endTest, ConfigQuery().Run()); + +CORE_END2END_TEST_SUITE( + SecureEnd2endTest, + ConfigQuery().EnforceFeatures(FEATURE_MASK_IS_SECURE).Run()); + +CORE_END2END_TEST_SUITE(CoreLargeSendTest, + ConfigQuery() + .ExcludeFeatures(FEATURE_MASK_1BYTE_AT_A_TIME | + FEATURE_MASK_ENABLES_TRACES) + .Run()); + +CORE_END2END_TEST_SUITE( + CoreDeadlineTest, + ConfigQuery().ExcludeFeatures(FEATURE_MASK_IS_MINSTACK).Run()); + +CORE_END2END_TEST_SUITE( + CoreClientChannelTest, + ConfigQuery().EnforceFeatures(FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL).Run()); + +CORE_END2END_TEST_SUITE( + Http2SingleHopTest, + ConfigQuery() + .EnforceFeatures(FEATURE_MASK_IS_HTTP2) + .ExcludeFeatures(FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | + FEATURE_MASK_ENABLES_TRACES) + .Run()); + +CORE_END2END_TEST_SUITE( + RetryTest, ConfigQuery() + .EnforceFeatures(FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL) + .ExcludeFeatures(FEATURE_MASK_DOES_NOT_SUPPORT_RETRY) + .Run()); + +CORE_END2END_TEST_SUITE( + WriteBufferingTest, + ConfigQuery() + .ExcludeFeatures(FEATURE_MASK_DOES_NOT_SUPPORT_WRITE_BUFFERING) + .Run()); + +CORE_END2END_TEST_SUITE( + Http2Test, ConfigQuery().EnforceFeatures(FEATURE_MASK_IS_HTTP2).Run()); + +CORE_END2END_TEST_SUITE( + RetryHttp2Test, ConfigQuery() + .EnforceFeatures(FEATURE_MASK_IS_HTTP2 | + FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL) + .ExcludeFeatures(FEATURE_MASK_DOES_NOT_SUPPORT_RETRY | + FEATURE_MASK_SUPPORTS_REQUEST_PROXYING) + .Run()); + +CORE_END2END_TEST_SUITE( + ResourceQuotaTest, + ConfigQuery() + .ExcludeFeatures(FEATURE_MASK_SUPPORTS_REQUEST_PROXYING | + FEATURE_MASK_1BYTE_AT_A_TIME) + .ExcludeName("Chttp2.*Uds.*") + .ExcludeName("Chttp2HttpProxy") + .Run()); + +CORE_END2END_TEST_SUITE( + PerCallCredsTest, + ConfigQuery() + .EnforceFeatures(FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS) + .Run()); + +CORE_END2END_TEST_SUITE( + PerCallCredsOnInsecureTest, + ConfigQuery() + .EnforceFeatures( + FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE) + .Run()); + +CORE_END2END_TEST_SUITE( + NoLoggingTest, + ConfigQuery().ExcludeFeatures(FEATURE_MASK_ENABLES_TRACES).Run()); + +CORE_END2END_TEST_SUITE(ProxyAuthTest, + ConfigQuery().AllowName("Chttp2HttpProxy").Run()); + +} // namespace grpc_core diff --git a/test/core/end2end/end2end_tests.cc b/test/core/end2end/end2end_tests.cc index 7a658078647..bd46be8566a 100644 --- a/test/core/end2end/end2end_tests.cc +++ b/test/core/end2end/end2end_tests.cc @@ -33,10 +33,11 @@ #include "src/core/lib/event_engine/default_event_engine.h" #include "src/core/lib/gprpp/no_destruct.h" #include "test/core/end2end/cq_verifier.h" -#include "test/core/event_engine/event_engine_test_utils.h" namespace grpc_core { +bool g_is_fuzzing_core_e2e_tests = false; + Slice RandomSlice(size_t length) { size_t i; static const char chars[] = "abcdefghijklmnopqrstuvwxyz1234567890"; @@ -83,14 +84,26 @@ void CoreEnd2endTest::SetUp() { void CoreEnd2endTest::TearDown() { const bool do_shutdown = fixture_ != nullptr; + ShutdownAndDestroyClient(); + ShutdownAndDestroyServer(); cq_verifier_.reset(); + if (cq_ != nullptr) { + grpc_completion_queue_shutdown(cq_); + grpc_event ev; + do { + ev = grpc_completion_queue_next(cq_, grpc_timeout_seconds_to_deadline(5), + nullptr); + } while (ev.type != GRPC_QUEUE_SHUTDOWN); + grpc_completion_queue_destroy(cq_); + cq_ = nullptr; + } fixture_.reset(); // TODO(hork): locate the windows leak so we can enable end2end experiments. #ifndef GPR_WINDOWS // Creating an EventEngine requires gRPC initialization, which the NoOp test // does not do. Skip the EventEngine check if unnecessary. if (grpc_is_initialized()) { - grpc_event_engine::experimental::WaitForSingleOwner( + quiesce_event_engine_( grpc_event_engine::experimental::GetDefaultEventEngine()); } #endif @@ -102,6 +115,8 @@ void CoreEnd2endTest::TearDown() { gpr_log(GPR_ERROR, "Timeout in waiting for gRPC shutdown"); } } + GPR_ASSERT(client_ == nullptr); + GPR_ASSERT(server_ == nullptr); initialized_ = false; } @@ -259,24 +274,22 @@ CoreEnd2endTest::Call CoreEnd2endTest::ClientCallBuilder::Create() { if (u->host.has_value()) host = Slice::FromCopiedString(*u->host); test_.ForceInitialized(); return Call(grpc_channel_create_call( - test_.fixture().client(), parent_call_, propagation_mask_, - test_.fixture().cq(), Slice::FromCopiedString(u->method).c_slice(), + test_.client(), parent_call_, propagation_mask_, test_.cq(), + Slice::FromCopiedString(u->method).c_slice(), host.has_value() ? &host->c_slice() : nullptr, deadline_, nullptr)); } else { return Call(grpc_channel_create_registered_call( - test_.fixture().client(), parent_call_, propagation_mask_, - test_.fixture().cq(), absl::get(call_selector_), deadline_, - nullptr)); + test_.client(), parent_call_, propagation_mask_, test_.cq(), + absl::get(call_selector_), deadline_, nullptr)); } } CoreEnd2endTest::IncomingCall::IncomingCall(CoreEnd2endTest& test, int tag) : impl_(std::make_unique()) { test.ForceInitialized(); - grpc_server_request_call(test.fixture().server(), impl_->call.call_ptr(), + grpc_server_request_call(test.server(), impl_->call.call_ptr(), &impl_->call_details, &impl_->request_metadata, - test.fixture().cq(), test.fixture().cq(), - CqVerifier::tag(tag)); + test.cq(), test.cq(), CqVerifier::tag(tag)); } absl::optional CoreEnd2endTest::IncomingCall::GetInitialMetadata( @@ -287,9 +300,64 @@ absl::optional CoreEnd2endTest::IncomingCall::GetInitialMetadata( void CoreEnd2endTest::ForceInitialized() { if (!initialized_) { initialized_ = true; - fixture().InitServer(ChannelArgs()); - fixture().InitClient(ChannelArgs()); + InitServer(ChannelArgs()); + InitClient(ChannelArgs()); + } +} + +void CoreEnd2endTestRegistry::RegisterTest(absl::string_view suite, + absl::string_view name, + MakeTestFn make_test, + SourceLocation) { + if (absl::StartsWith(name, "DISABLED_")) return; + auto& tests = tests_by_suite_[suite]; + GPR_ASSERT(tests.count(name) == 0); + tests[name] = std::move(make_test); +} + +void CoreEnd2endTestRegistry::RegisterSuite( + absl::string_view suite, std::vector configs, + SourceLocation) { + GPR_ASSERT(suites_.count(suite) == 0); + suites_[suite] = std::move(configs); +} + +namespace { +template +std::vector KeysFrom(const Map& map) { + std::vector out; + out.reserve(map.size()); + for (const auto& elem : map) { + out.push_back(elem.first); + } + return out; +} +} // namespace + +std::vector CoreEnd2endTestRegistry::AllTests() { + if (tests_by_suite_.size() != suites_.size()) { + CrashWithStdio(absl::StrCat( + "ERROR: Some suites are not registered:\n", + "TESTS use suites: ", absl::StrJoin(KeysFrom(tests_by_suite_), ", "), + "\nSUITES have: ", absl::StrJoin(KeysFrom(tests_by_suite_), ", "), + "\n")); + } + GPR_ASSERT(tests_by_suite_.size() == suites_.size()); + std::vector tests; + for (const auto& suite_configs : suites_) { + if (suite_configs.second.empty()) { + CrashWithStdio( + absl::StrCat("Suite ", suite_configs.first, " has no tests")); + } + GPR_ASSERT(tests_by_suite_.count(suite_configs.first) == 1); + for (const auto& test_factory : tests_by_suite_[suite_configs.first]) { + for (const auto* config : suite_configs.second) { + tests.push_back(Test{suite_configs.first, test_factory.first, config, + test_factory.second}); + } + } } + return tests; } } // namespace grpc_core diff --git a/test/core/end2end/end2end_tests.h b/test/core/end2end/end2end_tests.h index 18b4f7f58cd..869b6a46716 100644 --- a/test/core/end2end/end2end_tests.h +++ b/test/core/end2end/end2end_tests.h @@ -19,18 +19,21 @@ #ifndef GRPC_TEST_CORE_END2END_END2END_TESTS_H #define GRPC_TEST_CORE_END2END_END2END_TESTS_H -#include #include +#include #include #include #include +#include #include #include #include #include +#include "absl/functional/any_invocable.h" #include "absl/memory/memory.h" +#include "absl/meta/type_traits.h" #include "absl/strings/string_view.h" #include "absl/types/optional.h" #include "absl/types/variant.h" @@ -38,6 +41,7 @@ #include #include +#include #include #include #include @@ -55,99 +59,40 @@ #include "src/core/lib/surface/call_test_only.h" #include "src/core/lib/surface/channel.h" #include "test/core/end2end/cq_verifier.h" +#include "test/core/event_engine/event_engine_test_utils.h" #include "test/core/util/test_config.h" // Test feature flags. -#define FEATURE_MASK_DOES_NOT_SUPPORT_RETRY 1 << 0 -#define FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION 1 << 1 +#define FEATURE_MASK_DOES_NOT_SUPPORT_RETRY (1 << 0) +#define FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION (1 << 1) // Feature mask supports call credentials with a minimum security level of // GRPC_PRIVACY_AND_INTEGRITY. -#define FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS 1 << 2 +#define FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS (1 << 2) // Feature mask supports call credentials with a minimum security level of // GRPC_SECURTITY_NONE. -#define FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE 1 << 3 -#define FEATURE_MASK_SUPPORTS_REQUEST_PROXYING 1 << 4 -#define FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL 1 << 5 -#define FEATURE_MASK_IS_HTTP2 1 << 6 -#define FEATURE_MASK_ENABLES_TRACES 1 << 7 -#define FEATURE_MASK_1BYTE_AT_A_TIME 1 << 8 -#define FEATURE_MASK_DOES_NOT_SUPPORT_WRITE_BUFFERING 1 << 9 -#define FEATURE_MASK_DOES_NOT_SUPPORT_CLIENT_HANDSHAKE_COMPLETE_FIRST 1 << 10 -#define FEATURE_MASK_IS_MINSTACK 1 << 11 -#define FEATURE_MASK_IS_SECURE 1 << 12 -#define FEATURE_MASK_DISABLE_EVENT_ENGINE_CLIENT_EXPERIMENT 1 << 13 -#define FEATURE_MASK_DISABLE_EVENT_ENGINE_LISTENER_EXPERIMENT 1 << 14 +#define FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS_LEVEL_INSECURE (1 << 3) +#define FEATURE_MASK_SUPPORTS_REQUEST_PROXYING (1 << 4) +#define FEATURE_MASK_SUPPORTS_CLIENT_CHANNEL (1 << 5) +#define FEATURE_MASK_IS_HTTP2 (1 << 6) +#define FEATURE_MASK_ENABLES_TRACES (1 << 7) +#define FEATURE_MASK_1BYTE_AT_A_TIME (1 << 8) +#define FEATURE_MASK_DOES_NOT_SUPPORT_WRITE_BUFFERING (1 << 9) +#define FEATURE_MASK_DOES_NOT_SUPPORT_CLIENT_HANDSHAKE_COMPLETE_FIRST (1 << 10) +#define FEATURE_MASK_IS_MINSTACK (1 << 11) +#define FEATURE_MASK_IS_SECURE (1 << 12) +#define FEATURE_MASK_DO_NOT_FUZZ (1 << 13) #define FAIL_AUTH_CHECK_SERVER_ARG_NAME "fail_auth_check" namespace grpc_core { class CoreTestFixture { public: - virtual ~CoreTestFixture() { - ShutdownServer(); - ShutdownClient(); - grpc_completion_queue_shutdown(cq()); - DrainCq(); - grpc_completion_queue_destroy(cq()); - } - - grpc_completion_queue* cq() { return cq_; } - grpc_server* server() { return server_; } - grpc_channel* client() { return client_; } - - void InitServer(const ChannelArgs& args) { - if (server_ != nullptr) ShutdownServer(); - server_ = MakeServer(args); - GPR_ASSERT(server_ != nullptr); - } - void InitClient(const ChannelArgs& args) { - if (client_ != nullptr) ShutdownClient(); - client_ = MakeClient(args); - GPR_ASSERT(client_ != nullptr); - } - - void ShutdownServer() { - if (server_ == nullptr) return; - grpc_server_shutdown_and_notify(server_, cq_, server_); - grpc_event ev; - do { - ev = grpc_completion_queue_next(cq_, grpc_timeout_seconds_to_deadline(5), - nullptr); - } while (ev.type != GRPC_OP_COMPLETE || ev.tag != server_); - DestroyServer(); - } - - void DestroyServer() { - if (server_ == nullptr) return; - grpc_server_destroy(server_); - server_ = nullptr; - } + virtual ~CoreTestFixture() = default; - void ShutdownClient() { - if (client_ == nullptr) return; - grpc_channel_destroy(client_); - client_ = nullptr; - } - - virtual grpc_server* MakeServer(const ChannelArgs& args) = 0; - virtual grpc_channel* MakeClient(const ChannelArgs& args) = 0; - - protected: - void SetServer(grpc_server* server); - void SetClient(grpc_channel* client); - - private: - void DrainCq() { - grpc_event ev; - do { - ev = grpc_completion_queue_next(cq_, grpc_timeout_seconds_to_deadline(5), - nullptr); - } while (ev.type != GRPC_QUEUE_SHUTDOWN); - } - - grpc_completion_queue* cq_ = grpc_completion_queue_create_for_next(nullptr); - grpc_server* server_ = nullptr; - grpc_channel* client_ = nullptr; + virtual grpc_server* MakeServer(const ChannelArgs& args, + grpc_completion_queue* cq) = 0; + virtual grpc_channel* MakeClient(const ChannelArgs& args, + grpc_completion_queue* cq) = 0; }; Slice RandomSlice(size_t length); @@ -198,11 +143,30 @@ struct CoreTestConfiguration { // older compilers, and it's tremendously convenient to be able to do so. So // we use std::string for return types here - performance isn't particularly // important, so an extra copy is fine. -class CoreEnd2endTest - : public ::testing::TestWithParam { +class CoreEnd2endTest : public ::testing::Test { public: + void TestInfrastructureSetParam(const CoreTestConfiguration* param) { + param_ = param; + } + const CoreTestConfiguration* GetParam() { return param_; } + void SetUp() override; void TearDown() override; + virtual void RunTest() = 0; + + void SetCqVerifierStepFn( + absl::AnyInvocable< + void(grpc_event_engine::experimental::EventEngine::Duration) const> + step_fn) { + step_fn_ = std::move(step_fn); + } + void SetCrashOnStepFailure() { crash_on_step_failure_ = true; } + void SetQuiesceEventEngine( + absl::AnyInvocable< + void(std::shared_ptr&&)> + quiesce_event_engine) { + quiesce_event_engine_ = std::move(quiesce_event_engine); + } class Call; struct RegisteredCall { @@ -611,67 +575,87 @@ class CoreEnd2endTest // will be provided). void InitClient(const ChannelArgs& args) { initialized_ = true; - fixture().InitClient(args); + if (client_ != nullptr) ShutdownAndDestroyClient(); + auto& f = fixture(); + client_ = f.MakeClient(args, cq_); + GPR_ASSERT(client_ != nullptr); } // Initialize the server. // If called, then InitClient must be called to create a client (otherwise one // will be provided). void InitServer(const ChannelArgs& args) { initialized_ = true; - fixture().InitServer(args); + if (server_ != nullptr) ShutdownAndDestroyServer(); + auto& f = fixture(); + server_ = f.MakeServer(args, cq_); + GPR_ASSERT(server_ != nullptr); } // Remove the client. - void ShutdownAndDestroyClient() { fixture().ShutdownClient(); } + void ShutdownAndDestroyClient() { + if (client_ == nullptr) return; + grpc_channel_destroy(client_); + client_ = nullptr; + } // Shutdown the server; notify tag on completion. void ShutdownServerAndNotify(int tag) { - grpc_server_shutdown_and_notify(fixture().server(), fixture().cq(), - CqVerifier::tag(tag)); + grpc_server_shutdown_and_notify(server_, cq_, CqVerifier::tag(tag)); } // Destroy the server. - void DestroyServer() { fixture().DestroyServer(); } + void DestroyServer() { + if (server_ == nullptr) return; + grpc_server_destroy(server_); + server_ = nullptr; + } // Shutdown then destroy the server. - void ShutdownAndDestroyServer() { fixture().ShutdownServer(); } - // Cancel any calls on the server. - void CancelAllCallsOnServer() { - grpc_server_cancel_all_calls(fixture().server()); + void ShutdownAndDestroyServer() { + if (server_ == nullptr) return; + ShutdownServerAndNotify(-1); + Expect(-1, AnyStatus{}); + Step(); + DestroyServer(); } + // Cancel any calls on the server. + void CancelAllCallsOnServer() { grpc_server_cancel_all_calls(server_); } // Ping the server from the client void PingServerFromClient(int tag) { - grpc_channel_ping(fixture().client(), fixture().cq(), CqVerifier::tag(tag), - nullptr); + grpc_channel_ping(client_, cq_, CqVerifier::tag(tag), nullptr); } // Register a call on the client, return its handle. RegisteredCall RegisterCallOnClient(const char* method, const char* host) { ForceInitialized(); return RegisteredCall{ - grpc_channel_register_call(fixture().client(), method, host, nullptr)}; + grpc_channel_register_call(client_, method, host, nullptr)}; } // Return the current connectivity state of the client. grpc_connectivity_state CheckConnectivityState(bool try_to_connect) { - return grpc_channel_check_connectivity_state(fixture().client(), - try_to_connect); + return grpc_channel_check_connectivity_state(client_, try_to_connect); } // Watch the connectivity state of the client. void WatchConnectivityState(grpc_connectivity_state last_observed_state, Duration deadline, int tag) { grpc_channel_watch_connectivity_state( - fixture().client(), last_observed_state, - grpc_timeout_milliseconds_to_deadline(deadline.millis()), - fixture().cq(), CqVerifier::tag(tag)); + client_, last_observed_state, + grpc_timeout_milliseconds_to_deadline(deadline.millis()), cq_, + CqVerifier::tag(tag)); } // Return the client channel. grpc_channel* client() { ForceInitialized(); - return fixture().client(); + return client_; } // Return the server channel. grpc_server* server() { ForceInitialized(); - return fixture().server(); + return server_; + } + + grpc_completion_queue* cq() { + ForceInitialized(); + return cq_; } // Given a duration, return a timestamp that is that duration in the future - @@ -681,12 +665,19 @@ class CoreEnd2endTest grpc_timeout_milliseconds_to_deadline(duration.millis())); } + void SetPostGrpcInitFunc(absl::AnyInvocable fn) { + GPR_ASSERT(fixture_ == nullptr); + post_grpc_init_func_ = std::move(fn); + } + private: void ForceInitialized(); CoreTestFixture& fixture() { if (fixture_ == nullptr) { grpc_init(); + post_grpc_init_func_(); + cq_ = grpc_completion_queue_create_for_next(nullptr); fixture_ = GetParam()->create_fixture(ChannelArgs(), ChannelArgs()); } return *fixture_; @@ -694,16 +685,33 @@ class CoreEnd2endTest CqVerifier& cq_verifier() { if (cq_verifier_ == nullptr) { + fixture(); // ensure cq_ present cq_verifier_ = absl::make_unique( - fixture().cq(), CqVerifier::FailUsingGtestFail); + cq_, + crash_on_step_failure_ ? CqVerifier::FailUsingGprCrash + : CqVerifier::FailUsingGtestFail, + std::move(step_fn_)); } return *cq_verifier_; } + const CoreTestConfiguration* param_ = nullptr; std::unique_ptr fixture_; + grpc_completion_queue* cq_ = nullptr; + grpc_server* server_ = nullptr; + grpc_channel* client_ = nullptr; std::unique_ptr cq_verifier_; int expectations_ = 0; bool initialized_ = false; + bool crash_on_step_failure_ = false; + absl::AnyInvocable post_grpc_init_func_ = []() {}; + absl::AnyInvocable + step_fn_ = nullptr; + absl::AnyInvocable&&)> + quiesce_event_engine_ = + grpc_event_engine::experimental::WaitForSingleOwner; }; // Define names for additional test suites. @@ -742,6 +750,55 @@ class NoLoggingTest : public CoreEnd2endTest {}; // Test suite for tests that verify proxy authentication class ProxyAuthTest : public CoreEnd2endTest {}; +using MakeTestFn = absl::AnyInvocable; + +class CoreEnd2endTestRegistry { + public: + CoreEnd2endTestRegistry(const CoreEnd2endTestRegistry&) = delete; + CoreEnd2endTestRegistry& operator=(const CoreEnd2endTestRegistry&) = delete; + + static CoreEnd2endTestRegistry& Get() { + static CoreEnd2endTestRegistry* singleton = new CoreEnd2endTestRegistry; + return *singleton; + } + + struct Test { + absl::string_view suite; + absl::string_view name; + const CoreTestConfiguration* config; + const MakeTestFn& make_test; + }; + + void RegisterTest(absl::string_view suite, absl::string_view name, + MakeTestFn make_test, SourceLocation where = {}); + + void RegisterSuite(absl::string_view suite, + std::vector configs, + SourceLocation where); + + std::vector AllTests(); + + // Enforce passing a type so that we can check it exists (saves typos) + template + absl::void_t RegisterSuiteT( + absl::string_view suite, + std::vector configs, + SourceLocation where = {}) { + return RegisterSuite(suite, std::move(configs), where); + } + + private: + CoreEnd2endTestRegistry() = default; + + std::map> + suites_; + std::map> + tests_by_suite_; +}; + +extern bool g_is_fuzzing_core_e2e_tests; + } // namespace grpc_core // If this test fixture is being run under minstack, skip the test. @@ -749,4 +806,35 @@ class ProxyAuthTest : public CoreEnd2endTest {}; if (GetParam()->feature_mask & FEATURE_MASK_IS_MINSTACK) \ GTEST_SKIP() << "Skipping test for minstack" +#define SKIP_IF_FUZZING() \ + if (g_is_fuzzing_core_e2e_tests) GTEST_SKIP() << "Skipping test for fuzzing" + +#define CORE_END2END_TEST(suite, name) \ + class CoreEnd2endTest_##suite##_##name : public grpc_core::suite { \ + public: \ + CoreEnd2endTest_##suite##_##name() {} \ + void TestBody() override { RunTest(); } \ + void RunTest() override; \ + \ + private: \ + static grpc_core::CoreEnd2endTest* Run( \ + const grpc_core::CoreTestConfiguration* config) { \ + auto* test = new CoreEnd2endTest_##suite##_##name; \ + test->TestInfrastructureSetParam(config); \ + return test; \ + } \ + static int registered_; \ + }; \ + int CoreEnd2endTest_##suite##_##name::registered_ = \ + (grpc_core::CoreEnd2endTestRegistry::Get().RegisterTest(#suite, #name, \ + &Run), \ + 0); \ + void CoreEnd2endTest_##suite##_##name::RunTest() + +#define CORE_END2END_TEST_SUITE(suite, configs) \ + static int registered_##suite = \ + (grpc_core::CoreEnd2endTestRegistry::Get() \ + .template RegisterSuiteT(#suite, configs), \ + 0) + #endif // GRPC_TEST_CORE_END2END_END2END_TESTS_H diff --git a/test/core/end2end/fixtures/inproc_fixture.h b/test/core/end2end/fixtures/inproc_fixture.h index 8cd38d43526..72ef99c061c 100644 --- a/test/core/end2end/fixtures/inproc_fixture.h +++ b/test/core/end2end/fixtures/inproc_fixture.h @@ -23,15 +23,21 @@ class InprocFixture : public grpc_core::CoreTestFixture { private: - grpc_server* MakeServer(const grpc_core::ChannelArgs& args) override { - auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); - grpc_server_start(server); - return server; + grpc_server* MakeServer(const grpc_core::ChannelArgs& args, + grpc_completion_queue* cq) override { + if (made_server_ != nullptr) return made_server_; + made_server_ = grpc_server_create(args.ToC().get(), nullptr); + grpc_server_register_completion_queue(made_server_, cq, nullptr); + grpc_server_start(made_server_); + return made_server_; } - grpc_channel* MakeClient(const grpc_core::ChannelArgs& args) override { - return grpc_inproc_channel_create(server(), args.ToC().get(), nullptr); + grpc_channel* MakeClient(const grpc_core::ChannelArgs& args, + grpc_completion_queue* cq) override { + return grpc_inproc_channel_create(MakeServer(args, cq), args.ToC().get(), + nullptr); } + + grpc_server* made_server_ = nullptr; }; #endif // GRPC_TEST_CORE_END2END_FIXTURES_INPROC_FIXTURE_H diff --git a/test/core/end2end/fixtures/local_util.cc b/test/core/end2end/fixtures/local_util.cc index 0dcf965727c..e91c5e193fe 100644 --- a/test/core/end2end/fixtures/local_util.cc +++ b/test/core/end2end/fixtures/local_util.cc @@ -39,11 +39,12 @@ LocalTestFixture::LocalTestFixture(std::string localaddr, grpc_local_connect_type type) : localaddr_(std::move(localaddr)), type_(type) {} -grpc_server* LocalTestFixture::MakeServer(const grpc_core::ChannelArgs& args) { +grpc_server* LocalTestFixture::MakeServer(const grpc_core::ChannelArgs& args, + grpc_completion_queue* cq) { grpc_server_credentials* server_creds = grpc_local_server_credentials_create(type_); auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); if (args.Contains(FAIL_AUTH_CHECK_SERVER_ARG_NAME)) { grpc_auth_metadata_processor processor = {process_auth_failure, nullptr, nullptr}; @@ -57,7 +58,8 @@ grpc_server* LocalTestFixture::MakeServer(const grpc_core::ChannelArgs& args) { return server; } -grpc_channel* LocalTestFixture::MakeClient(const grpc_core::ChannelArgs& args) { +grpc_channel* LocalTestFixture::MakeClient(const grpc_core::ChannelArgs& args, + grpc_completion_queue*) { grpc_channel_credentials* creds = grpc_local_credentials_create(type_); auto* client = grpc_channel_create(localaddr_.c_str(), creds, args.ToC().get()); diff --git a/test/core/end2end/fixtures/local_util.h b/test/core/end2end/fixtures/local_util.h index 3077b50b2a1..836444cf8b4 100644 --- a/test/core/end2end/fixtures/local_util.h +++ b/test/core/end2end/fixtures/local_util.h @@ -32,8 +32,10 @@ class LocalTestFixture final : public grpc_core::CoreTestFixture { LocalTestFixture(std::string localaddr, grpc_local_connect_type type); private: - grpc_server* MakeServer(const grpc_core::ChannelArgs& args) override; - grpc_channel* MakeClient(const grpc_core::ChannelArgs& args) override; + grpc_server* MakeServer(const grpc_core::ChannelArgs& args, + grpc_completion_queue* cq) override; + grpc_channel* MakeClient(const grpc_core::ChannelArgs& args, + grpc_completion_queue* cq) override; std::string localaddr_; grpc_local_connect_type type_; diff --git a/test/core/end2end/fixtures/secure_fixture.h b/test/core/end2end/fixtures/secure_fixture.h index 35745e0fff5..31b1112d4b0 100644 --- a/test/core/end2end/fixtures/secure_fixture.h +++ b/test/core/end2end/fixtures/secure_fixture.h @@ -49,17 +49,19 @@ class SecureFixture : public grpc_core::CoreTestFixture { virtual grpc_core::ChannelArgs MutateServerArgs(grpc_core::ChannelArgs args) { return args; } - grpc_server* MakeServer(const grpc_core::ChannelArgs& in_args) override { + grpc_server* MakeServer(const grpc_core::ChannelArgs& in_args, + grpc_completion_queue* cq) override { auto args = MutateServerArgs(in_args); auto* creds = MakeServerCreds(args); auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); GPR_ASSERT(grpc_server_add_http2_port(server, localaddr_.c_str(), creds)); grpc_server_credentials_release(creds); grpc_server_start(server); return server; } - grpc_channel* MakeClient(const grpc_core::ChannelArgs& in_args) override { + grpc_channel* MakeClient(const grpc_core::ChannelArgs& in_args, + grpc_completion_queue*) override { auto args = MutateClientArgs(in_args); auto* creds = MakeClientCreds(args); auto* client = diff --git a/test/core/end2end/fixtures/sockpair_fixture.h b/test/core/end2end/fixtures/sockpair_fixture.h index 930974eb3f0..4c74a6b9b5f 100644 --- a/test/core/end2end/fixtures/sockpair_fixture.h +++ b/test/core/end2end/fixtures/sockpair_fixture.h @@ -65,12 +65,13 @@ class SockpairFixture : public CoreTestFixture { private: virtual ChannelArgs MutateClientArgs(ChannelArgs args) { return args; } virtual ChannelArgs MutateServerArgs(ChannelArgs args) { return args; } - grpc_server* MakeServer(const ChannelArgs& in_args) override { + grpc_server* MakeServer(const ChannelArgs& in_args, + grpc_completion_queue* cq) override { auto args = MutateServerArgs(in_args); ExecCtx exec_ctx; grpc_transport* transport; auto* server = grpc_server_create(args.ToC().get(), nullptr); - grpc_server_register_completion_queue(server, cq(), nullptr); + grpc_server_register_completion_queue(server, cq, nullptr); grpc_server_start(server); auto server_channel_args = CoreConfiguration::Get() .channel_args_preconditioning() @@ -79,7 +80,7 @@ class SockpairFixture : public CoreTestFixture { EXPECT_NE(server_endpoint, nullptr); transport = grpc_create_chttp2_transport(server_channel_args, server_endpoint, false); - grpc_endpoint_add_to_pollset(server_endpoint, grpc_cq_pollset(cq())); + grpc_endpoint_add_to_pollset(server_endpoint, grpc_cq_pollset(cq)); Server* core_server = Server::FromC(server); grpc_error_handle error = core_server->SetupTransport( transport, nullptr, core_server->channel_args(), nullptr); @@ -90,7 +91,8 @@ class SockpairFixture : public CoreTestFixture { } return server; } - grpc_channel* MakeClient(const ChannelArgs& in_args) override { + grpc_channel* MakeClient(const ChannelArgs& in_args, + grpc_completion_queue*) override { ExecCtx exec_ctx; auto args = CoreConfiguration::Get() .channel_args_preconditioning() diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc index cc1aa0a3294..089d2be2f1e 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.cc +++ b/test/core/end2end/fuzzers/api_fuzzer.cc @@ -35,7 +35,6 @@ #include "absl/types/optional.h" #include -#include #include #include #include @@ -47,29 +46,23 @@ #include #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h" -#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/channel/channel_args.h" -#include "src/core/lib/channel/channelz.h" #include "src/core/lib/event_engine/default_event_engine.h" +#include "src/core/lib/experiments/config.h" #include "src/core/lib/gprpp/debug_location.h" #include "src/core/lib/gprpp/env.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/iomgr/closure.h" -#include "src/core/lib/iomgr/endpoint.h" -#include "src/core/lib/iomgr/error.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/iomgr/executor.h" #include "src/core/lib/iomgr/iomgr_fwd.h" #include "src/core/lib/iomgr/resolve_address.h" #include "src/core/lib/iomgr/resolved_address.h" -#include "src/core/lib/iomgr/tcp_client.h" #include "src/core/lib/iomgr/timer_manager.h" #include "src/core/lib/resolver/server_address.h" #include "src/core/lib/slice/slice_internal.h" #include "src/core/lib/surface/channel.h" -#include "src/core/lib/surface/server.h" -#include "src/core/lib/transport/transport_fwd.h" #include "src/libfuzzer/libfuzzer_macro.h" #include "test/core/end2end/data/ssl_test_data.h" #include "test/core/end2end/fuzzers/api_fuzzer.pb.h" @@ -77,17 +70,9 @@ #include "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h" #include "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h" #include "test/core/util/fuzz_config_vars.h" -#include "test/core/util/passthru_endpoint.h" // IWYU pragma: no_include -// Applicable when simulating channel actions. Prevents overflows. -static constexpr uint64_t kMaxWaitMs = grpc_core::Duration::Hours(1).millis(); -// Applicable when simulating channel actions. Prevents overflows. -static constexpr uint64_t kMaxAddNReadableBytes = (2 * 1024 * 1024); // 2GB -// Applicable when simulating channel actions. Prevents overflows. -static constexpr uint64_t kMaxAddNWritableBytes = (2 * 1024 * 1024); // 2GB - //////////////////////////////////////////////////////////////////////////////// // logging @@ -259,9 +244,6 @@ class ApiFuzzer : public BasicFuzzer { void TryShutdown(); void Tick(); grpc_server* Server() { return server_; } - const std::vector& ChannelActions() { - return channel_actions_; - } private: Result PollCq() override; @@ -291,7 +273,6 @@ class ApiFuzzer : public BasicFuzzer { grpc_server* server_ = nullptr; grpc_channel* channel_ = nullptr; grpc_resource_quota* resource_quota_; - std::vector channel_actions_; std::atomic channel_force_delete_{false}; std::vector> calls_; size_t active_call_ = 0; @@ -308,78 +289,6 @@ namespace { grpc::testing::ApiFuzzer* g_api_fuzzer = nullptr; } -//////////////////////////////////////////////////////////////////////////////// -// client connection - -static void sched_connect(grpc_closure* closure, grpc_endpoint** ep, - gpr_timespec deadline); - -typedef struct { - grpc_closure* closure; - grpc_endpoint** ep; - gpr_timespec deadline; -} future_connect; - -static void do_connect(future_connect fc) { - if (g_api_fuzzer->Server() != nullptr) { - grpc_endpoint* client; - grpc_endpoint* server; - grpc_passthru_endpoint_create(&client, &server, nullptr, true); - *fc.ep = client; - start_scheduling_grpc_passthru_endpoint_channel_effects( - client, g_api_fuzzer->ChannelActions()); - - grpc_core::Server* core_server = - grpc_core::Server::FromC(g_api_fuzzer->Server()); - grpc_transport* transport = grpc_create_chttp2_transport( - core_server->channel_args(), server, false); - GPR_ASSERT(GRPC_LOG_IF_ERROR( - "SetupTransport", - core_server->SetupTransport(transport, nullptr, - core_server->channel_args(), nullptr))); - grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr); - - grpc_core::ExecCtx::Run(DEBUG_LOCATION, fc.closure, absl::OkStatus()); - } else { - sched_connect(fc.closure, fc.ep, fc.deadline); - } -} - -static void sched_connect(grpc_closure* closure, grpc_endpoint** ep, - gpr_timespec deadline) { - if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) < 0) { - *ep = nullptr; - grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, - GRPC_ERROR_CREATE("Connect deadline exceeded")); - return; - } - future_connect fc; - fc.closure = closure; - fc.ep = ep; - fc.deadline = deadline; - GetDefaultEventEngine()->RunAfter(grpc_core::Duration::Seconds(1), [fc] { - grpc_core::ApplicationCallbackExecCtx callback_exec_ctx; - grpc_core::ExecCtx exec_ctx; - do_connect(fc); - }); -} - -static int64_t my_tcp_client_connect( - grpc_closure* closure, grpc_endpoint** ep, - grpc_pollset_set* /*interested_parties*/, - const grpc_event_engine::experimental::EndpointConfig& /*config*/, - const grpc_resolved_address* /*addr*/, grpc_core::Timestamp deadline) { - sched_connect(closure, ep, deadline.as_timespec(GPR_CLOCK_MONOTONIC)); - return 0; -} - -static bool my_tcp_cancel_connect(int64_t /*connection_handle*/) { - return false; -} - -grpc_tcp_client_vtable fuzz_tcp_client_vtable = {my_tcp_client_connect, - my_tcp_cancel_connect}; - //////////////////////////////////////////////////////////////////////////////// // test driver @@ -847,14 +756,28 @@ static grpc_channel_credentials* ReadChannelCreds( } } +namespace grpc_event_engine { +namespace experimental { +extern bool g_event_engine_supports_fd; +} +} // namespace grpc_event_engine + namespace grpc { namespace testing { +namespace { +int force_experiments = []() { + grpc_event_engine::experimental::g_event_engine_supports_fd = false; + grpc_core::ForceEnableExperiment("event_engine_client", true); + grpc_core::ForceEnableExperiment("event_engine_listener", true); + return 1; +}(); +} + ApiFuzzer::ApiFuzzer() { engine_ = std::dynamic_pointer_cast(GetDefaultEventEngine()); grpc_init(); - grpc_set_tcp_client_impl(&fuzz_tcp_client_vtable); grpc_timer_manager_set_threading(false); { grpc_core::ExecCtx exec_ctx; @@ -939,7 +862,6 @@ void ApiFuzzer::Tick() { if (channel_force_delete_.exchange(false) && channel_) { grpc_channel_destroy(channel_); channel_ = nullptr; - channel_actions_.clear(); } } @@ -960,36 +882,19 @@ ApiFuzzer::Result ApiFuzzer::PollCq() { } ApiFuzzer::Result ApiFuzzer::CreateChannel( const api_fuzzer::CreateChannel& create_channel) { - if (!create_channel.channel_actions_size() || channel_ != nullptr) { - return Result::kFailed; - } else { - grpc_channel_args* args = - ReadArgs(resource_quota_, create_channel.channel_args()); - grpc_channel_credentials* creds = - create_channel.has_channel_creds() - ? ReadChannelCreds(create_channel.channel_creds()) - : grpc_insecure_credentials_create(); - channel_ = - grpc_channel_create(create_channel.target().c_str(), creds, args); - grpc_channel_credentials_release(creds); - channel_actions_.clear(); - for (int i = 0; i < create_channel.channel_actions_size(); i++) { - const api_fuzzer::ChannelAction& channel_action = - create_channel.channel_actions(i); - channel_actions_.push_back({ - std::min(channel_action.wait_ms(), kMaxWaitMs), - std::min(channel_action.add_n_bytes_writable(), - kMaxAddNWritableBytes), - std::min(channel_action.add_n_bytes_readable(), - kMaxAddNReadableBytes), - }); - } - GPR_ASSERT(channel_ != nullptr); - channel_force_delete_ = false; - { - grpc_core::ExecCtx exec_ctx; - grpc_channel_args_destroy(args); - } + grpc_channel_args* args = + ReadArgs(resource_quota_, create_channel.channel_args()); + grpc_channel_credentials* creds = + create_channel.has_channel_creds() + ? ReadChannelCreds(create_channel.channel_creds()) + : grpc_insecure_credentials_create(); + channel_ = grpc_channel_create(create_channel.target().c_str(), creds, args); + grpc_channel_credentials_release(creds); + GPR_ASSERT(channel_ != nullptr); + channel_force_delete_ = false; + { + grpc_core::ExecCtx exec_ctx; + grpc_channel_args_destroy(args); } return Result::kComplete; } diff --git a/test/core/end2end/fuzzers/api_fuzzer.proto b/test/core/end2end/fuzzers/api_fuzzer.proto index df7ecbde633..d00f63523cf 100644 --- a/test/core/end2end/fuzzers/api_fuzzer.proto +++ b/test/core/end2end/fuzzers/api_fuzzer.proto @@ -93,17 +93,10 @@ message Metadatum { ByteSlice value = 2; } -message ChannelAction { - uint64 add_n_bytes_writable = 1; - uint64 add_n_bytes_readable = 2; - uint64 wait_ms = 3; -} - message CreateChannel { string target = 1; repeated ChannelArg channel_args = 2; ChannelCreds channel_creds = 3; - repeated ChannelAction channel_actions = 4; } message CreateServer { diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-4813636509761536 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-4813636509761536 deleted file mode 100644 index b44c1cc0244..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-4813636509761536 +++ /dev/null @@ -1,21 +0,0 @@ -actions { - create_channel { - target: "unix: {" - channel_args { - key: "grpc.max_metadata_size" - i: 1236454714901355 - } - channel_actions { - add_n_bytes_writable: 21 - add_n_bytes_readable: 18446744069414584320 - wait_ms: 8 - } - } -} -actions { - create_server { - } -} -actions { - check_connectivity: true -} diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5024669712646144 b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5024669712646144 deleted file mode 100644 index 9b6a9be8547..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5024669712646144 +++ /dev/null @@ -1,34 +0,0 @@ -actions { - create_channel { - target: "unix::p,,1,,,,::, H?:::c238:::::;::::::" - channel_args { - key: "grpc.default_authority" - str: "[[[[[[[[[[[[[[[E[[[[[[[[[[[[[[[[[[[[[[0<[2]<[d[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\000" - } - channel_creds { - ssl_channel_creds { - } - } - channel_actions { - add_n_bytes_writable: 26888 - add_n_bytes_readable: 8589934592 - } - channel_actions { - add_n_bytes_readable: 26888 - wait_ms: 1 - } - } -} -actions { - get_target { - } -} -actions { - create_server { - } -} -actions { - check_connectivity: true -} -actions { -} diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5916612266688512.fuzz b/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5916612266688512.fuzz deleted file mode 100644 index 04a6a472c42..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/clusterfuzz-testcase-minimized-api_fuzzer-5916612266688512.fuzz +++ /dev/null @@ -1,249 +0,0 @@ -actions { - create_server { - } -} -actions { - create_channel { - target: "unix::p,,2,,,,,,,,,,,,,,,,,,(:,,,6,,,,,,,,,,,,,,,,,,(:,,,6,,,,,,,,,,,,\314\272,,,,,,}\177\177\017,,,1,,,,,,,,,,,,,,,,,,(:,,,6,,,,,,,,,,,,,,,,,,(:,,,6,,,,,,,,,,,,,,,,,,,,,,,(:,,,6,,,,,,,,,,,,,,,6,grpc.internal.channel_credentials,,,,,,,,:" - channel_args { - key: "grpc.default_authority" - str: "" - } - channel_args { - key: "grpc.min_reconnect_backoff_ms" - } - channel_creds { - composite_channel_creds { - channel_creds { - composite_channel_creds { - channel_creds { - composite_channel_creds { - channel_creds { - composite_channel_creds { - channel_creds { - ssl_channel_creds { - } - } - } - } - } - } - } - } - } - } - channel_actions { - add_n_bytes_writable: 122045790683136 - add_n_bytes_readable: 89 - } - } -} -actions { - create_call { - method { - value: "ht_p" - } - timeout: 7012449 - } -} -actions { - get_target { - } -} -actions { - ping { - } -} -actions { - change_active_call { - } -} -actions { - queue_batch { - } -} -actions { - get_target { - } -} -actions { - ping { - } -} -actions { - check_connectivity: true -} -actions { - create_call { - propagation_mask: 7995396 - method { - value: "\001\n" - } - timeout: 67108864 - } -} -actions { - cancel_call { - } -} -actions { - change_active_call { - } -} -actions { - create_call { - propagation_mask: 96 - method { - value: "ht-tp" - } - timeout: 6383104 - } -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} -actions { -} diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/empty similarity index 100% rename from test/core/end2end/fuzzers/api_fuzzer_corpus/0 rename to test/core/end2end/fuzzers/api_fuzzer_corpus/empty diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/sleep-crash b/test/core/end2end/fuzzers/api_fuzzer_corpus/sleep-crash deleted file mode 100644 index 0e6c3700500..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/sleep-crash +++ /dev/null @@ -1,32 +0,0 @@ -actions { - create_server {} -} -actions { - create_channel { - target: - "unixpepPthtGK9223372036854775807" - channel_args{key : "grpc.client_idle_timeout_ms" i : 4297} channel_actions { - } - } -} -actions { - create_call { - method { - value: - "w" - } - } -} -actions { - ping {} -} -actions { - request_call {} -} -actions { - queue_batch { - operations { - send_initial_metadata {} - } - } -} diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-4638125285834752 b/test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-4638125285834752 deleted file mode 100644 index 4cd8d3c19b4..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-4638125285834752 +++ /dev/null @@ -1,48 +0,0 @@ -actions { - create_server { - } -} -actions { - create_channel { - target: "unix::peht046,,\343\236\2349,Sac,,t" - channel_actions { - add_n_bytes_readable: 89 - } - channel_actions { - add_n_bytes_writable: 31769 - } - channel_actions { - wait_ms: 20 - } - } -} -actions { - create_call { - propagation_mask: 9869440 - method { - value: "v" - } - timeout: 100000000 - } -} -actions { - queue_batch { - operations { - send_initial_metadata { - metadata { - key { - value: "grpc-tags-bin" - } - value { - value: "\272\272\272\272272\027\\nactions {\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 64\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"1\"\n }\n timeout: 1801545216\n }\n}\nactions {\n ping {\n }\n}\nactions {\n cancel_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\\\177\\177\\177\\177\\177\\177\\177\\360\\251\\262\\202\\361\\277\\256\\257\\363\\223\\236\\247\\360\\273\\217\\204\\362\\211\\207\\240\\363\\215\\201\\272\\361\\216\\237\\273\\363\\221\\210\\216\\360\\253\\267\\265\\362\\265\\244\\264\\363\\200\\261\\257\\363\\265\\250\\236\\361\\212\\224\\212\\363\\244\\252\\257\\361\\266\\206\\236\\360\\257\\216\\202\\363\\204\\216\\252\\363\\234\\255\\212\\360\\232\\232\\245\\364\\207\\235\\255\\362\\243\\252\\270\\177\\\\_batch {\\n operations {\\n send_initial_metadata {\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bobgrpc.keepal&ve_time_ms\\\"\\n intern: true\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"hutp\\\"\\n intern: true\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http-bin\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n metadata {\n key {\n value: \"e:=\"\n }\n }\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\7\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n cancel_call {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n metadata {\n key {\n value: \"http\"\n }\n }\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"1\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n propagation_mask: 10000000\n method {\n value: \"G\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"1\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\347\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n metadata {\n key {\n value: \"/foo\"\n }\n }\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n resize_resource_quota: 0\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\243\\\\\\\\\\\\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-3411bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-467bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\001\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n host {\n value: \"\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\"\n }\n timeout: 67108864\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\dns:server\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_status_from_server {\n status_details {\n }\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n flags: 268435457\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n flags: 4\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\t77\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\007aaaaaaaaaaaaaaaaaaa\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n create_channel {\\n channel_args {\\n key: \\\"http\\\"\\n resource_quota {\\n }\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n }\\n channel_args {\\n str: \\\"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n str: \\\"\\\"\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"xds_clustes {\\\\n create_server {\\\\n r_resolver_e\\\"\\n str: \\\"http\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n ciannel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n create_channel {\\n channel_args {\\n key: \\\"http\\\"\\n str: \\\"\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\231\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n }\\n channel_args {\\n str: \\\"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 64\n }\n}\nactions {\n cancel_call {\n }\n}\nactions {\n poll_cq {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n queue_batch {\n operations {\n send_message {\n }\n }\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb poll_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 64\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"1\"\n }\n timeout: 1801545216\n }\n}\nactions {\n ping {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n queue_batch {\n }\n}\nactions {\n queue_batch {\n operations {\n receive_status_on_client {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 64\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-867bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\001\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 1801545216\n }\n}\nactions {\n ping {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n queue_batch {\n operations {\n send_message {\n }\n }\n }\n}\nactions {\n queue_batch {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 18446744073709551479ing {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 8256\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"1\"\n }\n timeout: 1801545216\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-867bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb channel_args {\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n key: \\\"xds_clustes {\\\\n create_server {\\\\n r_resolver_e\\\"\\n str: \\\"http\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"aaaaaaaaaaaaaaaaaaaaa\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"aaaaaaaaaaaaaaaaaaaaa\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n create_channel {\\n channel_args {\\n key: \\\"http\\\"\\n resource_quota {\\n }\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n }\\n channel_args {\\n str: \\\"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n str: \\\"\\\"\\n }\\n channel_args {\\n resource_quota {\\n }\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n str: \\\"\\\"\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"xds_clustes {\\\\n create_server {\\\\n r_resolver_e\\\"\\n str: \\\"http\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n advance_time: 268435456\\n}\\nactions {\\n create_channel {\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\-1\\\\000\\\\000\\\"\\n }\\n channel_args {\\n str: \\\"aaaaaaaaaaaaaaaaaaaaa\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n key: \\\"http\\\"\\n str: \\\"\\\\032\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n key: \\\"http\\\"\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n advan1\"\n }\n timeout: 869738191\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n queue_batch {\n operations {\n send_message {\n }\n }\n }\n}\nactions {\n destroy_call {\n }\n}\nactions {\n check_connectivity: true\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-867bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb channel_args {\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n key: \\\"xds_clustes {\\\\n create_server {\\\\n r_resolver_e\\\"\\n str: \\\"http\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"aaaaaaaaaaaaaaaaaaaaa\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n create_channel {\\n channel_args {\\n key: \\\"http\\\"\\n resource_quota {\\n }\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n }\\n channel_args {\\n str: \\\"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n str: \\\"\\\"\\n }\\n channel_args {\\n resource_quota {\\n }\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"xds_clustes {\\\\n create_server {\\\\n r_resolver_e\\\"\\n str: \\\"http\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n }\\n}\\nactions {\\n create_channel {\\n channel_args {\\n key: \\\"http\\\"\\n str: \\\"\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\231\\\\031\\\\031\\\\03\\261\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\\031\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n key: \\\"\\\\022\\\"\\n }\\n channel_args {\\n str: \\\"\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n }\\n channel_args {\\n str: \\\"\\\"\\n }\\n channel_args {\\n bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n \\037get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 64\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"1\"\n }\n timeout: 1801545216\n }\n}\nactions {\n ping {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n queue_batch {\n operations {\n send_message {\n }\n }\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\362\\236\\235\\235\\362\\230\\252\\225\\035bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-867bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\001\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67109888\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"1\"\n }\n timeout: 1801545216\n }\n}\nactions {\n destroy_call {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n propagation_mask: 1245184\n method {\n value: \"\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\334177\\177\\177\\177\\177\\177\\177\\177\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\2667\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266E%\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\177\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n }\\n metadata {\\n key {\\n value: \\\"hutp\\\"\\n intern: true\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http-bin\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbtp\\\"\\n intern: true\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http-bin\\\"\\n }\\n }\\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\232Hbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n timeout: 64\n }\n}\nactions {\n create_call {\n propagation_mask: 4\n method {\n value: \"1\"\n }\n timeout: 1801545216\n }\n}\nactions {\n ping {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\177\\334177\\177\\177\\177\\177\\177\\177\\177\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\2667\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\266\\177\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\3571644\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n }\\n metadata {\\n key {\\n value: \\\"hutp\\\"\\n intern: true\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http-bin\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbtp\\\"\\n intern: true\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http-bin\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n }\\n metadata {\\n key {\\n value: \\\"http\\\"\\n }\\n value {\\n value: \\\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{\\n advance_time: 0\\n}\\nactions {\\n ping {\\n }\\n}\\nactions {\\n get_peer {\\n }\\n}\\nactions {\\n advance_time: 1694498816\\n}\\nactions {\\n check_connectivity: true\\n}\\nactions {\\n}\\n\"\n }\n host {\n value: \"1\"\n }\n timeout: 64\n }\n}\nactions {\n}\nactions {\n ping {\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n check_connectivity: true\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n metadata {\n key {\n value: \"http\"\n }\n }\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb1}bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbhbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\242bbbbbbbbbbbbbbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-3372bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb-867bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\001\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\177\\177\\177\\177\"\n }\n timeout: 67108864\n }\n}\nactions {\n queue_batch {\n operations {\n send_initial_metadata {\n metadata {\n key {\n value: \"http\"\n }\n }\n }\n }\n }\n}\nactions {\n change_active_call {\n }\n}\nactions {\n create_call {\n method {\n value: \"\\177\\177\\177\\177\\017\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\010bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb2\272\272\027e\27777777777777777777777777777777777772\272\272\272" - } - } - } - } - } -} -actions { - advance_time: 8224540 -} -actions { -} diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-6256752625319936 b/test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-6256752625319936 deleted file mode 100644 index d666cbec3ba..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/testcase-6256752625319936 +++ /dev/null @@ -1,86 +0,0 @@ -actions { - create_server { - channel_args { - key: "grpc.resource_quota" - str: "unix::67440737046,,Sac,,t49,Sa\n\000c,,t" - } - } -} -actions { - create_channel { - target: "unix::67440737046,,Sac,,t49,Sa\n\000c,,t" - channel_args { - key: "M" - } - channel_args { - key: "grpc.resource_quota" - resource_quota { - } - } - channel_actions { - wait_ms: 4096 - } - channel_actions { - add_n_bytes_writable: 1024 - add_n_bytes_readable: 1 - } - channel_actions { - wait_ms: 1 - } - } -} -actions { - create_call { - method { - value: "2" - } - host { - value: "1" - } - timeout: 1000000127 - } -} -actions { - resize_resource_quota: 3881880 -} -actions { - queue_batch { - operations { - send_initial_metadata { - metadata { - key { - value: "2" - } - } - } - } - } -} -actions { - resize_resource_quota: 4294967294 -} -actions { -} -actions { -} -actions { - resize_resource_quota: 3881880 -} -actions { - request_call { - } -} -actions { -} -actions { - resize_resource_quota: 3881880 -} -actions { -} -event_engine_actions { - tick_lengths { - } - tick_lengths { - delay_us: 5692549928996306944 - } -} diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-36dbe33cfc4d07ab5c01f283c901ee35bc6de2fd b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-36dbe33cfc4d07ab5c01f283c901ee35bc6de2fd deleted file mode 100644 index cf3215f06a1..00000000000 --- a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-36dbe33cfc4d07ab5c01f283c901ee35bc6de2fd +++ /dev/null @@ -1,49 +0,0 @@ -actions { - create_server { - } -} -actions { - create_channel { - target: "unix::peht046,,\343\236\2349,Sac,,t" - channel_actions { - add_n_bytes_readable: 89 - wait_ms: 35195367205109760 - } - channel_actions { - add_n_bytes_writable: 31769 - add_n_bytes_readable: 35195367205109760 - } - channel_actions { - wait_ms: 20 - } - } -} -actions { - create_call { - propagation_mask: 9869440 - method { - value: "v" - } - timeout: 100000000 - } -} -actions { - queue_batch { - operations { - send_initial_metadata { - metadata { - key { - value: "grpc-tags-bin" - } - value { - value: "unix::peht046,,\343\236\2349,Sac,,t" - } - } - } - } - } -} -actions { -} -actions { -} diff --git a/test/core/end2end/h2_ssl_cert_test.cc b/test/core/end2end/h2_ssl_cert_test.cc index 0f713c785ca..98501b319dd 100644 --- a/test/core/end2end/h2_ssl_cert_test.cc +++ b/test/core/end2end/h2_ssl_cert_test.cc @@ -197,15 +197,19 @@ static void simple_request_body(grpc_core::CoreTestFixture* f, test_result expected_result) { grpc_call* c; gpr_timespec deadline = grpc_timeout_seconds_to_deadline(5); - grpc_core::CqVerifier cqv(f->cq()); + grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); + grpc_core::CqVerifier cqv(cq); grpc_op ops[6]; grpc_op* op; grpc_call_error error; + grpc_channel* client = f->MakeClient(grpc_core::ChannelArgs(), cq); + grpc_server* server = f->MakeServer(grpc_core::ChannelArgs(), cq); + grpc_slice host = grpc_slice_from_static_string("foo.test.google.fr:1234"); - c = grpc_channel_create_call(f->client(), nullptr, GRPC_PROPAGATE_DEFAULTS, - f->cq(), grpc_slice_from_static_string("/foo"), - &host, deadline, nullptr); + c = grpc_channel_create_call(client, nullptr, GRPC_PROPAGATE_DEFAULTS, cq, + grpc_slice_from_static_string("/foo"), &host, + deadline, nullptr); GPR_ASSERT(c); memset(ops, 0, sizeof(ops)); @@ -223,6 +227,16 @@ static void simple_request_body(grpc_core::CoreTestFixture* f, cqv.Verify(); grpc_call_unref(c); + grpc_channel_destroy(client); + grpc_server_shutdown_and_notify(server, cq, nullptr); + cqv.Expect(nullptr, true); + cqv.Verify(); + grpc_server_destroy(server); + grpc_completion_queue_shutdown(cq); + GPR_ASSERT(grpc_completion_queue_next(cq, gpr_inf_future(GPR_CLOCK_REALTIME), + nullptr) + .type == GRPC_QUEUE_SHUTDOWN); + grpc_completion_queue_destroy(cq); } class H2SslCertTest : public ::testing::TestWithParam { @@ -233,8 +247,6 @@ class H2SslCertTest : public ::testing::TestWithParam { void SetUp() override { fixture_ = GetParam().config.create_fixture(grpc_core::ChannelArgs(), grpc_core::ChannelArgs()); - fixture_->InitServer(grpc_core::ChannelArgs()); - fixture_->InitClient(grpc_core::ChannelArgs()); } void TearDown() override { fixture_.reset(); } diff --git a/test/core/end2end/seed_end2end_corpus.cc b/test/core/end2end/seed_end2end_corpus.cc new file mode 100644 index 00000000000..3b66303cd20 --- /dev/null +++ b/test/core/end2end/seed_end2end_corpus.cc @@ -0,0 +1,69 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#include +#include +#include +#include + +#include "absl/cleanup/cleanup.h" +#include "absl/strings/str_cat.h" +#include "gtest/gtest.h" + +#include "src/core/lib/experiments/config.h" +#include "src/core/lib/experiments/experiments.h" +#include "test/core/end2end/end2end_tests.h" +#include "test/core/util/test_config.h" + +int main(int argc, char** argv) { + grpc::testing::TestEnvironment env(&argc, argv); + ::testing::InitGoogleTest(&argc, argv); + const auto all_tests = grpc_core::CoreEnd2endTestRegistry::Get().AllTests(); + // We want to produce a set of test cases that exercise all known tests under + // all known configurations... and we want to include all known experiments in + // that set. + // Beyond that, we sort of don't care and expect the fuzzer to do its job. + std::set> suite_and_test_pairs; + std::set configs; + std::queue experiments; + for (size_t i = 0; i < grpc_core::kNumExperiments; i++) { + experiments.push(grpc_core::g_experiment_metadata[i].name); + } + for (const auto& test : all_tests) { + if (test.config->feature_mask & FEATURE_MASK_DO_NOT_FUZZ) continue; + const bool added_suite = + suite_and_test_pairs.emplace(test.suite, test.name).second; + const bool added_config = configs.emplace(test.config->name).second; + if (!added_suite && !added_config) continue; + auto text = + absl::StrCat("suite: \"", test.suite, "\"\n", "test: \"", test.name, + "\"\n", "config: \"", test.config->name, "\"\n"); + if (!experiments.empty()) { + absl::StrAppend(&text, "config_vars {\n experiments: \"", + experiments.front(), "\"\n}\n"); + experiments.pop(); + } + auto file = + absl::StrCat("test/core/end2end/end2end_test_corpus/", test.suite, "_", + test.name, "_", test.config->name, ".textproto"); + fprintf(stderr, "WRITE: %s\n", file.c_str()); + FILE* f = fopen(file.c_str(), "w"); + if (!f) return 1; + auto cleanup = absl::MakeCleanup([f]() { fclose(f); }); + fwrite(text.c_str(), 1, text.size(), f); + } +} diff --git a/test/core/end2end/tests/bad_ping.cc b/test/core/end2end/tests/bad_ping.cc index 19ec4bcb9ad..50759b5bc23 100644 --- a/test/core/end2end/tests/bad_ping.cc +++ b/test/core/end2end/tests/bad_ping.cc @@ -31,7 +31,7 @@ namespace grpc_core { namespace { // Send more pings than server allows to trigger server's GOAWAY. -TEST_P(RetryHttp2Test, BadPing) { +CORE_END2END_TEST(RetryHttp2Test, BadPing) { InitClient(ChannelArgs() .Set(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA, 0) .Set(GRPC_ARG_HTTP2_BDP_PROBE, 0)); @@ -84,7 +84,7 @@ TEST_P(RetryHttp2Test, BadPing) { // Try sending more pings than server allows, but server should be fine because // max_pings_without_data should limit pings sent out on wire. -TEST_P(RetryHttp2Test, PingsWithoutData) { +CORE_END2END_TEST(RetryHttp2Test, PingsWithoutData) { // Only allow MAX_PING_STRIKES pings without data (DATA/HEADERS/WINDOW_UPDATE) // so that the transport will throttle the excess pings. InitClient(ChannelArgs() diff --git a/test/core/end2end/tests/binary_metadata.cc b/test/core/end2end/tests/binary_metadata.cc index 67a7ea697c1..f7138e977c9 100644 --- a/test/core/end2end/tests/binary_metadata.cc +++ b/test/core/end2end/tests/binary_metadata.cc @@ -100,19 +100,23 @@ static void BinaryMetadata(CoreEnd2endTest& test, bool server_true_binary, key6_payload.as_string_view()); } -TEST_P(CoreEnd2endTest, BinaryMetadataServerTrueBinaryClientHttp2Fallback) { +CORE_END2END_TEST(CoreEnd2endTest, + BinaryMetadataServerTrueBinaryClientHttp2Fallback) { BinaryMetadata(*this, true, false); } -TEST_P(CoreEnd2endTest, BinaryMetadataServerHttp2FallbackClientTrueBinary) { +CORE_END2END_TEST(CoreEnd2endTest, + BinaryMetadataServerHttp2FallbackClientTrueBinary) { BinaryMetadata(*this, false, true); } -TEST_P(CoreEnd2endTest, BinaryMetadataServerTrueBinaryClientTrueBinary) { +CORE_END2END_TEST(CoreEnd2endTest, + BinaryMetadataServerTrueBinaryClientTrueBinary) { BinaryMetadata(*this, true, true); } -TEST_P(CoreEnd2endTest, BinaryMetadataServerHttp2FallbackClientHttp2Fallback) { +CORE_END2END_TEST(CoreEnd2endTest, + BinaryMetadataServerHttp2FallbackClientHttp2Fallback) { BinaryMetadata(*this, false, false); } diff --git a/test/core/end2end/tests/call_creds.cc b/test/core/end2end/tests/call_creds.cc index 731b18cadb7..69a6eb41182 100644 --- a/test/core/end2end/tests/call_creds.cc +++ b/test/core/end2end/tests/call_creds.cc @@ -238,7 +238,8 @@ void TestRequestResponseWithPayloadAndDeletedCallCreds( EXPECT_EQ(s.GetInitialMetadata(fake_md_key), absl::nullopt); } -TEST_P(PerCallCredsOnInsecureTest, RequestWithServerRejectingClientCreds) { +CORE_END2END_TEST(PerCallCredsOnInsecureTest, + RequestWithServerRejectingClientCreds) { InitClient(ChannelArgs()); InitServer(ChannelArgs().Set(FAIL_AUTH_CHECK_SERVER_ARG_NAME, true)); auto c = NewClientCall("/foo").Timeout(Duration::Seconds(10)).Create(); @@ -261,48 +262,51 @@ TEST_P(PerCallCredsOnInsecureTest, RequestWithServerRejectingClientCreds) { EXPECT_EQ(server_status.status(), GRPC_STATUS_UNAUTHENTICATED); } -TEST_P(PerCallCredsTest, RequestResponseWithPayloadAndCallCreds) { +CORE_END2END_TEST(PerCallCredsTest, RequestResponseWithPayloadAndCallCreds) { TestRequestResponseWithPayloadAndCallCreds(*this, true); } -TEST_P(PerCallCredsTest, RequestResponseWithPayloadAndOverriddenCallCreds) { +CORE_END2END_TEST(PerCallCredsTest, + RequestResponseWithPayloadAndOverriddenCallCreds) { TestRequestResponseWithPayloadAndOverriddenCallCreds(*this, true); } -TEST_P(PerCallCredsTest, RequestResponseWithPayloadAndDeletedCallCreds) { +CORE_END2END_TEST(PerCallCredsTest, + RequestResponseWithPayloadAndDeletedCallCreds) { TestRequestResponseWithPayloadAndDeletedCallCreds(*this, true); } -TEST_P(PerCallCredsTest, RequestResponseWithPayloadAndInsecureCallCreds) { +CORE_END2END_TEST(PerCallCredsTest, + RequestResponseWithPayloadAndInsecureCallCreds) { TestRequestResponseWithPayloadAndCallCreds(*this, false); } -TEST_P(PerCallCredsTest, - RequestResponseWithPayloadAndOverriddenInsecureCallCreds) { +CORE_END2END_TEST(PerCallCredsTest, + RequestResponseWithPayloadAndOverriddenInsecureCallCreds) { TestRequestResponseWithPayloadAndOverriddenCallCreds(*this, false); } -TEST_P(PerCallCredsTest, - RequestResponseWithPayloadAndDeletedInsecureCallCreds) { +CORE_END2END_TEST(PerCallCredsTest, + RequestResponseWithPayloadAndDeletedInsecureCallCreds) { TestRequestResponseWithPayloadAndDeletedCallCreds(*this, false); } -TEST_P(PerCallCredsOnInsecureTest, - RequestResponseWithPayloadAndInsecureCallCreds) { +CORE_END2END_TEST(PerCallCredsOnInsecureTest, + RequestResponseWithPayloadAndInsecureCallCreds) { TestRequestResponseWithPayloadAndCallCreds(*this, false); } -TEST_P(PerCallCredsOnInsecureTest, - RequestResponseWithPayloadAndOverriddenInsecureCallCreds) { +CORE_END2END_TEST(PerCallCredsOnInsecureTest, + RequestResponseWithPayloadAndOverriddenInsecureCallCreds) { TestRequestResponseWithPayloadAndOverriddenCallCreds(*this, false); } -TEST_P(PerCallCredsOnInsecureTest, - RequestResponseWithPayloadAndDeletedInsecureCallCreds) { +CORE_END2END_TEST(PerCallCredsOnInsecureTest, + RequestResponseWithPayloadAndDeletedInsecureCallCreds) { TestRequestResponseWithPayloadAndDeletedCallCreds(*this, false); } -TEST_P(PerCallCredsOnInsecureTest, FailToSendCallCreds) { +CORE_END2END_TEST(PerCallCredsOnInsecureTest, FailToSendCallCreds) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); grpc_call_credentials* creds; creds = grpc_google_iam_credentials_create(iam_token, iam_selector, nullptr); diff --git a/test/core/end2end/tests/call_host_override.cc b/test/core/end2end/tests/call_host_override.cc index 7887c6d5cdc..64d007cccf8 100644 --- a/test/core/end2end/tests/call_host_override.cc +++ b/test/core/end2end/tests/call_host_override.cc @@ -29,7 +29,7 @@ namespace grpc_core { namespace { -TEST_P(CoreClientChannelTest, CallHostOverride) { +CORE_END2END_TEST(CoreClientChannelTest, CallHostOverride) { InitClient(ChannelArgs().Set(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, "foo.test.google.fr:1234")); InitServer(ChannelArgs()); diff --git a/test/core/end2end/tests/cancel_after_accept.cc b/test/core/end2end/tests/cancel_after_accept.cc index 33d9da9dfbe..bf1c125e556 100644 --- a/test/core/end2end/tests/cancel_after_accept.cc +++ b/test/core/end2end/tests/cancel_after_accept.cc @@ -65,17 +65,17 @@ void CancelAfterAccept(CoreEnd2endTest& test, EXPECT_TRUE(client_close.was_cancelled()); } -TEST_P(CoreEnd2endTest, CancelAfterAccept) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterAccept) { CancelAfterAccept(*this, std::make_unique(), Duration::Seconds(5)); } -TEST_P(CoreDeadlineTest, DeadlineAfterAccept) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterAccept) { CancelAfterAccept(*this, std::make_unique(), Duration::Seconds(5)); } -TEST_P(CoreClientChannelTest, DeadlineAfterAcceptWithServiceConfig) { +CORE_END2END_TEST(CoreClientChannelTest, DeadlineAfterAcceptWithServiceConfig) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/cancel_after_client_done.cc b/test/core/end2end/tests/cancel_after_client_done.cc index 244a4e80f95..5b49a362002 100644 --- a/test/core/end2end/tests/cancel_after_client_done.cc +++ b/test/core/end2end/tests/cancel_after_client_done.cc @@ -66,11 +66,11 @@ void CancelAfterClientDone( EXPECT_TRUE(client_close.was_cancelled()); } -TEST_P(CoreEnd2endTest, CancelAfterClientDone) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterClientDone) { CancelAfterClientDone(*this, std::make_unique()); } -TEST_P(CoreDeadlineTest, DeadlineAfterClientDone) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterClientDone) { CancelAfterClientDone(*this, std::make_unique()); } diff --git a/test/core/end2end/tests/cancel_after_invoke.cc b/test/core/end2end/tests/cancel_after_invoke.cc index d72ff77b1bc..84f01e63c69 100644 --- a/test/core/end2end/tests/cancel_after_invoke.cc +++ b/test/core/end2end/tests/cancel_after_invoke.cc @@ -108,35 +108,35 @@ void CancelAfterInvoke3(CoreEnd2endTest& test, ::testing::AnyOf(mode->ExpectedStatus(), GRPC_STATUS_INTERNAL)); } -TEST_P(CoreEnd2endTest, CancelAfterInvoke6) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterInvoke6) { CancelAfterInvoke6(*this, std::make_unique()); } -TEST_P(CoreEnd2endTest, CancelAfterInvoke5) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterInvoke5) { CancelAfterInvoke5(*this, std::make_unique()); } -TEST_P(CoreEnd2endTest, CancelAfterInvoke4) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterInvoke4) { CancelAfterInvoke4(*this, std::make_unique()); } -TEST_P(CoreEnd2endTest, CancelAfterInvoke3) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterInvoke3) { CancelAfterInvoke3(*this, std::make_unique()); } -TEST_P(CoreDeadlineTest, DeadlineAfterInvoke6) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterInvoke6) { CancelAfterInvoke6(*this, std::make_unique()); } -TEST_P(CoreDeadlineTest, DeadlineAfterInvoke5) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterInvoke5) { CancelAfterInvoke5(*this, std::make_unique()); } -TEST_P(CoreDeadlineTest, DeadlineAfterInvoke4) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterInvoke4) { CancelAfterInvoke4(*this, std::make_unique()); } -TEST_P(CoreDeadlineTest, DeadlineAfterInvoke3) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterInvoke3) { CancelAfterInvoke3(*this, std::make_unique()); } diff --git a/test/core/end2end/tests/cancel_after_round_trip.cc b/test/core/end2end/tests/cancel_after_round_trip.cc index a353d2fa479..11c1ed9a105 100644 --- a/test/core/end2end/tests/cancel_after_round_trip.cc +++ b/test/core/end2end/tests/cancel_after_round_trip.cc @@ -68,17 +68,18 @@ void CancelAfterRoundTrip(CoreEnd2endTest& test, EXPECT_TRUE(client_close.was_cancelled()); } -TEST_P(CoreEnd2endTest, CancelAfterRoundTrip) { +CORE_END2END_TEST(CoreEnd2endTest, CancelAfterRoundTrip) { CancelAfterRoundTrip(*this, std::make_unique(), Duration::Seconds(5)); } -TEST_P(CoreDeadlineTest, DeadlineAfterRoundTrip) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineAfterRoundTrip) { CancelAfterRoundTrip(*this, std::make_unique(), Duration::Seconds(5)); } -TEST_P(CoreClientChannelTest, DeadlineAfterAcceptWithServiceConfig) { +CORE_END2END_TEST(CoreClientChannelTest, + DeadlineAfterRoundTripWithServiceConfig) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/cancel_before_invoke.cc b/test/core/end2end/tests/cancel_before_invoke.cc index 4dd5e0feeeb..68dd5aedb78 100644 --- a/test/core/end2end/tests/cancel_before_invoke.cc +++ b/test/core/end2end/tests/cancel_before_invoke.cc @@ -24,7 +24,7 @@ namespace grpc_core { -TEST_P(CoreEnd2endTest, CancelBeforeInvoke6) { +CORE_END2END_TEST(CoreEnd2endTest, CancelBeforeInvoke6) { auto c = NewClientCall("/service/method").Create(); c.Cancel(); CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -42,7 +42,7 @@ TEST_P(CoreEnd2endTest, CancelBeforeInvoke6) { EXPECT_EQ(server_status.status(), GRPC_STATUS_CANCELLED); } -TEST_P(CoreEnd2endTest, CancelBeforeInvoke5) { +CORE_END2END_TEST(CoreEnd2endTest, CancelBeforeInvoke5) { auto c = NewClientCall("/service/method").Create(); c.Cancel(); CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -58,7 +58,7 @@ TEST_P(CoreEnd2endTest, CancelBeforeInvoke5) { EXPECT_EQ(server_status.status(), GRPC_STATUS_CANCELLED); } -TEST_P(CoreEnd2endTest, CancelBeforeInvoke4) { +CORE_END2END_TEST(CoreEnd2endTest, CancelBeforeInvoke4) { auto c = NewClientCall("/service/method").Create(); c.Cancel(); CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -72,7 +72,7 @@ TEST_P(CoreEnd2endTest, CancelBeforeInvoke4) { EXPECT_EQ(server_status.status(), GRPC_STATUS_CANCELLED); } -TEST_P(CoreEnd2endTest, CancelBeforeInvoke3) { +CORE_END2END_TEST(CoreEnd2endTest, CancelBeforeInvoke3) { auto c = NewClientCall("/service/method").Create(); c.Cancel(); CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -85,7 +85,7 @@ TEST_P(CoreEnd2endTest, CancelBeforeInvoke3) { EXPECT_EQ(server_status.status(), GRPC_STATUS_CANCELLED); } -TEST_P(CoreEnd2endTest, CancelBeforeInvoke2) { +CORE_END2END_TEST(CoreEnd2endTest, CancelBeforeInvoke2) { auto c = NewClientCall("/service/method").Create(); c.Cancel(); CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -95,7 +95,7 @@ TEST_P(CoreEnd2endTest, CancelBeforeInvoke2) { EXPECT_EQ(server_status.status(), GRPC_STATUS_CANCELLED); } -TEST_P(CoreEnd2endTest, CancelBeforeInvoke1) { +CORE_END2END_TEST(CoreEnd2endTest, CancelBeforeInvoke1) { auto c = NewClientCall("/service/method").Create(); c.Cancel(); CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/cancel_in_a_vacuum.cc b/test/core/end2end/tests/cancel_in_a_vacuum.cc index 135475068e7..1fa99ffc79f 100644 --- a/test/core/end2end/tests/cancel_in_a_vacuum.cc +++ b/test/core/end2end/tests/cancel_in_a_vacuum.cc @@ -16,17 +16,15 @@ // // -#include "gtest/gtest.h" - #include "test/core/end2end/end2end_tests.h" namespace grpc_core { -TEST_P(CoreEnd2endTest, CancelInAVacuum) { +CORE_END2END_TEST(CoreEnd2endTest, CancelInAVacuum) { NewClientCall("/service/method").Create().Cancel(); } -TEST_P(CoreDeadlineTest, DeadlineInAVacuum) { +CORE_END2END_TEST(CoreDeadlineTest, DeadlineInAVacuum) { NewClientCall("/service/method").Create(); } diff --git a/test/core/end2end/tests/cancel_with_status.cc b/test/core/end2end/tests/cancel_with_status.cc index fa97a1bb20a..c30bf88e53e 100644 --- a/test/core/end2end/tests/cancel_with_status.cc +++ b/test/core/end2end/tests/cancel_with_status.cc @@ -28,7 +28,7 @@ namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, CancelWithStatus1) { +CORE_END2END_TEST(CoreEnd2endTest, CancelWithStatus1) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; c.NewBatch(1).RecvStatusOnClient(server_status); @@ -43,7 +43,7 @@ TEST_P(CoreEnd2endTest, CancelWithStatus1) { EXPECT_EQ(server_status.message(), "xyz"); } -TEST_P(CoreEnd2endTest, CancelWithStatus2) { +CORE_END2END_TEST(CoreEnd2endTest, CancelWithStatus2) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -61,7 +61,7 @@ TEST_P(CoreEnd2endTest, CancelWithStatus2) { EXPECT_EQ(server_status.message(), "xyz"); } -TEST_P(CoreEnd2endTest, CancelWithStatus3) { +CORE_END2END_TEST(CoreEnd2endTest, CancelWithStatus3) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -80,7 +80,7 @@ TEST_P(CoreEnd2endTest, CancelWithStatus3) { EXPECT_EQ(server_status.message(), "xyz"); } -TEST_P(CoreEnd2endTest, CancelWithStatus4) { +CORE_END2END_TEST(CoreEnd2endTest, CancelWithStatus4) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/channelz.cc b/test/core/end2end/tests/channelz.cc index d5e7f6d2938..8f3b198266f 100644 --- a/test/core/end2end/tests/channelz.cc +++ b/test/core/end2end/tests/channelz.cc @@ -64,7 +64,7 @@ void RunOneRequest(CoreEnd2endTest& test, bool request_is_success) { EXPECT_EQ(s.method(), "/foo"); } -TEST_P(CoreEnd2endTest, Channelz) { +CORE_END2END_TEST(CoreEnd2endTest, Channelz) { auto args = ChannelArgs() .Set(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE, 0) .Set(GRPC_ARG_ENABLE_CHANNELZ, true); @@ -117,7 +117,7 @@ TEST_P(CoreEnd2endTest, Channelz) { EXPECT_THAT(json, HasSubstr("\"end\":true")); } -TEST_P(CoreEnd2endTest, ChannelzWithChannelTrace) { +CORE_END2END_TEST(CoreEnd2endTest, ChannelzWithChannelTrace) { auto args = ChannelArgs() .Set(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE, 1024 * 1024) @@ -146,7 +146,7 @@ TEST_P(CoreEnd2endTest, ChannelzWithChannelTrace) { EXPECT_THAT(json, HasSubstr("\"severity\":\"CT_INFO\"")); } -TEST_P(CoreEnd2endTest, ChannelzDisabled) { +CORE_END2END_TEST(CoreEnd2endTest, ChannelzDisabled) { auto args = ChannelArgs() .Set(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE, 0) .Set(GRPC_ARG_ENABLE_CHANNELZ, false); diff --git a/test/core/end2end/tests/client_streaming.cc b/test/core/end2end/tests/client_streaming.cc index e2220d54eb1..6db75f54ce6 100644 --- a/test/core/end2end/tests/client_streaming.cc +++ b/test/core/end2end/tests/client_streaming.cc @@ -75,11 +75,21 @@ void ClientStreaming(CoreEnd2endTest& test, int messages) { EXPECT_EQ(server_status.message(), "xyz"); } -TEST_P(CoreEnd2endTest, ClientStreaming0) { ClientStreaming(*this, 0); } -TEST_P(CoreEnd2endTest, ClientStreaming1) { ClientStreaming(*this, 1); } -TEST_P(CoreEnd2endTest, ClientStreaming3) { ClientStreaming(*this, 3); } -TEST_P(CoreEnd2endTest, ClientStreaming10) { ClientStreaming(*this, 10); } -TEST_P(CoreEnd2endTest, ClientStreaming30) { ClientStreaming(*this, 30); } +CORE_END2END_TEST(CoreEnd2endTest, ClientStreaming0) { + ClientStreaming(*this, 0); +} +CORE_END2END_TEST(CoreEnd2endTest, ClientStreaming1) { + ClientStreaming(*this, 1); +} +CORE_END2END_TEST(CoreEnd2endTest, ClientStreaming3) { + ClientStreaming(*this, 3); +} +CORE_END2END_TEST(CoreEnd2endTest, ClientStreaming10) { + ClientStreaming(*this, 10); +} +CORE_END2END_TEST(CoreEnd2endTest, ClientStreaming30) { + ClientStreaming(*this, 30); +} } // namespace } // namespace grpc_core diff --git a/test/core/end2end/tests/compressed_payload.cc b/test/core/end2end/tests/compressed_payload.cc index 1d9a94c80e5..ac11ca60fdc 100644 --- a/test/core/end2end/tests/compressed_payload.cc +++ b/test/core/end2end/tests/compressed_payload.cc @@ -289,14 +289,14 @@ class TestConfigurator { GRPC_COMPRESS_NONE; }; -TEST_P(Http2SingleHopTest, DisabledAlgorithmDecompressInCore) { +CORE_END2END_TEST(Http2SingleHopTest, DisabledAlgorithmDecompressInCore) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .DisableAlgorithmAtServer(GRPC_COMPRESS_GZIP) .DisabledAlgorithmTest(); } -TEST_P(Http2SingleHopTest, DisabledAlgorithmDecompressInApp) { +CORE_END2END_TEST(Http2SingleHopTest, DisabledAlgorithmDecompressInApp) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .DisableAlgorithmAtServer(GRPC_COMPRESS_GZIP) @@ -304,16 +304,16 @@ TEST_P(Http2SingleHopTest, DisabledAlgorithmDecompressInApp) { .DisabledAlgorithmTest(); } -TEST_P(Http2SingleHopTest, - RequestWithExceptionallyUncompressedPayloadDecompressInCore) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithExceptionallyUncompressedPayloadDecompressInCore) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .ServerDefaultAlgorithm(GRPC_COMPRESS_GZIP) .RequestWithPayload(GRPC_WRITE_NO_COMPRESS, {}); } -TEST_P(Http2SingleHopTest, - RequestWithExceptionallyUncompressedPayloadDecompressInApp) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithExceptionallyUncompressedPayloadDecompressInApp) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .ServerDefaultAlgorithm(GRPC_COMPRESS_GZIP) @@ -322,22 +322,26 @@ TEST_P(Http2SingleHopTest, .RequestWithPayload(GRPC_WRITE_NO_COMPRESS, {}); } -TEST_P(Http2SingleHopTest, RequestWithUncompressedPayloadDecompressInCore) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithUncompressedPayloadDecompressInCore) { TestConfigurator(*this).RequestWithPayload(0, {}); } -TEST_P(Http2SingleHopTest, RequestWithUncompressedPayloadDecompressInApp) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithUncompressedPayloadDecompressInApp) { TestConfigurator(*this).DecompressInApp().RequestWithPayload(0, {}); } -TEST_P(Http2SingleHopTest, RequestWithCompressedPayloadDecompressInCore) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithCompressedPayloadDecompressInCore) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .ServerDefaultAlgorithm(GRPC_COMPRESS_GZIP) .RequestWithPayload(0, {}); } -TEST_P(Http2SingleHopTest, RequestWithCompressedPayloadDecompressInApp) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithCompressedPayloadDecompressInApp) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .ServerDefaultAlgorithm(GRPC_COMPRESS_GZIP) @@ -347,16 +351,16 @@ TEST_P(Http2SingleHopTest, RequestWithCompressedPayloadDecompressInApp) { .RequestWithPayload(0, {}); } -TEST_P(Http2SingleHopTest, - RequestWithSendMessageBeforeInitialMetadataDecompressInCore) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithSendMessageBeforeInitialMetadataDecompressInCore) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .ServerDefaultAlgorithm(GRPC_COMPRESS_GZIP) .RequestWithSendMessageBeforeInitialMetadata(); } -TEST_P(Http2SingleHopTest, - RequestWithSendMessageBeforeInitialMetadataDecompressInApp) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithSendMessageBeforeInitialMetadataDecompressInApp) { TestConfigurator(*this) .ClientDefaultAlgorithm(GRPC_COMPRESS_GZIP) .ServerDefaultAlgorithm(GRPC_COMPRESS_GZIP) @@ -366,32 +370,34 @@ TEST_P(Http2SingleHopTest, .RequestWithSendMessageBeforeInitialMetadata(); } -TEST_P(Http2SingleHopTest, RequestWithServerLevelDecompressInCore) { +CORE_END2END_TEST(Http2SingleHopTest, RequestWithServerLevelDecompressInCore) { TestConfigurator(*this).RequestWithServerLevel(GRPC_COMPRESS_LEVEL_HIGH); } -TEST_P(Http2SingleHopTest, RequestWithServerLevelDecompressInApp) { +CORE_END2END_TEST(Http2SingleHopTest, RequestWithServerLevelDecompressInApp) { TestConfigurator(*this) .DecompressInApp() .ExpectedAlgorithmFromServer(GRPC_COMPRESS_DEFLATE) .RequestWithServerLevel(GRPC_COMPRESS_LEVEL_HIGH); } -TEST_P(Http2SingleHopTest, - RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore) { +CORE_END2END_TEST( + Http2SingleHopTest, + RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInCore) { TestConfigurator(*this).RequestWithPayload( 0, {{"grpc-internal-encoding-request", "gzip"}}); } -TEST_P(Http2SingleHopTest, - RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp) { +CORE_END2END_TEST( + Http2SingleHopTest, + RequestWithCompressedPayloadMetadataOverrideNoneToGzipDecompressInApp) { TestConfigurator(*this) .DecompressInApp() .ExpectedAlgorithmFromClient(GRPC_COMPRESS_GZIP) .RequestWithPayload(0, {{"grpc-internal-encoding-request", "gzip"}}); } -TEST_P( +CORE_END2END_TEST( Http2SingleHopTest, RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInCore) { TestConfigurator(*this) @@ -399,7 +405,7 @@ TEST_P( .RequestWithPayload(0, {{"grpc-internal-encoding-request", "gzip"}}); } -TEST_P( +CORE_END2END_TEST( Http2SingleHopTest, RequestWithCompressedPayloadMetadataOverrideDeflateToGzipDecompressInApp) { TestConfigurator(*this) @@ -409,7 +415,7 @@ TEST_P( .RequestWithPayload(0, {{"grpc-internal-encoding-request", "gzip"}}); } -TEST_P( +CORE_END2END_TEST( Http2SingleHopTest, RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInCore) { TestConfigurator(*this) @@ -417,7 +423,7 @@ TEST_P( .RequestWithPayload(0, {{"grpc-internal-encoding-request", "identity"}}); } -TEST_P( +CORE_END2END_TEST( Http2SingleHopTest, RequestWithCompressedPayloadMetadataOverrideDeflateToIdentityDecompressInApp) { TestConfigurator(*this) diff --git a/test/core/end2end/tests/connectivity.cc b/test/core/end2end/tests/connectivity.cc index 31f3842fd81..7d527b6dab0 100644 --- a/test/core/end2end/tests/connectivity.cc +++ b/test/core/end2end/tests/connectivity.cc @@ -28,7 +28,7 @@ namespace grpc_core { namespace { -TEST_P(RetryHttp2Test, ConnectivityWatch) { +CORE_END2END_TEST(RetryHttp2Test, ConnectivityWatch) { InitClient(ChannelArgs() .Set(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS, 1000) .Set(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS, 1000) diff --git a/test/core/end2end/tests/default_host.cc b/test/core/end2end/tests/default_host.cc index bd29654b3d6..43fe9294cd0 100644 --- a/test/core/end2end/tests/default_host.cc +++ b/test/core/end2end/tests/default_host.cc @@ -31,7 +31,7 @@ using testing::StartsWith; namespace grpc_core { namespace { -TEST_P(CoreClientChannelTest, DefaultHost) { +CORE_END2END_TEST(CoreClientChannelTest, DefaultHost) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); EXPECT_NE(c.GetPeer(), absl::nullopt); IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/disappearing_server.cc b/test/core/end2end/tests/disappearing_server.cc index 36847afcffb..f8a1db8a0de 100644 --- a/test/core/end2end/tests/disappearing_server.cc +++ b/test/core/end2end/tests/disappearing_server.cc @@ -66,7 +66,7 @@ static void OneRequestAndShutdownServer(CoreEnd2endTest& test) { EXPECT_FALSE(client_closed.was_cancelled()); } -TEST_P(CoreClientChannelTest, DisappearingServer) { +CORE_END2END_TEST(CoreClientChannelTest, DisappearingServer) { OneRequestAndShutdownServer(*this); InitServer(ChannelArgs()); OneRequestAndShutdownServer(*this); diff --git a/test/core/end2end/tests/empty_batch.cc b/test/core/end2end/tests/empty_batch.cc index 046d6d44b71..b5728f200af 100644 --- a/test/core/end2end/tests/empty_batch.cc +++ b/test/core/end2end/tests/empty_batch.cc @@ -16,13 +16,11 @@ // // -#include "gtest/gtest.h" - #include "test/core/end2end/end2end_tests.h" namespace grpc_core { -TEST_P(CoreEnd2endTest, EmptyBatch) { +CORE_END2END_TEST(CoreEnd2endTest, EmptyBatch) { auto c = NewClientCall("/service/method").Create(); c.NewBatch(1); Expect(1, true); diff --git a/test/core/end2end/tests/filter_causes_close.cc b/test/core/end2end/tests/filter_causes_close.cc index 4583512d83c..08cda31d1bd 100644 --- a/test/core/end2end/tests/filter_causes_close.cc +++ b/test/core/end2end/tests/filter_causes_close.cc @@ -105,7 +105,7 @@ const grpc_channel_filter test_filter = { grpc_channel_next_get_info, "filter_causes_close"}; -TEST_P(CoreEnd2endTest, FilterCausesClose) { +CORE_END2END_TEST(CoreEnd2endTest, FilterCausesClose) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init()->RegisterStage( GRPC_SERVER_CHANNEL, 0, [](ChannelStackBuilder* builder) { diff --git a/test/core/end2end/tests/filter_context.cc b/test/core/end2end/tests/filter_context.cc index 83c17ef991e..21150952696 100644 --- a/test/core/end2end/tests/filter_context.cc +++ b/test/core/end2end/tests/filter_context.cc @@ -101,7 +101,7 @@ const grpc_channel_filter test_filter = { // Simple request to test that filters see a consistent view of the // call context. -TEST_P(CoreEnd2endTest, FilterContext) { +CORE_END2END_TEST(CoreEnd2endTest, FilterContext) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { for (auto type : {GRPC_CLIENT_CHANNEL, GRPC_CLIENT_SUBCHANNEL, GRPC_CLIENT_DIRECT_CHANNEL, GRPC_SERVER_CHANNEL}) { diff --git a/test/core/end2end/tests/filter_init_fails.cc b/test/core/end2end/tests/filter_init_fails.cc index 44f6b832d6b..be8c7260186 100644 --- a/test/core/end2end/tests/filter_init_fails.cc +++ b/test/core/end2end/tests/filter_init_fails.cc @@ -113,7 +113,7 @@ void RegisterFilter(grpc_channel_stack_type type) { }); } -TEST_P(CoreEnd2endTest, DISABLED_ServerFilterChannelInitFails) { +CORE_END2END_TEST(CoreEnd2endTest, DISABLED_ServerFilterChannelInitFails) { RegisterFilter(GRPC_SERVER_CHANNEL); InitClient(ChannelArgs()); InitServer(ChannelArgs().Set("channel_init_fails", true)); @@ -126,7 +126,6 @@ TEST_P(CoreEnd2endTest, DISABLED_ServerFilterChannelInitFails) { .SendCloseFromClient() .RecvInitialMetadata(server_initial_metadata) .RecvStatusOnClient(server_status); - auto s = RequestCall(101); Expect(1, true); Step(); // Inproc channel returns invalid_argument and other clients return @@ -138,7 +137,9 @@ TEST_P(CoreEnd2endTest, DISABLED_ServerFilterChannelInitFails) { ShutdownAndDestroyServer(); }; -TEST_P(CoreEnd2endTest, ServerFilterCallInitFails) { +CORE_END2END_TEST(CoreEnd2endTest, ServerFilterCallInitFails) { + SKIP_IF_FUZZING(); + RegisterFilter(GRPC_SERVER_CHANNEL); auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; @@ -149,7 +150,6 @@ TEST_P(CoreEnd2endTest, ServerFilterCallInitFails) { .SendCloseFromClient() .RecvInitialMetadata(server_initial_metadata) .RecvStatusOnClient(server_status); - auto s = RequestCall(101); Expect(1, true); Step(); EXPECT_EQ(server_status.status(), GRPC_STATUS_PERMISSION_DENIED); @@ -157,7 +157,7 @@ TEST_P(CoreEnd2endTest, ServerFilterCallInitFails) { ShutdownAndDestroyServer(); }; -TEST_P(CoreEnd2endTest, DISABLED_ClientFilterChannelInitFails) { +CORE_END2END_TEST(CoreEnd2endTest, DISABLED_ClientFilterChannelInitFails) { RegisterFilter(GRPC_CLIENT_CHANNEL); RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL); InitServer(ChannelArgs()); @@ -176,7 +176,9 @@ TEST_P(CoreEnd2endTest, DISABLED_ClientFilterChannelInitFails) { EXPECT_EQ(server_status.status(), GRPC_STATUS_INVALID_ARGUMENT); } -TEST_P(CoreEnd2endTest, ClientFilterCallInitFails) { +CORE_END2END_TEST(CoreEnd2endTest, ClientFilterCallInitFails) { + SKIP_IF_FUZZING(); + RegisterFilter(GRPC_CLIENT_CHANNEL); RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL); auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); @@ -195,7 +197,8 @@ TEST_P(CoreEnd2endTest, ClientFilterCallInitFails) { EXPECT_EQ(server_status.message(), "access denied"); } -TEST_P(CoreClientChannelTest, DISABLED_SubchannelFilterChannelInitFails) { +CORE_END2END_TEST(CoreClientChannelTest, + DISABLED_SubchannelFilterChannelInitFails) { RegisterFilter(GRPC_CLIENT_SUBCHANNEL); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set("channel_init_fails", true)); @@ -230,7 +233,7 @@ TEST_P(CoreClientChannelTest, DISABLED_SubchannelFilterChannelInitFails) { EXPECT_EQ(server_status2.status(), GRPC_STATUS_UNAVAILABLE); } -TEST_P(CoreClientChannelTest, SubchannelFilterCallInitFails) { +CORE_END2END_TEST(CoreClientChannelTest, SubchannelFilterCallInitFails) { RegisterFilter(GRPC_CLIENT_SUBCHANNEL); auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/filtered_metadata.cc b/test/core/end2end/tests/filtered_metadata.cc index 4d91bca43c6..5f3997600f8 100644 --- a/test/core/end2end/tests/filtered_metadata.cc +++ b/test/core/end2end/tests/filtered_metadata.cc @@ -71,7 +71,7 @@ void TestRequestResponseWithMetadataToBeFiltered( EXPECT_EQ(server_initial_metadata.Get(filtered_md_key), absl::nullopt); } -TEST_P(CoreEnd2endTest, ContentLengthIsFiltered) { +CORE_END2END_TEST(CoreEnd2endTest, ContentLengthIsFiltered) { TestRequestResponseWithMetadataToBeFiltered(*this, "content-length", "45"); } diff --git a/test/core/end2end/tests/graceful_server_shutdown.cc b/test/core/end2end/tests/graceful_server_shutdown.cc index 1f140664db6..194c436e6ef 100644 --- a/test/core/end2end/tests/graceful_server_shutdown.cc +++ b/test/core/end2end/tests/graceful_server_shutdown.cc @@ -26,7 +26,7 @@ namespace grpc_core { namespace { -TEST_P(Http2Test, GracefulServerShutdown) { +CORE_END2END_TEST(Http2Test, GracefulServerShutdown) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(10)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; CoreEnd2endTest::IncomingMetadata server_initial_metadata; diff --git a/test/core/end2end/tests/grpc_authz.cc b/test/core/end2end/tests/grpc_authz.cc index 26d5da6cecd..e5c307d571c 100644 --- a/test/core/end2end/tests/grpc_authz.cc +++ b/test/core/end2end/tests/grpc_authz.cc @@ -118,7 +118,7 @@ class InitWithTempFile { grpc_authorization_policy_provider* provider_; }; -TEST_P(SecureEnd2endTest, StaticInitAllowAuthorizedRequest) { +CORE_END2END_TEST(SecureEnd2endTest, StaticInitAllowAuthorizedRequest) { InitWithStaticData(*this, "{" " \"name\": \"authz\"," @@ -136,7 +136,7 @@ TEST_P(SecureEnd2endTest, StaticInitAllowAuthorizedRequest) { TestAllowAuthorizedRequest(*this); } -TEST_P(SecureEnd2endTest, StaticInitDenyUnauthorizedRequest) { +CORE_END2END_TEST(SecureEnd2endTest, StaticInitDenyUnauthorizedRequest) { InitWithStaticData(*this, "{" " \"name\": \"authz\"," @@ -164,7 +164,7 @@ TEST_P(SecureEnd2endTest, StaticInitDenyUnauthorizedRequest) { TestDenyUnauthorizedRequest(*this); } -TEST_P(SecureEnd2endTest, StaticInitDenyRequestNoMatchInPolicy) { +CORE_END2END_TEST(SecureEnd2endTest, StaticInitDenyRequestNoMatchInPolicy) { InitWithStaticData(*this, "{" " \"name\": \"authz\"," @@ -182,7 +182,7 @@ TEST_P(SecureEnd2endTest, StaticInitDenyRequestNoMatchInPolicy) { TestDenyUnauthorizedRequest(*this); } -TEST_P(SecureEnd2endTest, FileWatcherInitAllowAuthorizedRequest) { +CORE_END2END_TEST(SecureEnd2endTest, FileWatcherInitAllowAuthorizedRequest) { InitWithTempFile tmp_policy(*this, "{" " \"name\": \"authz\"," @@ -200,7 +200,7 @@ TEST_P(SecureEnd2endTest, FileWatcherInitAllowAuthorizedRequest) { TestAllowAuthorizedRequest(*this); } -TEST_P(SecureEnd2endTest, FileWatcherInitDenyUnauthorizedRequest) { +CORE_END2END_TEST(SecureEnd2endTest, FileWatcherInitDenyUnauthorizedRequest) { InitWithTempFile tmp_policy(*this, "{" " \"name\": \"authz\"," @@ -228,7 +228,8 @@ TEST_P(SecureEnd2endTest, FileWatcherInitDenyUnauthorizedRequest) { TestDenyUnauthorizedRequest(*this); } -TEST_P(SecureEnd2endTest, FileWatcherInitDenyRequestNoMatchInPolicy) { +CORE_END2END_TEST(SecureEnd2endTest, + FileWatcherInitDenyRequestNoMatchInPolicy) { InitWithTempFile tmp_policy(*this, "{" " \"name\": \"authz\"," @@ -246,7 +247,7 @@ TEST_P(SecureEnd2endTest, FileWatcherInitDenyRequestNoMatchInPolicy) { TestDenyUnauthorizedRequest(*this); } -TEST_P(SecureEnd2endTest, FileWatcherValidPolicyReload) { +CORE_END2END_TEST(SecureEnd2endTest, FileWatcherValidPolicyReload) { InitWithTempFile tmp_policy(*this, "{" " \"name\": \"authz\"," @@ -300,7 +301,7 @@ TEST_P(SecureEnd2endTest, FileWatcherValidPolicyReload) { tmp_policy.provider()->SetCallbackForTesting(nullptr); } -TEST_P(SecureEnd2endTest, FileWatcherInvalidPolicySkipReload) { +CORE_END2END_TEST(SecureEnd2endTest, FileWatcherInvalidPolicySkipReload) { InitWithTempFile tmp_policy(*this, "{" " \"name\": \"authz\"," @@ -332,7 +333,7 @@ TEST_P(SecureEnd2endTest, FileWatcherInvalidPolicySkipReload) { tmp_policy.provider()->SetCallbackForTesting(nullptr); } -TEST_P(SecureEnd2endTest, FileWatcherRecoversFromFailure) { +CORE_END2END_TEST(SecureEnd2endTest, FileWatcherRecoversFromFailure) { InitWithTempFile tmp_policy(*this, "{" " \"name\": \"authz\"," diff --git a/test/core/end2end/tests/high_initial_seqno.cc b/test/core/end2end/tests/high_initial_seqno.cc index f73efb3c8ed..5cc7524fc86 100644 --- a/test/core/end2end/tests/high_initial_seqno.cc +++ b/test/core/end2end/tests/high_initial_seqno.cc @@ -68,8 +68,10 @@ void TenRequests(CoreEnd2endTest& test, int initial_sequence_number) { } } -TEST_P(Http2Test, HighInitialSeqno) { TenRequests(*this, 16777213); } -TEST_P(RetryHttp2Test, HighInitialSeqno) { TenRequests(*this, 2147483645); } +CORE_END2END_TEST(Http2Test, HighInitialSeqno) { TenRequests(*this, 16777213); } +CORE_END2END_TEST(RetryHttp2Test, HighInitialSeqno) { + TenRequests(*this, 2147483645); +} } // namespace } // namespace grpc_core diff --git a/test/core/end2end/tests/hpack_size.cc b/test/core/end2end/tests/hpack_size.cc index b55d9930631..fb2e39097db 100644 --- a/test/core/end2end/tests/hpack_size.cc +++ b/test/core/end2end/tests/hpack_size.cc @@ -138,84 +138,112 @@ void HpackSize(CoreEnd2endTest& test, int encode_size, int decode_size) { } } -TEST_P(Http2SingleHopTest, Encode0Decode0) { HpackSize(*this, 0, 0); } -TEST_P(Http2SingleHopTest, Encode0Decode100) { HpackSize(*this, 0, 100); } -TEST_P(Http2SingleHopTest, Encode0Decode1000) { HpackSize(*this, 0, 1000); } -TEST_P(Http2SingleHopTest, Encode0Decode4096) { HpackSize(*this, 0, 4096); } -TEST_P(Http2SingleHopTest, Encode0Decode32768) { HpackSize(*this, 0, 32768); } -TEST_P(Http2SingleHopTest, Encode0Decode4194304) { +CORE_END2END_TEST(Http2SingleHopTest, Encode0Decode0) { + HpackSize(*this, 0, 0); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode0Decode100) { + HpackSize(*this, 0, 100); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode0Decode1000) { + HpackSize(*this, 0, 1000); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode0Decode4096) { + HpackSize(*this, 0, 4096); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode0Decode32768) { + HpackSize(*this, 0, 32768); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode0Decode4194304) { HpackSize(*this, 0, 4194304); } -TEST_P(Http2SingleHopTest, Encode100Decode0) { HpackSize(*this, 100, 0); } -TEST_P(Http2SingleHopTest, Encode100Decode100) { HpackSize(*this, 100, 100); } -TEST_P(Http2SingleHopTest, Encode100Decode1000) { HpackSize(*this, 100, 1000); } -TEST_P(Http2SingleHopTest, Encode100Decode4096) { HpackSize(*this, 100, 4096); } -TEST_P(Http2SingleHopTest, Encode100Decode32768) { +CORE_END2END_TEST(Http2SingleHopTest, Encode100Decode0) { + HpackSize(*this, 100, 0); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode100Decode100) { + HpackSize(*this, 100, 100); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode100Decode1000) { + HpackSize(*this, 100, 1000); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode100Decode4096) { + HpackSize(*this, 100, 4096); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode100Decode32768) { HpackSize(*this, 100, 32768); } -TEST_P(Http2SingleHopTest, Encode100Decode4194304) { +CORE_END2END_TEST(Http2SingleHopTest, Encode100Decode4194304) { HpackSize(*this, 100, 4194304); } -TEST_P(Http2SingleHopTest, Encode1000Decode0) { HpackSize(*this, 1000, 0); } -TEST_P(Http2SingleHopTest, Encode1000Decode100) { HpackSize(*this, 1000, 100); } -TEST_P(Http2SingleHopTest, Encode1000Decode1000) { +CORE_END2END_TEST(Http2SingleHopTest, Encode1000Decode0) { + HpackSize(*this, 1000, 0); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode1000Decode100) { + HpackSize(*this, 1000, 100); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode1000Decode1000) { HpackSize(*this, 1000, 1000); } -TEST_P(Http2SingleHopTest, Encode1000Decode4096) { +CORE_END2END_TEST(Http2SingleHopTest, Encode1000Decode4096) { HpackSize(*this, 1000, 4096); } -TEST_P(Http2SingleHopTest, Encode1000Decode32768) { +CORE_END2END_TEST(Http2SingleHopTest, Encode1000Decode32768) { HpackSize(*this, 1000, 32768); } -TEST_P(Http2SingleHopTest, Encode1000Decode4194304) { +CORE_END2END_TEST(Http2SingleHopTest, Encode1000Decode4194304) { HpackSize(*this, 1000, 4194304); } -TEST_P(Http2SingleHopTest, Encode4096Decode0) { HpackSize(*this, 4096, 0); } -TEST_P(Http2SingleHopTest, Encode4096Decode100) { HpackSize(*this, 4096, 100); } -TEST_P(Http2SingleHopTest, Encode4096Decode1000) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4096Decode0) { + HpackSize(*this, 4096, 0); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode4096Decode100) { + HpackSize(*this, 4096, 100); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode4096Decode1000) { HpackSize(*this, 4096, 1000); } -TEST_P(Http2SingleHopTest, Encode4096Decode4096) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4096Decode4096) { HpackSize(*this, 4096, 4096); } -TEST_P(Http2SingleHopTest, Encode4096Decode32768) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4096Decode32768) { HpackSize(*this, 4096, 32768); } -TEST_P(Http2SingleHopTest, Encode4096Decode4194304) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4096Decode4194304) { HpackSize(*this, 4096, 4194304); } -TEST_P(Http2SingleHopTest, Encode32768Decode0) { HpackSize(*this, 32768, 0); } -TEST_P(Http2SingleHopTest, Encode32768Decode100) { +CORE_END2END_TEST(Http2SingleHopTest, Encode32768Decode0) { + HpackSize(*this, 32768, 0); +} +CORE_END2END_TEST(Http2SingleHopTest, Encode32768Decode100) { HpackSize(*this, 32768, 100); } -TEST_P(Http2SingleHopTest, Encode32768Decode1000) { +CORE_END2END_TEST(Http2SingleHopTest, Encode32768Decode1000) { HpackSize(*this, 32768, 1000); } -TEST_P(Http2SingleHopTest, Encode32768Decode4096) { +CORE_END2END_TEST(Http2SingleHopTest, Encode32768Decode4096) { HpackSize(*this, 32768, 4096); } -TEST_P(Http2SingleHopTest, Encode32768Decode32768) { +CORE_END2END_TEST(Http2SingleHopTest, Encode32768Decode32768) { HpackSize(*this, 32768, 32768); } -TEST_P(Http2SingleHopTest, Encode32768Decode4194304) { +CORE_END2END_TEST(Http2SingleHopTest, Encode32768Decode4194304) { HpackSize(*this, 32768, 4194304); } -TEST_P(Http2SingleHopTest, Encode4194304Decode0) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4194304Decode0) { HpackSize(*this, 4194304, 0); } -TEST_P(Http2SingleHopTest, Encode4194304Decode100) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4194304Decode100) { HpackSize(*this, 4194304, 100); } -TEST_P(Http2SingleHopTest, Encode4194304Decode1000) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4194304Decode1000) { HpackSize(*this, 4194304, 1000); } -TEST_P(Http2SingleHopTest, Encode4194304Decode4096) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4194304Decode4096) { HpackSize(*this, 4194304, 4096); } -TEST_P(Http2SingleHopTest, Encode4194304Decode32768) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4194304Decode32768) { HpackSize(*this, 4194304, 32768); } -TEST_P(Http2SingleHopTest, Encode4194304Decode4194304) { +CORE_END2END_TEST(Http2SingleHopTest, Encode4194304Decode4194304) { HpackSize(*this, 4194304, 4194304); } diff --git a/test/core/end2end/tests/invoke_large_request.cc b/test/core/end2end/tests/invoke_large_request.cc index de6f6ffb3f2..5a0e83a4fcb 100644 --- a/test/core/end2end/tests/invoke_large_request.cc +++ b/test/core/end2end/tests/invoke_large_request.cc @@ -31,7 +31,7 @@ namespace grpc_core { namespace { -TEST_P(Http2SingleHopTest, InvokeLargeRequest) { +CORE_END2END_TEST(Http2SingleHopTest, InvokeLargeRequest) { const size_t kMessageSize = 10 * 1024 * 1024; InitServer( ChannelArgs().Set(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, kMessageSize)); diff --git a/test/core/end2end/tests/keepalive_timeout.cc b/test/core/end2end/tests/keepalive_timeout.cc index 164de997702..0444aa28610 100644 --- a/test/core/end2end/tests/keepalive_timeout.cc +++ b/test/core/end2end/tests/keepalive_timeout.cc @@ -33,7 +33,7 @@ namespace { // Client sends a request, then waits for the keepalive watchdog timeouts before // returning status. -TEST_P(Http2SingleHopTest, KeepaliveTimeout) { +CORE_END2END_TEST(Http2SingleHopTest, KeepaliveTimeout) { // Disable ping ack to trigger the keepalive timeout InitServer(ChannelArgs().Set("grpc.http2.ack_pings", false)); InitClient(ChannelArgs() @@ -58,7 +58,7 @@ TEST_P(Http2SingleHopTest, KeepaliveTimeout) { // with a sleep of 10ms in between. It has a configured keepalive timer of // 200ms. In the success case, each ping ack should reset the keepalive timer so // that the keepalive ping is never sent. -TEST_P(Http2SingleHopTest, ReadDelaysKeepalive) { +CORE_END2END_TEST(Http2SingleHopTest, ReadDelaysKeepalive) { #ifdef GRPC_POSIX_SOCKET // It is hard to get the timing right for the polling engine poll. if (ConfigVars::Get().PollStrategy() == "poll") { diff --git a/test/core/end2end/tests/large_metadata.cc b/test/core/end2end/tests/large_metadata.cc index 2344e619613..ff2e09d4e4c 100644 --- a/test/core/end2end/tests/large_metadata.cc +++ b/test/core/end2end/tests/large_metadata.cc @@ -89,7 +89,7 @@ class LargeMetadataTest { // Server responds with metadata under soft limit of what client accepts. No // requests should be rejected. -TEST_P(Http2SingleHopTest, RequestWithLargeMetadataUnderSoftLimit) { +CORE_END2END_TEST(Http2SingleHopTest, RequestWithLargeMetadataUnderSoftLimit) { const size_t soft_limit = 32 * 1024; const size_t hard_limit = 45 * 1024; const size_t metadata_size = soft_limit; @@ -102,7 +102,8 @@ TEST_P(Http2SingleHopTest, RequestWithLargeMetadataUnderSoftLimit) { // Server responds with metadata between soft and hard limits of what client // accepts. Some requests should be rejected. -TEST_P(Http2SingleHopTest, RequestWithLargeMetadataBetweenSoftAndHardLimits) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithLargeMetadataBetweenSoftAndHardLimits) { const size_t soft_limit = 32 * 1024; const size_t hard_limit = 45 * 1024; const size_t metadata_size = (soft_limit + hard_limit) / 2; @@ -116,7 +117,7 @@ TEST_P(Http2SingleHopTest, RequestWithLargeMetadataBetweenSoftAndHardLimits) { // Server responds with metadata above hard limit of what the client accepts. // All requests should be rejected. -TEST_P(Http2SingleHopTest, RequestWithLargeMetadataAboveHardLimit) { +CORE_END2END_TEST(Http2SingleHopTest, RequestWithLargeMetadataAboveHardLimit) { const size_t soft_limit = 32 * 1024; const size_t hard_limit = 45 * 1024; const size_t metadata_size = hard_limit * 3 / 2; @@ -130,7 +131,8 @@ TEST_P(Http2SingleHopTest, RequestWithLargeMetadataAboveHardLimit) { // Set soft limit higher than hard limit. All requests above hard limit should // be rejected, all requests below hard limit should be accepted (soft limit // should not be respected). -TEST_P(Http2SingleHopTest, RequestWithLargeMetadataSoftLimitAboveHardLimit) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithLargeMetadataSoftLimitAboveHardLimit) { const size_t soft_limit = 64 * 1024; const size_t hard_limit = 32 * 1024; const size_t metadata_size_below_hard_limit = hard_limit; @@ -147,8 +149,8 @@ TEST_P(Http2SingleHopTest, RequestWithLargeMetadataSoftLimitAboveHardLimit) { // Set soft limit * 1.25 higher than default hard limit and do not set hard // limit. Soft limit * 1.25 should be used as hard limit. -TEST_P(Http2SingleHopTest, - RequestWithLargeMetadataSoftLimitOverridesDefaultHard) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithLargeMetadataSoftLimitOverridesDefaultHard) { const size_t soft_limit = 64 * 1024; const size_t metadata_size_below_soft_limit = soft_limit; const size_t metadata_size_above_hard_limit = soft_limit * 1.5; @@ -167,8 +169,8 @@ TEST_P(Http2SingleHopTest, // Set hard limit * 0.8 higher than default soft limit and do not set soft // limit. Hard limit * 0.8 should be used as soft limit. -TEST_P(Http2SingleHopTest, - RequestWithLargeMetadataHardLimitOverridsDefaultSoft) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithLargeMetadataHardLimitOverridsDefaultSoft) { const size_t hard_limit = 45 * 1024; const size_t metadata_size_below_soft_limit = hard_limit * 0.5; const size_t metadata_size_above_hard_limit = hard_limit * 1.5; @@ -189,7 +191,8 @@ TEST_P(Http2SingleHopTest, // Set hard limit lower than default hard limit and ensure new limit is // respected. Default soft limit is not respected since hard limit is lower than // soft limit. -TEST_P(Http2SingleHopTest, RequestWithLargeMetadataHardLimitBelowDefaultHard) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithLargeMetadataHardLimitBelowDefaultHard) { const size_t hard_limit = 4 * 1024; const size_t metadata_size_below_hard_limit = hard_limit; const size_t metadata_size_above_hard_limit = hard_limit * 2; @@ -205,7 +208,8 @@ TEST_P(Http2SingleHopTest, RequestWithLargeMetadataHardLimitBelowDefaultHard) { // Set soft limit lower than default soft limit and ensure new limit is // respected. Hard limit should be default hard since this is greater than 2 * // soft limit. -TEST_P(Http2SingleHopTest, RequestWithLargeMetadataSoftLimitBelowDefaultSoft) { +CORE_END2END_TEST(Http2SingleHopTest, + RequestWithLargeMetadataSoftLimitBelowDefaultSoft) { const size_t soft_limit = 1 * 1024; const size_t metadata_size_below_soft_limit = soft_limit; // greater than 2 * soft, less than default hard diff --git a/test/core/end2end/tests/max_concurrent_streams.cc b/test/core/end2end/tests/max_concurrent_streams.cc index aa16ad9d1dc..ff7b609fd35 100644 --- a/test/core/end2end/tests/max_concurrent_streams.cc +++ b/test/core/end2end/tests/max_concurrent_streams.cc @@ -54,7 +54,7 @@ void SimpleRequestBody(CoreEnd2endTest& test) { EXPECT_FALSE(client_close.was_cancelled()); } -TEST_P(Http2SingleHopTest, MaxConcurrentStreams) { +CORE_END2END_TEST(Http2SingleHopTest, MaxConcurrentStreams) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs().Set(GRPC_ARG_MAX_CONCURRENT_STREAMS, 1)); InitClient(ChannelArgs()); @@ -143,7 +143,7 @@ TEST_P(Http2SingleHopTest, MaxConcurrentStreams) { Step(); } -TEST_P(Http2SingleHopTest, MaxConcurrentStreamsTimeoutOnFirst) { +CORE_END2END_TEST(Http2SingleHopTest, MaxConcurrentStreamsTimeoutOnFirst) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs().Set(GRPC_ARG_MAX_CONCURRENT_STREAMS, 1)); InitClient(ChannelArgs()); @@ -188,7 +188,7 @@ TEST_P(Http2SingleHopTest, MaxConcurrentStreamsTimeoutOnFirst) { Step(); } -TEST_P(Http2SingleHopTest, MaxConcurrentStreamsTimeoutOnSecond) { +CORE_END2END_TEST(Http2SingleHopTest, MaxConcurrentStreamsTimeoutOnSecond) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs().Set(GRPC_ARG_MAX_CONCURRENT_STREAMS, 1)); InitClient(ChannelArgs()); diff --git a/test/core/end2end/tests/max_connection_age.cc b/test/core/end2end/tests/max_connection_age.cc index 4b45b9ba44c..680b2630882 100644 --- a/test/core/end2end/tests/max_connection_age.cc +++ b/test/core/end2end/tests/max_connection_age.cc @@ -48,7 +48,7 @@ namespace grpc_core { namespace { -TEST_P(Http2Test, MaxAgeForciblyClose) { +CORE_END2END_TEST(Http2Test, MaxAgeForciblyClose) { SKIP_IF_MINSTACK(); InitClient(ChannelArgs()); InitServer(ChannelArgs() @@ -109,8 +109,10 @@ TEST_P(Http2Test, MaxAgeForciblyClose) { EXPECT_EQ(server_status.status(), GRPC_STATUS_UNAVAILABLE); } -TEST_P(Http2Test, MaxAgeGracefullyClose) { +CORE_END2END_TEST(Http2Test, MaxAgeGracefullyClose) { SKIP_IF_MINSTACK(); + SKIP_IF_FUZZING(); + InitClient(ChannelArgs()); InitServer(ChannelArgs() .Set(GRPC_ARG_MAX_CONNECTION_AGE_MS, MAX_CONNECTION_AGE_MS) diff --git a/test/core/end2end/tests/max_connection_idle.cc b/test/core/end2end/tests/max_connection_idle.cc index 3af51f7cdee..7f68fed3979 100644 --- a/test/core/end2end/tests/max_connection_idle.cc +++ b/test/core/end2end/tests/max_connection_idle.cc @@ -61,7 +61,7 @@ void SimpleRequestBody(CoreEnd2endTest& test) { EXPECT_FALSE(client_close.was_cancelled()); } -TEST_P(RetryHttp2Test, MaxConnectionIdle) { +CORE_END2END_TEST(RetryHttp2Test, MaxConnectionIdle) { const auto kMaxConnectionIdle = Duration::Seconds(2); const auto kMaxConnectionAge = Duration::Seconds(10); InitClient( diff --git a/test/core/end2end/tests/max_message_length.cc b/test/core/end2end/tests/max_message_length.cc index cada91eddb4..a296aee7871 100644 --- a/test/core/end2end/tests/max_message_length.cc +++ b/test/core/end2end/tests/max_message_length.cc @@ -132,15 +132,17 @@ void TestMaxMessageLengthOnServerOnResponse(CoreEnd2endTest& test) { EXPECT_EQ(server_status.message(), "Sent message larger than max (11 vs. 5)"); } -TEST_P(CoreEnd2endTest, MaxMessageLengthOnClientOnRequestViaChannelArg) { +CORE_END2END_TEST(CoreEnd2endTest, + MaxMessageLengthOnClientOnRequestViaChannelArg) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, 5)); TestMaxMessageLengthOnClientOnRequest(*this); } -TEST_P(CoreEnd2endTest, - MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue) { +CORE_END2END_TEST( + CoreEnd2endTest, + MaxMessageLengthOnClientOnRequestViaServiceConfigWithStringJsonValue) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( @@ -156,8 +158,9 @@ TEST_P(CoreEnd2endTest, TestMaxMessageLengthOnClientOnRequest(*this); } -TEST_P(CoreEnd2endTest, - MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue) { +CORE_END2END_TEST( + CoreEnd2endTest, + MaxMessageLengthOnClientOnRequestViaServiceConfigWithIntegerJsonValue) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( @@ -173,22 +176,25 @@ TEST_P(CoreEnd2endTest, TestMaxMessageLengthOnClientOnRequest(*this); } -TEST_P(CoreEnd2endTest, MaxMessageLengthOnServerOnRequestViaChannelArg) { +CORE_END2END_TEST(CoreEnd2endTest, + MaxMessageLengthOnServerOnRequestViaChannelArg) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs().Set(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, 5)); InitClient(ChannelArgs()); TestMaxMessageLengthOnServerOnRequest(*this); } -TEST_P(CoreEnd2endTest, MaxMessageLengthOnClientOnResponseViaChannelArg) { +CORE_END2END_TEST(CoreEnd2endTest, + MaxMessageLengthOnClientOnResponseViaChannelArg) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, 5)); TestMaxMessageLengthOnClientOnResponse(*this); } -TEST_P(CoreEnd2endTest, - MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue) { +CORE_END2END_TEST( + CoreEnd2endTest, + MaxMessageLengthOnClientOnResponseViaServiceConfigWithStringJsonValue) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( @@ -204,8 +210,9 @@ TEST_P(CoreEnd2endTest, TestMaxMessageLengthOnClientOnResponse(*this); } -TEST_P(CoreEnd2endTest, - MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue) { +CORE_END2END_TEST( + CoreEnd2endTest, + MaxMessageLengthOnClientOnResponseViaServiceConfigWithIntegerJsonValue) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( @@ -221,14 +228,15 @@ TEST_P(CoreEnd2endTest, TestMaxMessageLengthOnClientOnResponse(*this); } -TEST_P(CoreEnd2endTest, MaxMessageLengthOnServerOnResponseViaChannelArg) { +CORE_END2END_TEST(CoreEnd2endTest, + MaxMessageLengthOnServerOnResponseViaChannelArg) { SKIP_IF_MINSTACK(); InitServer(ChannelArgs().Set(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, 5)); InitClient(ChannelArgs()); TestMaxMessageLengthOnServerOnResponse(*this); } -TEST_P(Http2Test, MaxMessageLengthOnServerOnRequestWithCompression) { +CORE_END2END_TEST(Http2Test, MaxMessageLengthOnServerOnRequestWithCompression) { SKIP_IF_MINSTACK(); // Set limit via channel args. InitServer(ChannelArgs().Set(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, 5)); @@ -263,7 +271,8 @@ TEST_P(Http2Test, MaxMessageLengthOnServerOnRequestWithCompression) { StartsWith("Received message larger than max")); } -TEST_P(Http2Test, MaxMessageLengthOnClientOnResponseWithCompression) { +CORE_END2END_TEST(Http2Test, + MaxMessageLengthOnClientOnResponseWithCompression) { SKIP_IF_MINSTACK(); // Set limit via channel args. InitServer(ChannelArgs()); diff --git a/test/core/end2end/tests/negative_deadline.cc b/test/core/end2end/tests/negative_deadline.cc index e46cbd24a1f..cb9d1bc156b 100644 --- a/test/core/end2end/tests/negative_deadline.cc +++ b/test/core/end2end/tests/negative_deadline.cc @@ -26,7 +26,7 @@ namespace grpc_core { namespace { -TEST_P(CoreDeadlineTest, NegativeDeadline) { +CORE_END2END_TEST(CoreDeadlineTest, NegativeDeadline) { auto c = NewClientCall("/service/method").Timeout(Duration::Seconds(-1)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/no_logging.cc b/test/core/end2end/tests/no_logging.cc index 9efc6a6edb4..47d710e8829 100644 --- a/test/core/end2end/tests/no_logging.cc +++ b/test/core/end2end/tests/no_logging.cc @@ -115,7 +115,7 @@ void SimpleRequest(CoreEnd2endTest& test) { EXPECT_FALSE(client_close.was_cancelled()); } -TEST_P(NoLoggingTest, NoLoggingTest) { +CORE_END2END_TEST(NoLoggingTest, NoLoggingTest) { Verifier verifier; verifier.FailOnNonErrorLog(); for (int i = 0; i < 10; i++) { diff --git a/test/core/end2end/tests/no_op.cc b/test/core/end2end/tests/no_op.cc index 21e0255b38f..012550f51d9 100644 --- a/test/core/end2end/tests/no_op.cc +++ b/test/core/end2end/tests/no_op.cc @@ -16,10 +16,8 @@ // // -#include "gtest/gtest.h" - #include "test/core/end2end/end2end_tests.h" namespace grpc_core { -TEST_P(CoreEnd2endTest, NoOp) {} +CORE_END2END_TEST(CoreEnd2endTest, NoOp) {} } // namespace grpc_core diff --git a/test/core/end2end/tests/payload.cc b/test/core/end2end/tests/payload.cc index 6c9dc350507..9ed3a0281ad 100644 --- a/test/core/end2end/tests/payload.cc +++ b/test/core/end2end/tests/payload.cc @@ -76,11 +76,11 @@ void RequestResponseWithPayload(CoreEnd2endTest& test) { // Client sends a request with payload, server reads then returns a response // payload and status. -TEST_P(CoreLargeSendTest, RequestResponseWithPayload) { +CORE_END2END_TEST(CoreLargeSendTest, RequestResponseWithPayload) { RequestResponseWithPayload(*this); } -TEST_P(CoreLargeSendTest, RequestResponseWithPayload10Times) { +CORE_END2END_TEST(CoreLargeSendTest, RequestResponseWithPayload10Times) { for (int i = 0; i < 10; i++) { RequestResponseWithPayload(*this); } diff --git a/test/core/end2end/tests/ping.cc b/test/core/end2end/tests/ping.cc index e34b624180a..572696f19d7 100644 --- a/test/core/end2end/tests/ping.cc +++ b/test/core/end2end/tests/ping.cc @@ -28,7 +28,7 @@ namespace grpc_core { namespace { -TEST_P(RetryHttp2Test, Ping) { +CORE_END2END_TEST(RetryHttp2Test, Ping) { const int kPingCount = 5; grpc_connectivity_state state = GRPC_CHANNEL_IDLE; InitClient(ChannelArgs() diff --git a/test/core/end2end/tests/ping_pong_streaming.cc b/test/core/end2end/tests/ping_pong_streaming.cc index dbbb4de1d1e..009675237ca 100644 --- a/test/core/end2end/tests/ping_pong_streaming.cc +++ b/test/core/end2end/tests/ping_pong_streaming.cc @@ -16,8 +16,6 @@ // // -#include "gtest/gtest.h" - #include #include "src/core/lib/gprpp/time.h" @@ -62,11 +60,19 @@ void PingPongStreaming(CoreEnd2endTest& test, int num_messages) { test.Step(); } -TEST_P(CoreEnd2endTest, PingPongStreaming1) { PingPongStreaming(*this, 1); } +CORE_END2END_TEST(CoreEnd2endTest, PingPongStreaming1) { + PingPongStreaming(*this, 1); +} -TEST_P(CoreEnd2endTest, PingPongStreaming3) { PingPongStreaming(*this, 3); } +CORE_END2END_TEST(CoreEnd2endTest, PingPongStreaming3) { + PingPongStreaming(*this, 3); +} -TEST_P(CoreEnd2endTest, PingPongStreaming10) { PingPongStreaming(*this, 10); } +CORE_END2END_TEST(CoreEnd2endTest, PingPongStreaming10) { + PingPongStreaming(*this, 10); +} -TEST_P(CoreEnd2endTest, PingPongStreaming30) { PingPongStreaming(*this, 30); } +CORE_END2END_TEST(CoreEnd2endTest, PingPongStreaming30) { + PingPongStreaming(*this, 30); +} } // namespace grpc_core diff --git a/test/core/end2end/tests/proxy_auth.cc b/test/core/end2end/tests/proxy_auth.cc index 354088aa8ec..4de91f8c758 100644 --- a/test/core/end2end/tests/proxy_auth.cc +++ b/test/core/end2end/tests/proxy_auth.cc @@ -29,7 +29,7 @@ namespace grpc_core { namespace { -TEST_P(ProxyAuthTest, InvokeProxyAuth) { +CORE_END2END_TEST(ProxyAuthTest, InvokeProxyAuth) { // Indicate that the proxy requires user auth InitServer(ChannelArgs()); InitClient(ChannelArgs().Set(GRPC_ARG_HTTP_PROXY_AUTH_CREDS, diff --git a/test/core/end2end/tests/registered_call.cc b/test/core/end2end/tests/registered_call.cc index 45336728ba0..b0c3a9273fb 100644 --- a/test/core/end2end/tests/registered_call.cc +++ b/test/core/end2end/tests/registered_call.cc @@ -53,11 +53,11 @@ void SimpleRequestBody(CoreEnd2endTest& test, EXPECT_FALSE(client_close.was_cancelled()); } -TEST_P(CoreEnd2endTest, InvokeRegisteredCall) { +CORE_END2END_TEST(CoreEnd2endTest, InvokeRegisteredCall) { SimpleRequestBody(*this, RegisterCallOnClient("/foo", nullptr)); } -TEST_P(CoreEnd2endTest, Invoke10RegisteredCalls) { +CORE_END2END_TEST(CoreEnd2endTest, Invoke10RegisteredCalls) { auto rc = RegisterCallOnClient("/foo", nullptr); for (int i = 0; i < 10; i++) { SimpleRequestBody(*this, rc); diff --git a/test/core/end2end/tests/request_with_flags.cc b/test/core/end2end/tests/request_with_flags.cc index 5798d97d60f..5a95a901cb7 100644 --- a/test/core/end2end/tests/request_with_flags.cc +++ b/test/core/end2end/tests/request_with_flags.cc @@ -118,49 +118,50 @@ void InvokeRequestWithFlags(CoreEnd2endTest& test, grpc_byte_buffer_destroy(request_payload); } -TEST_P(CoreEnd2endTest, BadFlagsOnSendInitialMetadata) { +CORE_END2END_TEST(CoreEnd2endTest, BadFlagsOnSendInitialMetadata) { InvokeRequestWithFlags(*this, {{GRPC_OP_SEND_INITIAL_METADATA, 0xdeadbeef}}, GRPC_CALL_ERROR_INVALID_FLAGS); } -TEST_P(CoreEnd2endTest, BadFlagsOnSendMessage) { +CORE_END2END_TEST(CoreEnd2endTest, BadFlagsOnSendMessage) { InvokeRequestWithFlags(*this, {{GRPC_OP_SEND_MESSAGE, 0xdeadbeef}}, GRPC_CALL_ERROR_INVALID_FLAGS); } -TEST_P(CoreEnd2endTest, BadFlagsOnSendCloseFromClient) { +CORE_END2END_TEST(CoreEnd2endTest, BadFlagsOnSendCloseFromClient) { InvokeRequestWithFlags(*this, {{GRPC_OP_SEND_CLOSE_FROM_CLIENT, 0xdeadbeef}}, GRPC_CALL_ERROR_INVALID_FLAGS); } -TEST_P(CoreEnd2endTest, BadFlagsOnRecvInitialMetadata) { +CORE_END2END_TEST(CoreEnd2endTest, BadFlagsOnRecvInitialMetadata) { InvokeRequestWithFlags(*this, {{GRPC_OP_RECV_INITIAL_METADATA, 0xdeadbeef}}, GRPC_CALL_ERROR_INVALID_FLAGS); } -TEST_P(CoreEnd2endTest, BadFlagsOnRecvStatusOnClient) { +CORE_END2END_TEST(CoreEnd2endTest, BadFlagsOnRecvStatusOnClient) { InvokeRequestWithFlags(*this, {{GRPC_OP_RECV_STATUS_ON_CLIENT, 0xdeadbeef}}, GRPC_CALL_ERROR_INVALID_FLAGS); } -TEST_P(CoreEnd2endTest, WriteBufferIntAcceptedOnSendMessage) { +CORE_END2END_TEST(CoreEnd2endTest, WriteBufferIntAcceptedOnSendMessage) { InvokeRequestWithFlags( *this, {{GRPC_OP_SEND_MESSAGE, GRPC_WRITE_BUFFER_HINT}}, GRPC_CALL_OK); } -TEST_P(CoreEnd2endTest, WriteNoCompressAcceptedOnSendMessage) { +CORE_END2END_TEST(CoreEnd2endTest, WriteNoCompressAcceptedOnSendMessage) { InvokeRequestWithFlags( *this, {{GRPC_OP_SEND_MESSAGE, GRPC_WRITE_NO_COMPRESS}}, GRPC_CALL_OK); } -TEST_P(CoreEnd2endTest, WriteBufferHintAndNoCompressAcceptedOnSendMessage) { +CORE_END2END_TEST(CoreEnd2endTest, + WriteBufferHintAndNoCompressAcceptedOnSendMessage) { InvokeRequestWithFlags( *this, {{GRPC_OP_SEND_MESSAGE, GRPC_WRITE_BUFFER_HINT | GRPC_WRITE_NO_COMPRESS}}, GRPC_CALL_OK); } -TEST_P(CoreEnd2endTest, WriteInternalCompressAcceptedOnSendMessage) { +CORE_END2END_TEST(CoreEnd2endTest, WriteInternalCompressAcceptedOnSendMessage) { InvokeRequestWithFlags(*this, {{GRPC_OP_SEND_MESSAGE, GRPC_WRITE_INTERNAL_COMPRESS}}, GRPC_CALL_OK); diff --git a/test/core/end2end/tests/request_with_payload.cc b/test/core/end2end/tests/request_with_payload.cc index 0b1c2c1ee44..7651a926d3d 100644 --- a/test/core/end2end/tests/request_with_payload.cc +++ b/test/core/end2end/tests/request_with_payload.cc @@ -26,7 +26,7 @@ namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, RequestWithPayload) { +CORE_END2END_TEST(CoreEnd2endTest, RequestWithPayload) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); IncomingMetadata server_initial_metadata; IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/resource_quota_server.cc b/test/core/end2end/tests/resource_quota_server.cc index 32c4b9ce13f..64fbbf697e1 100644 --- a/test/core/end2end/tests/resource_quota_server.cc +++ b/test/core/end2end/tests/resource_quota_server.cc @@ -30,6 +30,7 @@ #include #include "src/core/lib/channel/channel_args.h" +#include "src/core/lib/experiments/experiments.h" #include "src/core/lib/gprpp/crash.h" #include "src/core/lib/gprpp/time.h" #include "src/core/lib/slice/slice.h" @@ -54,7 +55,11 @@ auto MakeVec(F init) { return v; } -TEST_P(ResourceQuotaTest, ResourceQuota) { +CORE_END2END_TEST(ResourceQuotaTest, ResourceQuota) { + if (IsEventEngineListenerEnabled()) { + GTEST_SKIP() << "Not with event engine listener"; + } + grpc_resource_quota* resource_quota = grpc_resource_quota_create("test_server"); grpc_resource_quota_resize(resource_quota, 1024 * 1024); diff --git a/test/core/end2end/tests/retry.cc b/test/core/end2end/tests/retry.cc index 5e725ac3ab6..845d4579757 100644 --- a/test/core/end2end/tests/retry.cc +++ b/test/core/end2end/tests/retry.cc @@ -32,7 +32,7 @@ namespace grpc_core { // - 2 retries allowed for ABORTED status // - first attempt returns ABORTED // - second attempt returns OK -TEST_P(RetryTest, Retry) { +CORE_END2END_TEST(RetryTest, Retry) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_cancel_after_first_attempt_starts.cc b/test/core/end2end/tests/retry_cancel_after_first_attempt_starts.cc index c1372806f17..48a6c40a2cc 100644 --- a/test/core/end2end/tests/retry_cancel_after_first_attempt_starts.cc +++ b/test/core/end2end/tests/retry_cancel_after_first_attempt_starts.cc @@ -15,7 +15,6 @@ // #include "absl/types/optional.h" -#include "gtest/gtest.h" #include @@ -28,7 +27,7 @@ namespace { // Tests that we can unref a call after the first attempt starts but // before any ops complete. This should not cause a memory leak. -TEST_P(RetryTest, RetryCancelAfterFirstAttemptStarts) { +CORE_END2END_TEST(RetryTest, RetryCancelAfterFirstAttemptStarts) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_cancel_during_delay.cc b/test/core/end2end/tests/retry_cancel_during_delay.cc index b88a7e2e5c8..41da4a604ee 100644 --- a/test/core/end2end/tests/retry_cancel_during_delay.cc +++ b/test/core/end2end/tests/retry_cancel_during_delay.cc @@ -104,11 +104,11 @@ void TestRetryCancelDuringDelay( test.Step(); } -TEST_P(RetryTest, CancelDuringDelay) { +CORE_END2END_TEST(RetryTest, CancelDuringDelay) { TestRetryCancelDuringDelay(*this, std::make_unique()); } -TEST_P(RetryTest, DeadlineDuringDelay) { +CORE_END2END_TEST(RetryTest, DeadlineDuringDelay) { TestRetryCancelDuringDelay(*this, std::make_unique()); } diff --git a/test/core/end2end/tests/retry_cancel_with_multiple_send_batches.cc b/test/core/end2end/tests/retry_cancel_with_multiple_send_batches.cc index c61522adc70..cf73f5e7a62 100644 --- a/test/core/end2end/tests/retry_cancel_with_multiple_send_batches.cc +++ b/test/core/end2end/tests/retry_cancel_with_multiple_send_batches.cc @@ -193,13 +193,13 @@ void RegisterFilter() { }); } -TEST_P(RetryTest, RetryCancelWithMultipleSendBatches) { +CORE_END2END_TEST(RetryTest, RetryCancelWithMultipleSendBatches) { RegisterFilter(); TestRetryCancelWithMultipleSendBatches( *this, std::make_unique()); } -TEST_P(RetryTest, RetryDeadlineWithMultipleSendBatches) { +CORE_END2END_TEST(RetryTest, RetryDeadlineWithMultipleSendBatches) { RegisterFilter(); TestRetryCancelWithMultipleSendBatches( *this, std::make_unique()); diff --git a/test/core/end2end/tests/retry_cancellation.cc b/test/core/end2end/tests/retry_cancellation.cc index 60759ed887b..bc9b9d8dde2 100644 --- a/test/core/end2end/tests/retry_cancellation.cc +++ b/test/core/end2end/tests/retry_cancellation.cc @@ -94,11 +94,11 @@ void TestRetryCancellation(CoreEnd2endTest& test, EXPECT_FALSE(client_close.was_cancelled()); } -TEST_P(RetryTest, RetryCancellation) { +CORE_END2END_TEST(RetryTest, RetryCancellation) { TestRetryCancellation(*this, std::make_unique()); } -TEST_P(RetryTest, RetryDeadline) { +CORE_END2END_TEST(RetryTest, RetryDeadline) { TestRetryCancellation(*this, std::make_unique()); } diff --git a/test/core/end2end/tests/retry_disabled.cc b/test/core/end2end/tests/retry_disabled.cc index 223f8f505b2..f7b61ef2fe7 100644 --- a/test/core/end2end/tests/retry_disabled.cc +++ b/test/core/end2end/tests/retry_disabled.cc @@ -34,7 +34,7 @@ namespace { // configuration in the service config. // - 1 retry allowed for ABORTED status // - first attempt returns ABORTED but does not retry -TEST_P(RetryTest, RetryDisabled) { +CORE_END2END_TEST(RetryTest, RetryDisabled) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_exceeds_buffer_size_in_delay.cc b/test/core/end2end/tests/retry_exceeds_buffer_size_in_delay.cc index f6cfa31f21b..5b4b3a32d5c 100644 --- a/test/core/end2end/tests/retry_exceeds_buffer_size_in_delay.cc +++ b/test/core/end2end/tests/retry_exceeds_buffer_size_in_delay.cc @@ -36,7 +36,7 @@ namespace { // - server sends ABORTED, client goes into backoff delay // - client sends a 100 KiB message, thus exceeding the buffer size limit // - retry attempt gets ABORTED but is not retried -TEST_P(RetryTest, RetryExceedsBufferSizeInDelay) { +CORE_END2END_TEST(RetryTest, RetryExceedsBufferSizeInDelay) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_exceeds_buffer_size_in_initial_batch.cc b/test/core/end2end/tests/retry_exceeds_buffer_size_in_initial_batch.cc index 5a3109c5582..7a038020fcb 100644 --- a/test/core/end2end/tests/retry_exceeds_buffer_size_in_initial_batch.cc +++ b/test/core/end2end/tests/retry_exceeds_buffer_size_in_initial_batch.cc @@ -35,7 +35,7 @@ namespace { // - buffer size set to 2 bytes // - client sends a 3-byte message // - first attempt gets ABORTED but is not retried -TEST_P(RetryTest, RetryExceedsBufferSizeInInitialBatch) { +CORE_END2END_TEST(RetryTest, RetryExceedsBufferSizeInInitialBatch) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_exceeds_buffer_size_in_subsequent_batch.cc b/test/core/end2end/tests/retry_exceeds_buffer_size_in_subsequent_batch.cc index feab3941206..65aed1db8d6 100644 --- a/test/core/end2end/tests/retry_exceeds_buffer_size_in_subsequent_batch.cc +++ b/test/core/end2end/tests/retry_exceeds_buffer_size_in_subsequent_batch.cc @@ -37,7 +37,7 @@ namespace { // - buffer size set to 100 KiB (larger than initial metadata) // - client sends a 100 KiB message // - first attempt gets ABORTED but is not retried -TEST_P(RetryTest, RetryExceedsBufferSizeInSubsequentBatch) { +CORE_END2END_TEST(RetryTest, RetryExceedsBufferSizeInSubsequentBatch) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_lb_drop.cc b/test/core/end2end/tests/retry_lb_drop.cc index 88d48f5f95d..70a593342b2 100644 --- a/test/core/end2end/tests/retry_lb_drop.cc +++ b/test/core/end2end/tests/retry_lb_drop.cc @@ -100,7 +100,7 @@ void RegisterDropPolicy(CoreConfiguration::Builder* builder) { // even when there is retry configuration in the service config. // - 1 retry allowed for UNAVAILABLE status // - first attempt returns UNAVAILABLE due to LB drop but does not retry -TEST_P(RetryTest, RetryLbDrop) { +CORE_END2END_TEST(RetryTest, RetryLbDrop) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { RegisterTestPickArgsLoadBalancingPolicy( builder, diff --git a/test/core/end2end/tests/retry_lb_fail.cc b/test/core/end2end/tests/retry_lb_fail.cc index 931a01aad53..ce3d765b715 100644 --- a/test/core/end2end/tests/retry_lb_fail.cc +++ b/test/core/end2end/tests/retry_lb_fail.cc @@ -38,7 +38,7 @@ std::atomic g_num_lb_picks; // - 1 retry allowed for ABORTED status // - on first attempt, LB policy fails with ABORTED before application // starts recv_trailing_metadata op -TEST_P(RetryTest, RetryLbFail) { +CORE_END2END_TEST(RetryTest, RetryLbFail) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { RegisterFailLoadBalancingPolicy( builder, absl::UnavailableError("LB pick failed"), &g_num_lb_picks); diff --git a/test/core/end2end/tests/retry_non_retriable_status.cc b/test/core/end2end/tests/retry_non_retriable_status.cc index b968c5e2169..50788bde3a2 100644 --- a/test/core/end2end/tests/retry_non_retriable_status.cc +++ b/test/core/end2end/tests/retry_non_retriable_status.cc @@ -32,7 +32,7 @@ namespace { // Tests that we don't retry for non-retryable status codes. // - 1 retry allowed for ABORTED status // - first attempt gets INVALID_ARGUMENT, so no retry is done -TEST_P(RetryTest, RetryNonRetriableStatus) { +CORE_END2END_TEST(RetryTest, RetryNonRetriableStatus) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc b/test/core/end2end/tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc index a813df51a75..e54d24466eb 100644 --- a/test/core/end2end/tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc +++ b/test/core/end2end/tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc @@ -33,7 +33,8 @@ namespace { // status is received before the recv_trailing_metadata op is started. // - 1 retry allowed for ABORTED status // - first attempt gets INVALID_ARGUMENT, so no retry is done -TEST_P(RetryTest, RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted) { +CORE_END2END_TEST(RetryTest, + RetryNonRetriableStatusBeforeRecvTrailingMetadataStarted) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_per_attempt_recv_timeout.cc b/test/core/end2end/tests/retry_per_attempt_recv_timeout.cc index 9aa4779d7a1..97687c16441 100644 --- a/test/core/end2end/tests/retry_per_attempt_recv_timeout.cc +++ b/test/core/end2end/tests/retry_per_attempt_recv_timeout.cc @@ -36,7 +36,7 @@ namespace { // - first attempt does not receive a response until after perAttemptRecvTimeout // - second attempt returns ABORTED // - third attempt returns OK -TEST_P(RetryTest, RetryPerAttemptRecvTimeout) { +CORE_END2END_TEST(RetryTest, RetryPerAttemptRecvTimeout) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_per_attempt_recv_timeout_on_last_attempt.cc b/test/core/end2end/tests/retry_per_attempt_recv_timeout_on_last_attempt.cc index 4bbc3efbd54..f051f37ea28 100644 --- a/test/core/end2end/tests/retry_per_attempt_recv_timeout_on_last_attempt.cc +++ b/test/core/end2end/tests/retry_per_attempt_recv_timeout_on_last_attempt.cc @@ -34,7 +34,7 @@ namespace { // Tests perAttemptRecvTimeout: // - 1 retry allowed for ABORTED status // - both attempts do not receive a response until after perAttemptRecvTimeout -TEST_P(RetryTest, RetryPerAttemptRecvTimeoutOnLastAttempt) { +CORE_END2END_TEST(RetryTest, RetryPerAttemptRecvTimeoutOnLastAttempt) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_recv_initial_metadata.cc b/test/core/end2end/tests/retry_recv_initial_metadata.cc index 76affef977a..87c0e11ec25 100644 --- a/test/core/end2end/tests/retry_recv_initial_metadata.cc +++ b/test/core/end2end/tests/retry_recv_initial_metadata.cc @@ -34,7 +34,7 @@ namespace { // - 1 retry allowed for ABORTED status // - first attempt receives initial metadata before trailing metadata, // so no retry is done even though status was ABORTED -TEST_P(RetryTest, RetryRecvInitialMetadata) { +CORE_END2END_TEST(RetryTest, RetryRecvInitialMetadata) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_recv_message.cc b/test/core/end2end/tests/retry_recv_message.cc index 13a9a49eb1e..6b0a586404f 100644 --- a/test/core/end2end/tests/retry_recv_message.cc +++ b/test/core/end2end/tests/retry_recv_message.cc @@ -33,7 +33,7 @@ namespace { // - 1 retry allowed for ABORTED status // - first attempt receives a message and therefore does not retry even // though the final status is ABORTED -TEST_P(RetryTest, RetryRecvMessage) { +CORE_END2END_TEST(RetryTest, RetryRecvMessage) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_recv_message_replay.cc b/test/core/end2end/tests/retry_recv_message_replay.cc index 3e77b28aeb0..2f7450f6815 100644 --- a/test/core/end2end/tests/retry_recv_message_replay.cc +++ b/test/core/end2end/tests/retry_recv_message_replay.cc @@ -128,7 +128,7 @@ grpc_channel_filter FailFirstSendOpFilter::kFilterVtable = { // deferred at the point where recv_trailing_metadata was started from // the surface. This resulted in ASAN failures caused by not unreffing // a grpc_error. -TEST_P(RetryTest, RetryRecvMessageReplay) { +CORE_END2END_TEST(RetryTest, RetryRecvMessageReplay) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init()->RegisterStage( GRPC_CLIENT_SUBCHANNEL, 0, [](ChannelStackBuilder* builder) { diff --git a/test/core/end2end/tests/retry_recv_trailing_metadata_error.cc b/test/core/end2end/tests/retry_recv_trailing_metadata_error.cc index 26750545ba0..886aaa9af57 100644 --- a/test/core/end2end/tests/retry_recv_trailing_metadata_error.cc +++ b/test/core/end2end/tests/retry_recv_trailing_metadata_error.cc @@ -135,7 +135,7 @@ bool AddFilter(ChannelStackBuilder* builder) { // - 1 retry allowed for ABORTED status // - server returns ABORTED, but filter overwrites to INVALID_ARGUMENT, // so no retry is done -TEST_P(RetryTest, RetryRecvTrailingMetadataError) { +CORE_END2END_TEST(RetryTest, RetryRecvTrailingMetadataError) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init()->RegisterStage(GRPC_CLIENT_SUBCHANNEL, 0, AddFilter); diff --git a/test/core/end2end/tests/retry_send_initial_metadata_refs.cc b/test/core/end2end/tests/retry_send_initial_metadata_refs.cc index 373ed57d87f..9348801424c 100644 --- a/test/core/end2end/tests/retry_send_initial_metadata_refs.cc +++ b/test/core/end2end/tests/retry_send_initial_metadata_refs.cc @@ -38,7 +38,7 @@ namespace { // - 2 retries allowed for ABORTED status // - first attempt returns ABORTED // - second attempt returns OK -TEST_P(RetryTest, RetrySendInitialMetadataRefs) { +CORE_END2END_TEST(RetryTest, RetrySendInitialMetadataRefs) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_send_op_fails.cc b/test/core/end2end/tests/retry_send_op_fails.cc index befd60ff5c6..a4ca292c143 100644 --- a/test/core/end2end/tests/retry_send_op_fails.cc +++ b/test/core/end2end/tests/retry_send_op_fails.cc @@ -130,7 +130,7 @@ grpc_channel_filter FailFirstCallFilter::kFilterVtable = { // all without ever going out on the wire // - second attempt returns ABORTED but does not retry, because only 2 // attempts are allowed -TEST_P(RetryTest, RetrySendOpFails) { +CORE_END2END_TEST(RetryTest, RetrySendOpFails) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init()->RegisterStage( GRPC_CLIENT_SUBCHANNEL, 0, [](ChannelStackBuilder* builder) { diff --git a/test/core/end2end/tests/retry_send_recv_batch.cc b/test/core/end2end/tests/retry_send_recv_batch.cc index 4ec186d5ff7..3d6e018b7de 100644 --- a/test/core/end2end/tests/retry_send_recv_batch.cc +++ b/test/core/end2end/tests/retry_send_recv_batch.cc @@ -30,7 +30,7 @@ namespace { // a recv op, where the send op completes but the recv op does not, and // then a subsequent recv op is started. This ensures that we do not // incorrectly attempt to replay the send op. -TEST_P(RetryTest, RetrySendRecvBatch) { +CORE_END2END_TEST(RetryTest, RetrySendRecvBatch) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_server_pushback_delay.cc b/test/core/end2end/tests/retry_server_pushback_delay.cc index b58f1934167..6249ec9c28f 100644 --- a/test/core/end2end/tests/retry_server_pushback_delay.cc +++ b/test/core/end2end/tests/retry_server_pushback_delay.cc @@ -34,7 +34,7 @@ namespace { // - 2 retries allowed for ABORTED status // - first attempt gets ABORTED with a long delay // - second attempt succeeds -TEST_P(RetryTest, RetryServerPushbackDelay) { +CORE_END2END_TEST(RetryTest, RetryServerPushbackDelay) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_server_pushback_disabled.cc b/test/core/end2end/tests/retry_server_pushback_disabled.cc index eb9dc962ce4..e59772fd06c 100644 --- a/test/core/end2end/tests/retry_server_pushback_disabled.cc +++ b/test/core/end2end/tests/retry_server_pushback_disabled.cc @@ -34,7 +34,7 @@ namespace { // - 2 retries allowed for ABORTED status // - first attempt gets ABORTED // - second attempt gets ABORTED but server push back disables retrying -TEST_P(RetryTest, RetryServerPushbackDisabled) { +CORE_END2END_TEST(RetryTest, RetryServerPushbackDisabled) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_streaming.cc b/test/core/end2end/tests/retry_streaming.cc index f6c366f3fe9..d900c1c44db 100644 --- a/test/core/end2end/tests/retry_streaming.cc +++ b/test/core/end2end/tests/retry_streaming.cc @@ -45,7 +45,7 @@ namespace { // replayed ops happen under the hood -- they are not surfaced to the // C-core API, and therefore we have no way to inject the commit at the // right point. -TEST_P(RetryTest, RetryStreaming) { +CORE_END2END_TEST(RetryTest, RetryStreaming) { InitServer(ChannelArgs()); InitClient( ChannelArgs() diff --git a/test/core/end2end/tests/retry_streaming_after_commit.cc b/test/core/end2end/tests/retry_streaming_after_commit.cc index 897600cee64..2195c5549f4 100644 --- a/test/core/end2end/tests/retry_streaming_after_commit.cc +++ b/test/core/end2end/tests/retry_streaming_after_commit.cc @@ -31,7 +31,7 @@ namespace { // Tests that we can continue to send/recv messages on a streaming call // after retries are committed. -TEST_P(RetryTest, RetryStreamingAfterCommit) { +CORE_END2END_TEST(RetryTest, RetryStreamingAfterCommit) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_streaming_succeeds_before_replay_finished.cc b/test/core/end2end/tests/retry_streaming_succeeds_before_replay_finished.cc index 6ad20811a84..63cb8e444a9 100644 --- a/test/core/end2end/tests/retry_streaming_succeeds_before_replay_finished.cc +++ b/test/core/end2end/tests/retry_streaming_succeeds_before_replay_finished.cc @@ -31,7 +31,7 @@ namespace { // Tests that we correctly clean up if the second attempt finishes // before we have finished replaying all of the send ops. -TEST_P(RetryTest, RetryStreamSucceedsBeforeReplayFinished) { +CORE_END2END_TEST(RetryTest, RetryStreamSucceedsBeforeReplayFinished) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_throttled.cc b/test/core/end2end/tests/retry_throttled.cc index d8b5a2cb3b1..ed5f30e8040 100644 --- a/test/core/end2end/tests/retry_throttled.cc +++ b/test/core/end2end/tests/retry_throttled.cc @@ -32,7 +32,7 @@ namespace { // Tests that we don't retry when throttled. // - 1 retry allowed for ABORTED status // - first attempt gets ABORTED but is over limit, so no retry is done -TEST_P(RetryTest, RetryThrottled) { +CORE_END2END_TEST(RetryTest, RetryThrottled) { InitServer(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, "{\n" diff --git a/test/core/end2end/tests/retry_too_many_attempts.cc b/test/core/end2end/tests/retry_too_many_attempts.cc index 5dceb7ba935..742db131f64 100644 --- a/test/core/end2end/tests/retry_too_many_attempts.cc +++ b/test/core/end2end/tests/retry_too_many_attempts.cc @@ -32,7 +32,7 @@ namespace { // - 1 retry allowed for ABORTED status // - first attempt gets ABORTED // - second attempt gets ABORTED but does not retry -TEST_P(RetryTest, RetryTooManyAttempts) { +CORE_END2END_TEST(RetryTest, RetryTooManyAttempts) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_transparent_goaway.cc b/test/core/end2end/tests/retry_transparent_goaway.cc index 368588a6035..631f1954535 100644 --- a/test/core/end2end/tests/retry_transparent_goaway.cc +++ b/test/core/end2end/tests/retry_transparent_goaway.cc @@ -132,7 +132,7 @@ grpc_channel_filter FailFirstCallFilter::kFilterVtable = { }; // Tests transparent retries when the call was never sent out on the wire. -TEST_P(RetryTest, TransparentGoaway) { +CORE_END2END_TEST(RetryTest, TransparentGoaway) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init()->RegisterStage( GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY + 1, diff --git a/test/core/end2end/tests/retry_transparent_max_concurrent_streams.cc b/test/core/end2end/tests/retry_transparent_max_concurrent_streams.cc index 9aa13006fe6..d355f290119 100644 --- a/test/core/end2end/tests/retry_transparent_max_concurrent_streams.cc +++ b/test/core/end2end/tests/retry_transparent_max_concurrent_streams.cc @@ -35,7 +35,7 @@ namespace { // Then, before the first call finishes, the server is shut down and // restarted. The second call will fail in that transport instance and // will be transparently retried after the server starts up again. -TEST_P(RetryHttp2Test, RetryTransparentMaxConcurrentStreams) { +CORE_END2END_TEST(RetryHttp2Test, RetryTransparentMaxConcurrentStreams) { const auto server_args = ChannelArgs().Set(GRPC_ARG_MAX_CONCURRENT_STREAMS, 1); InitServer(server_args); diff --git a/test/core/end2end/tests/retry_transparent_not_sent_on_wire.cc b/test/core/end2end/tests/retry_transparent_not_sent_on_wire.cc index 7b95bb0de97..60f84bb881d 100644 --- a/test/core/end2end/tests/retry_transparent_not_sent_on_wire.cc +++ b/test/core/end2end/tests/retry_transparent_not_sent_on_wire.cc @@ -131,7 +131,7 @@ grpc_channel_filter FailFirstTenCallsFilter::kFilterVtable = { }; // Tests transparent retries when the call was never sent out on the wire. -TEST_P(RetryTest, RetryTransparentNotSentOnWire) { +CORE_END2END_TEST(RetryTest, RetryTransparentNotSentOnWire) { CoreConfiguration::RegisterBuilder([](CoreConfiguration::Builder* builder) { builder->channel_init()->RegisterStage( GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY + 1, diff --git a/test/core/end2end/tests/retry_unref_before_finish.cc b/test/core/end2end/tests/retry_unref_before_finish.cc index f2782d8b5bb..49937bd808c 100644 --- a/test/core/end2end/tests/retry_unref_before_finish.cc +++ b/test/core/end2end/tests/retry_unref_before_finish.cc @@ -27,7 +27,7 @@ namespace grpc_core { namespace { // Tests that we can unref a call whose status is cached but not yet // requested by the application. This should not cause a memory leak. -TEST_P(RetryTest, RetryUnrefBeforeFinish) { +CORE_END2END_TEST(RetryTest, RetryUnrefBeforeFinish) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/retry_unref_before_recv.cc b/test/core/end2end/tests/retry_unref_before_recv.cc index 0251c3a816d..0116fb4018d 100644 --- a/test/core/end2end/tests/retry_unref_before_recv.cc +++ b/test/core/end2end/tests/retry_unref_before_recv.cc @@ -30,7 +30,7 @@ namespace { // Tests that we can unref a call while recv ops are started but before // they complete. This ensures that we don't drop callbacks or cause a // memory leak. -TEST_P(RetryTest, UnrefBeforeRecv) { +CORE_END2END_TEST(RetryTest, UnrefBeforeRecv) { InitServer(ChannelArgs()); InitClient(ChannelArgs().Set( GRPC_ARG_SERVICE_CONFIG, diff --git a/test/core/end2end/tests/server_finishes_request.cc b/test/core/end2end/tests/server_finishes_request.cc index b0568071418..3b47e11cedb 100644 --- a/test/core/end2end/tests/server_finishes_request.cc +++ b/test/core/end2end/tests/server_finishes_request.cc @@ -26,7 +26,7 @@ namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, ServerFinishesRequest) { +CORE_END2END_TEST(CoreEnd2endTest, ServerFinishesRequest) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/server_streaming.cc b/test/core/end2end/tests/server_streaming.cc index 7367cc5b457..c7e78e3b5fb 100644 --- a/test/core/end2end/tests/server_streaming.cc +++ b/test/core/end2end/tests/server_streaming.cc @@ -91,11 +91,15 @@ void ServerStreaming(CoreEnd2endTest& test, int num_messages) { EXPECT_EQ(server_status.message(), "xyz"); } -TEST_P(Http2Test, ServerStreaming) { ServerStreaming(*this, 1); } +CORE_END2END_TEST(Http2Test, ServerStreaming) { ServerStreaming(*this, 1); } -TEST_P(Http2Test, ServerStreamingEmptyStream) { ServerStreaming(*this, 0); } +CORE_END2END_TEST(Http2Test, ServerStreamingEmptyStream) { + ServerStreaming(*this, 0); +} -TEST_P(Http2Test, ServerStreaming10Messages) { ServerStreaming(*this, 10); } +CORE_END2END_TEST(Http2Test, ServerStreaming10Messages) { + ServerStreaming(*this, 10); +} } // namespace } // namespace grpc_core diff --git a/test/core/end2end/tests/shutdown_finishes_calls.cc b/test/core/end2end/tests/shutdown_finishes_calls.cc index eb06c915684..6997da88b02 100644 --- a/test/core/end2end/tests/shutdown_finishes_calls.cc +++ b/test/core/end2end/tests/shutdown_finishes_calls.cc @@ -28,7 +28,9 @@ namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, EarlyServerShutdownFinishesInflightCalls) { +CORE_END2END_TEST(CoreEnd2endTest, EarlyServerShutdownFinishesInflightCalls) { + SKIP_IF_FUZZING(); + auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/shutdown_finishes_tags.cc b/test/core/end2end/tests/shutdown_finishes_tags.cc index c9781e36b01..5a690a34294 100644 --- a/test/core/end2end/tests/shutdown_finishes_tags.cc +++ b/test/core/end2end/tests/shutdown_finishes_tags.cc @@ -16,14 +16,12 @@ // // -#include "gtest/gtest.h" - #include "test/core/end2end/end2end_tests.h" namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, ShutdownFinishesTags) { +CORE_END2END_TEST(CoreEnd2endTest, ShutdownFinishesTags) { // upon shutdown, the server should finish all requested calls indicating // no new call auto s = RequestCall(101); diff --git a/test/core/end2end/tests/simple_delayed_request.cc b/test/core/end2end/tests/simple_delayed_request.cc index 3e1719df50b..9279c32dde1 100644 --- a/test/core/end2end/tests/simple_delayed_request.cc +++ b/test/core/end2end/tests/simple_delayed_request.cc @@ -28,7 +28,7 @@ namespace grpc_core { namespace { -TEST_P(CoreClientChannelTest, SimpleDelayedRequestShort) { +CORE_END2END_TEST(CoreClientChannelTest, SimpleDelayedRequestShort) { InitClient(ChannelArgs() .Set(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS, 1000) .Set(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS, 1000) diff --git a/test/core/end2end/tests/simple_metadata.cc b/test/core/end2end/tests/simple_metadata.cc index 4574d7c7caa..25c2e33f776 100644 --- a/test/core/end2end/tests/simple_metadata.cc +++ b/test/core/end2end/tests/simple_metadata.cc @@ -26,7 +26,7 @@ namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, SimpleMetadata) { +CORE_END2END_TEST(CoreEnd2endTest, SimpleMetadata) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; CoreEnd2endTest::IncomingMetadata server_initial_metadata; diff --git a/test/core/end2end/tests/simple_request.cc b/test/core/end2end/tests/simple_request.cc index 501cf397e68..1ce0bc74713 100644 --- a/test/core/end2end/tests/simple_request.cc +++ b/test/core/end2end/tests/simple_request.cc @@ -98,9 +98,9 @@ void SimpleRequestBody(CoreEnd2endTest& test) { expected_calls); } -TEST_P(CoreEnd2endTest, SimpleRequest) { SimpleRequestBody(*this); } +CORE_END2END_TEST(CoreEnd2endTest, SimpleRequest) { SimpleRequestBody(*this); } -TEST_P(CoreEnd2endTest, SimpleRequest10) { +CORE_END2END_TEST(CoreEnd2endTest, SimpleRequest10) { for (int i = 0; i < 10; i++) { SimpleRequestBody(*this); } diff --git a/test/core/end2end/tests/streaming_error_response.cc b/test/core/end2end/tests/streaming_error_response.cc index 347eede099d..004ed53f4a1 100644 --- a/test/core/end2end/tests/streaming_error_response.cc +++ b/test/core/end2end/tests/streaming_error_response.cc @@ -33,7 +33,7 @@ namespace { // server reads and streams responses. The client cancels the RPC to get an // error status. (Server sending a non-OK status is not considered an error // status.) -TEST_P(CoreEnd2endTest, StreamingErrorResponse) { +CORE_END2END_TEST(CoreEnd2endTest, StreamingErrorResponse) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingMessage response_payload1_recv; @@ -77,7 +77,7 @@ TEST_P(CoreEnd2endTest, StreamingErrorResponse) { EXPECT_TRUE(client_close.was_cancelled()); } -TEST_P(CoreEnd2endTest, StreamingErrorResponseRequestStatusEarly) { +CORE_END2END_TEST(CoreEnd2endTest, StreamingErrorResponseRequestStatusEarly) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingMessage response_payload1_recv; @@ -112,8 +112,9 @@ TEST_P(CoreEnd2endTest, StreamingErrorResponseRequestStatusEarly) { EXPECT_TRUE(client_close.was_cancelled()); } -TEST_P(CoreEnd2endTest, - StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately) { +CORE_END2END_TEST( + CoreEnd2endTest, + StreamingErrorResponseRequestStatusEarlyAndRecvMessageSeparately) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingMetadata server_initial_metadata; CoreEnd2endTest::IncomingStatusOnClient server_status; diff --git a/test/core/end2end/tests/trailing_metadata.cc b/test/core/end2end/tests/trailing_metadata.cc index 16b942cb98b..6c9b694852d 100644 --- a/test/core/end2end/tests/trailing_metadata.cc +++ b/test/core/end2end/tests/trailing_metadata.cc @@ -26,7 +26,7 @@ namespace grpc_core { namespace { -TEST_P(CoreEnd2endTest, TrailingMetadata) { +CORE_END2END_TEST(CoreEnd2endTest, TrailingMetadata) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); CoreEnd2endTest::IncomingStatusOnClient server_status; CoreEnd2endTest::IncomingMetadata server_initial_metadata; diff --git a/test/core/end2end/tests/write_buffering.cc b/test/core/end2end/tests/write_buffering.cc index c6cdc8cf117..699f5edfba1 100644 --- a/test/core/end2end/tests/write_buffering.cc +++ b/test/core/end2end/tests/write_buffering.cc @@ -26,7 +26,7 @@ namespace grpc_core { // Client sends a request with payload, server reads then returns status. -TEST_P(WriteBufferingTest, WriteBufferingWorks) { +CORE_END2END_TEST(WriteBufferingTest, WriteBufferingWorks) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); c.NewBatch(1).SendInitialMetadata({}); CoreEnd2endTest::IncomingMetadata server_initial_metadata; diff --git a/test/core/end2end/tests/write_buffering_at_end.cc b/test/core/end2end/tests/write_buffering_at_end.cc index 354eee04dd2..70bb25cf049 100644 --- a/test/core/end2end/tests/write_buffering_at_end.cc +++ b/test/core/end2end/tests/write_buffering_at_end.cc @@ -27,7 +27,7 @@ namespace grpc_core { namespace { -TEST_P(WriteBufferingTest, WriteBufferingAtEnd) { +CORE_END2END_TEST(WriteBufferingTest, WriteBufferingAtEnd) { auto c = NewClientCall("/foo").Timeout(Duration::Seconds(5)).Create(); c.NewBatch(1).SendInitialMetadata({}); CoreEnd2endTest::IncomingMetadata server_initial_metadata; diff --git a/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc b/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc index c12cb9822db..678a9cfc3bf 100644 --- a/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc +++ b/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc @@ -31,6 +31,7 @@ #include #include "src/core/lib/event_engine/tcp_socket_utils.h" +#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/time.h" #include "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h" #include "test/core/util/port.h" @@ -55,6 +56,7 @@ EventEngine::ResolvedAddress PortToAddress(int port) { } // namespace grpc_core::NoDestruct FuzzingEventEngine::mu_; +grpc_core::NoDestruct FuzzingEventEngine::now_mu_; namespace { const intptr_t kTaskHandleSalt = 12345; @@ -64,9 +66,7 @@ gpr_timespec (*g_orig_gpr_now_impl)(gpr_clock_type clock_type); FuzzingEventEngine::FuzzingEventEngine( Options options, const fuzzing_event_engine::Actions& actions) - : final_tick_length_(options.final_tick_length) { - tick_increments_.clear(); - task_delays_.clear(); + : max_delay_run_after_(options.max_delay_run_after) { tasks_by_id_.clear(); tasks_by_time_.clear(); next_task_id_ = 1; @@ -80,6 +80,7 @@ FuzzingEventEngine::FuzzingEventEngine( // Allow the fuzzer to assign ports. // Once this list is exhausted, we fall back to a deterministic algorithm. for (auto port : actions.assign_ports()) { + if (port == 0 || port > 65535) continue; free_ports_.push(port); fuzzer_mentioned_ports_.insert(port); } @@ -94,35 +95,18 @@ FuzzingEventEngine::FuzzingEventEngine( } // Whilst a fuzzing EventEngine is active we override grpc's now function. + g_orig_gpr_now_impl = gpr_now_impl; + gpr_now_impl = GlobalNowImpl; + GPR_ASSERT(g_fuzzing_event_engine == nullptr); + g_fuzzing_event_engine = this; grpc_core::TestOnlySetProcessEpoch(NowAsTimespec(GPR_CLOCK_MONOTONIC)); - auto update_delay = [](std::map* map, - const fuzzing_event_engine::Delay& delay, - Duration max) { - auto& value = (*map)[delay.id()]; - if (delay.delay_us() > static_cast(max.count() / GPR_NS_PER_US)) { - value = max; - return; - } - Duration add = std::chrono::microseconds(delay.delay_us()); - if (add >= max - value) { - value = max; - } else { - value += add; - } - }; - - for (const auto& delay : actions.tick_lengths()) { - update_delay(&tick_increments_, delay, std::chrono::hours(24)); - } - for (const auto& delay : actions.run_delay()) { - update_delay(&task_delays_, delay, std::chrono::seconds(30)); + for (const auto& delay_ns : actions.run_delay()) { + Duration delay = std::chrono::nanoseconds(delay_ns); + task_delays_.push( + grpc_core::Clamp(delay, Duration(0), max_delay_run_after_)); } - GPR_ASSERT(g_fuzzing_event_engine == nullptr); - g_fuzzing_event_engine = this; - g_orig_gpr_now_impl = gpr_now_impl; - gpr_now_impl = GlobalNowImpl; previous_pick_port_functions_ = grpc_set_pick_port_functions( grpc_pick_port_functions{+[]() -> int { grpc_core::MutexLock lock(&*mu_); @@ -133,7 +117,7 @@ FuzzingEventEngine::FuzzingEventEngine( void FuzzingEventEngine::FuzzingDone() { grpc_core::MutexLock lock(&*mu_); - tick_increments_.clear(); + while (!task_delays_.empty()) task_delays_.pop(); } gpr_timespec FuzzingEventEngine::NowAsTimespec(gpr_clock_type clock_type) { @@ -145,20 +129,28 @@ gpr_timespec FuzzingEventEngine::NowAsTimespec(gpr_clock_type clock_type) { return {secs.count(), static_cast((d - secs).count()), clock_type}; } -void FuzzingEventEngine::Tick() { +void FuzzingEventEngine::Tick(Duration max_time) { std::vector> to_run; { grpc_core::MutexLock lock(&*mu_); - // Increment time - auto tick_it = tick_increments_.find(current_tick_); - if (tick_it != tick_increments_.end()) { - now_ += tick_it->second; - GPR_ASSERT(now_.time_since_epoch().count() >= 0); - tick_increments_.erase(tick_it); - } else if (tick_increments_.empty()) { - now_ += final_tick_length_; - GPR_ASSERT(now_.time_since_epoch().count() >= 0); + grpc_core::MutexLock now_lock(&*now_mu_); + Duration incr = max_time; + // TODO(ctiller): look at tasks_by_time_ and jump forward (once iomgr + // timers are gone) + if (!tasks_by_time_.empty()) { + incr = std::min(incr, tasks_by_time_.begin()->first - now_); } + if (incr < exponential_gate_time_increment_) { + exponential_gate_time_increment_ = std::chrono::milliseconds(1); + } else { + incr = std::min(incr, exponential_gate_time_increment_); + exponential_gate_time_increment_ += + exponential_gate_time_increment_ / 1000; + } + incr = std::max(incr, std::chrono::duration_cast( + std::chrono::milliseconds(1))); + now_ += incr; + GPR_ASSERT(now_.time_since_epoch().count() >= 0); ++current_tick_; // Find newly expired timers. while (!tasks_by_time_.empty() && tasks_by_time_.begin()->first <= now_) { @@ -186,7 +178,7 @@ void FuzzingEventEngine::TickUntilIdle() { } FuzzingEventEngine::Time FuzzingEventEngine::Now() { - grpc_core::MutexLock lock(&*mu_); + grpc_core::MutexLock lock(&*now_mu_); return now_; } @@ -481,14 +473,13 @@ EventEngine::TaskHandle FuzzingEventEngine::RunAfterLocked( Duration when, absl::AnyInvocable closure) { const intptr_t id = next_task_id_; ++next_task_id_; - const auto delay_it = task_delays_.find(id); - // Under fuzzer configuration control, maybe make the task run later. - if (delay_it != task_delays_.end()) { - when += delay_it->second; - task_delays_.erase(delay_it); + if (!task_delays_.empty()) { + when += task_delays_.front(); + task_delays_.pop(); } auto task = std::make_shared(id, std::move(closure)); tasks_by_id_.emplace(id, task); + grpc_core::MutexLock lock(&*now_mu_); tasks_by_time_.emplace(now_ + when, std::move(task)); return TaskHandle{id, kTaskHandleSalt}; } @@ -513,7 +504,7 @@ gpr_timespec FuzzingEventEngine::GlobalNowImpl(gpr_clock_type clock_type) { return gpr_inf_future(clock_type); } GPR_ASSERT(g_fuzzing_event_engine != nullptr); - grpc_core::MutexLock lock(&*mu_); + grpc_core::MutexLock lock(&*now_mu_); return g_fuzzing_event_engine->NowAsTimespec(clock_type); } diff --git a/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h b/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h index 27b931fb0f2..650d7e7b15a 100644 --- a/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h +++ b/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h @@ -52,9 +52,7 @@ namespace experimental { class FuzzingEventEngine : public EventEngine { public: struct Options { - // After all scheduled tick lengths are completed, this is the amount of - // time Now() will be incremented each tick. - Duration final_tick_length = std::chrono::seconds(1); + Duration max_delay_run_after = std::chrono::seconds(30); }; explicit FuzzingEventEngine(Options options, const fuzzing_event_engine::Actions& actions); @@ -64,7 +62,8 @@ class FuzzingEventEngine : public EventEngine { // quiescence. void FuzzingDone() ABSL_LOCKS_EXCLUDED(mu_); // Increment time once and perform any scheduled work. - void Tick() ABSL_LOCKS_EXCLUDED(mu_); + void Tick(Duration max_time = std::chrono::seconds(600)) + ABSL_LOCKS_EXCLUDED(mu_); // Repeatedly call Tick() until there is no more work to do. void TickUntilIdle() ABSL_LOCKS_EXCLUDED(mu_); @@ -243,18 +242,21 @@ class FuzzingEventEngine : public EventEngine { ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); gpr_timespec NowAsTimespec(gpr_clock_type clock_type) - ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_); + ABSL_EXCLUSIVE_LOCKS_REQUIRED(now_mu_); static gpr_timespec GlobalNowImpl(gpr_clock_type clock_type) ABSL_LOCKS_EXCLUDED(mu_); - const Duration final_tick_length_; static grpc_core::NoDestruct mu_; + static grpc_core::NoDestruct now_mu_ + ABSL_ACQUIRED_AFTER(mu_); + Duration exponential_gate_time_increment_ ABSL_GUARDED_BY(mu_) = + std::chrono::milliseconds(1); + const Duration max_delay_run_after_; intptr_t next_task_id_ ABSL_GUARDED_BY(mu_); - intptr_t current_tick_ ABSL_GUARDED_BY(mu_); - Time now_ ABSL_GUARDED_BY(mu_); - std::map tick_increments_ ABSL_GUARDED_BY(mu_); - std::map task_delays_ ABSL_GUARDED_BY(mu_); + intptr_t current_tick_ ABSL_GUARDED_BY(now_mu_); + Time now_ ABSL_GUARDED_BY(now_mu_); + std::queue task_delays_ ABSL_GUARDED_BY(mu_); std::map> tasks_by_id_ ABSL_GUARDED_BY(mu_); std::multimap> tasks_by_time_ ABSL_GUARDED_BY(mu_); diff --git a/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto b/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto index 8971f5698e5..b96ad31cca8 100644 --- a/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto +++ b/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto @@ -17,10 +17,9 @@ syntax = "proto3"; package fuzzing_event_engine; message Actions { - // Map of tick event (0..??) to the amount to increment the timer by. - repeated Delay tick_lengths = 1; - // Map of task id to the amount to delay execution of the task by. - repeated Delay run_delay = 2; + reserved 1; + // How much to delay each task by, in nanoseconds. + repeated uint64 run_delay = 2; // Order in which to bind port numbers. // After this ports are assigned in order, from 1 to 65535. repeated uint32 assign_ports = 3; @@ -28,11 +27,6 @@ message Actions { repeated Connection connections = 4; }; -message Delay { - uint32 id = 1; - uint64 delay_us = 2; -}; - message Connection { repeated uint32 write_size = 1; }; diff --git a/test/core/event_engine/test_suite/fuzzing_event_engine_test.cc b/test/core/event_engine/test_suite/fuzzing_event_engine_test.cc index d7d17715dde..83ae4cf6e63 100644 --- a/test/core/event_engine/test_suite/fuzzing_event_engine_test.cc +++ b/test/core/event_engine/test_suite/fuzzing_event_engine_test.cc @@ -15,7 +15,6 @@ #include "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h" #include -#include #include #include @@ -37,7 +36,6 @@ class ThreadedFuzzingEventEngine : public FuzzingEventEngine { : FuzzingEventEngine( []() { Options options; - options.final_tick_length = std::chrono::milliseconds(10); return options; }(), fuzzing_event_engine::Actions()), diff --git a/test/core/filters/filter_test.cc b/test/core/filters/filter_test.cc index b69e12fb089..ad8bfcf7ed9 100644 --- a/test/core/filters/filter_test.cc +++ b/test/core/filters/filter_test.cc @@ -15,7 +15,6 @@ #include "test/core/filters/filter_test.h" #include -#include #include #include @@ -410,7 +409,6 @@ FilterTestBase::FilterTestBase() grpc_timer_manager_set_threading(false); grpc_event_engine::experimental::FuzzingEventEngine::Options options; - options.final_tick_length = std::chrono::milliseconds(1); return options; }(), fuzzing_event_engine::Actions()) {} diff --git a/test/core/util/BUILD b/test/core/util/BUILD index 1a9514b3def..4e42201be97 100644 --- a/test/core/util/BUILD +++ b/test/core/util/BUILD @@ -368,6 +368,20 @@ grpc_cc_library( hdrs = ["build.h"], ) +grpc_cc_library( + name = "osa_distance", + srcs = ["osa_distance.cc"], + hdrs = ["osa_distance.h"], + external_deps = ["absl/strings"], +) + +grpc_cc_test( + name = "osa_distance_test", + srcs = ["osa_distance_test.cc"], + external_deps = ["gtest"], + deps = ["osa_distance"], +) + grpc_cc_library( name = "scoped_env_var", testonly = True, @@ -390,8 +404,20 @@ grpc_cc_library( hdrs = ["fuzz_config_vars.h"], external_deps = ["absl/types:optional"], deps = [ + "fuzz_config_vars_helpers", "fuzz_config_vars_proto", "//:config_vars", "//:gpr_platform", ], ) + +grpc_cc_library( + name = "fuzz_config_vars_helpers", + srcs = ["fuzz_config_vars_helpers.cc"], + hdrs = ["fuzz_config_vars_helpers.h"], + external_deps = ["absl/strings"], + deps = [ + "//:gpr_platform", + "//src/core:experiments", + ], +) diff --git a/test/core/util/fuzz_config_vars.cc b/test/core/util/fuzz_config_vars.cc index 79b3928930c..734e6c10c0d 100644 --- a/test/core/util/fuzz_config_vars.cc +++ b/test/core/util/fuzz_config_vars.cc @@ -22,17 +22,19 @@ #include "absl/types/optional.h" -#include "src/core/lib/config/config_vars.h" +#include "test/core/util/fuzz_config_vars_helpers.h" namespace grpc_core { -void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars) { +ConfigVars::Overrides OverridesFromFuzzConfigVars( + const grpc::testing::FuzzConfigVars& vars) { ConfigVars::Overrides overrides; if (vars.has_enable_fork_support()) { overrides.enable_fork_support = vars.enable_fork_support(); } if (vars.has_experiments()) { - overrides.experiments = vars.experiments(); + overrides.experiments = + ValidateExperimentsStringForFuzzing(vars.experiments()); } if (vars.has_dns_resolver()) { overrides.dns_resolver = vars.dns_resolver(); @@ -46,7 +48,10 @@ void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars) { if (vars.has_stacktrace_minloglevel()) { overrides.stacktrace_minloglevel = vars.stacktrace_minloglevel(); } - ConfigVars::SetOverrides(overrides); + return overrides; +} +void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars) { + ConfigVars::SetOverrides(OverridesFromFuzzConfigVars(vars)); } } // namespace grpc_core diff --git a/test/core/util/fuzz_config_vars.h b/test/core/util/fuzz_config_vars.h index c5a46e0ce2a..47ef57b85c3 100644 --- a/test/core/util/fuzz_config_vars.h +++ b/test/core/util/fuzz_config_vars.h @@ -21,10 +21,13 @@ #include +#include "src/core/lib/config/config_vars.h" #include "test/core/util/fuzz_config_vars.pb.h" namespace grpc_core { +ConfigVars::Overrides OverridesFromFuzzConfigVars( + const grpc::testing::FuzzConfigVars& vars); void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars); } // namespace grpc_core diff --git a/test/core/util/fuzz_config_vars_helpers.cc b/test/core/util/fuzz_config_vars_helpers.cc new file mode 100644 index 00000000000..e1b46a9d0c0 --- /dev/null +++ b/test/core/util/fuzz_config_vars_helpers.cc @@ -0,0 +1,42 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#include + +#include "absl/strings/str_join.h" +#include "absl/strings/str_split.h" +#include "absl/strings/string_view.h" + +#include "src/core/lib/experiments/config.h" +#include "src/core/lib/experiments/experiments.h" + +namespace grpc_core { + +std::string ValidateExperimentsStringForFuzzing(absl::string_view input) { + std::set experiments; + for (absl::string_view experiment : absl::StrSplit(input, ',')) { + for (size_t i = 0; i < kNumExperiments; i++) { + const auto& metadata = g_experiment_metadata[i]; + if (metadata.name == experiment && metadata.allow_in_fuzzing_config) { + experiments.insert(experiment); + } + } + } + return absl::StrJoin(experiments, ","); +} + +} // namespace grpc_core diff --git a/test/core/util/fuzz_config_vars_helpers.h b/test/core/util/fuzz_config_vars_helpers.h new file mode 100644 index 00000000000..7024f083d20 --- /dev/null +++ b/test/core/util/fuzz_config_vars_helpers.h @@ -0,0 +1,30 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GRPC_TEST_CORE_UTIL_FUZZ_CONFIG_VARS_HELPERS_H +#define GRPC_TEST_CORE_UTIL_FUZZ_CONFIG_VARS_HELPERS_H + +#include + +#include + +#include "absl/strings/string_view.h" + +namespace grpc_core { + +std::string ValidateExperimentsStringForFuzzing(absl::string_view experiments); + +} // namespace grpc_core + +#endif // GRPC_TEST_CORE_UTIL_FUZZ_CONFIG_VARS_HELPERS_H diff --git a/test/core/util/grpc_fuzzer.bzl b/test/core/util/grpc_fuzzer.bzl index 05f9f9a001e..307b8a09dbe 100644 --- a/test/core/util/grpc_fuzzer.bzl +++ b/test/core/util/grpc_fuzzer.bzl @@ -75,6 +75,9 @@ def grpc_proto_fuzzer(name, corpus, proto, proto_deps = [], external_deps = [], CORPUS_DIR = native.package_name() + "/" + corpus deps = deps + ["@com_google_libprotobuf_mutator//:libprotobuf_mutator"] + if "gtest" not in external_deps: + external_deps = external_deps + ["gtest"] + if proto != None: PROTO_LIBRARY = "_%s_proto" % name grpc_proto_library( @@ -94,9 +97,7 @@ def grpc_proto_fuzzer(name, corpus, proto, proto_deps = [], external_deps = [], "//conditions:default": ["//test/core/util:fuzzer_corpus_test"], }), data = data + native.glob([corpus + "/**"]), - external_deps = external_deps + [ - "gtest", - ], + external_deps = external_deps, size = size, args = select({ "//:grpc_build_fuzzers": [CORPUS_DIR, "-runs=20000", "-max_total_time=300"], diff --git a/test/core/util/osa_distance.cc b/test/core/util/osa_distance.cc new file mode 100644 index 00000000000..9691feb5d54 --- /dev/null +++ b/test/core/util/osa_distance.cc @@ -0,0 +1,69 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "test/core/util/osa_distance.h" + +#include + +#include +#include +#include +#include + +namespace grpc_core { + +namespace { +class Matrix { + public: + Matrix(size_t width, size_t height) + : width_(width), + data_(width * height, std::numeric_limits::max()) {} + + size_t& operator()(size_t x, size_t y) { return data_[y * width_ + x]; } + + private: + size_t width_; + std::vector data_; +}; +} // namespace + +size_t OsaDistance(absl::string_view s1, absl::string_view s2) { + if (s1.size() > s2.size()) std::swap(s1, s2); + if (s1.empty()) return static_cast(s2.size()); + + Matrix d(s1.size() + 1, s2.size() + 1); + d(0, 0) = 0; + for (size_t i = 1; i <= s1.size(); ++i) { + d(i, 0) = i; + } + for (size_t j = 1; j <= s2.size(); ++j) { + d(0, j) = j; + } + for (size_t i = 1; i <= s1.size(); ++i) { + for (size_t j = 1; j <= s2.size(); ++j) { + const size_t cost = s1[i - 1] == s2[j - 1] ? 0 : 1; + d(i, j) = std::min({ + d(i - 1, j) + 1, // deletion + d(i, j - 1) + 1, // insertion + d(i - 1, j - 1) + cost // substitution + }); + if (i > 1 && j > 1 && s1[i - 1] == s2[j - 2] && s1[i - 2] == s2[j - 1]) { + d(i, j) = std::min(d(i, j), d(i - 2, j - 2) + 1); // transposition + } + } + } + return d(s1.size(), s2.size()); +} + +} // namespace grpc_core diff --git a/test/core/util/osa_distance.h b/test/core/util/osa_distance.h new file mode 100644 index 00000000000..7e32e2fe06f --- /dev/null +++ b/test/core/util/osa_distance.h @@ -0,0 +1,29 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GRPC_TEST_CORE_UTIL_OSA_DISTANCE_H +#define GRPC_TEST_CORE_UTIL_OSA_DISTANCE_H + +#include + +#include "absl/strings/string_view.h" + +namespace grpc_core { + +// Compute optimal string alignment distance between two strings. +size_t OsaDistance(absl::string_view s1, absl::string_view s2); + +} // namespace grpc_core + +#endif // GRPC_TEST_CORE_UTIL_OSA_DISTANCE_H diff --git a/test/core/util/osa_distance_test.cc b/test/core/util/osa_distance_test.cc new file mode 100644 index 00000000000..a4962af8e81 --- /dev/null +++ b/test/core/util/osa_distance_test.cc @@ -0,0 +1,35 @@ +// Copyright 2023 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "test/core/util/osa_distance.h" + +#include "gtest/gtest.h" + +namespace grpc_core { + +TEST(OsaDistanceTest, Works) { + EXPECT_EQ(OsaDistance("", ""), 0); + EXPECT_EQ(OsaDistance("a", "a"), 0); + EXPECT_EQ(OsaDistance("abc", "abc"), 0); + EXPECT_EQ(OsaDistance("abc", "abd"), 1); + EXPECT_EQ(OsaDistance("abc", "acb"), 1); + EXPECT_EQ(OsaDistance("abcd", "acbd"), 1); +} + +} // namespace grpc_core + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/tools/codegen/core/gen_config_vars.py b/tools/codegen/core/gen_config_vars.py index 36f521eecd0..5fd4b727ce9 100755 --- a/tools/codegen/core/gen_config_vars.py +++ b/tools/codegen/core/gen_config_vars.py @@ -194,9 +194,13 @@ with open('test/core/util/fuzz_config_vars.h', 'w') as H: print("#include ", file=H) print(file=H) print("#include \"test/core/util/fuzz_config_vars.pb.h\"", file=H) + print("#include \"src/core/lib/config/config_vars.h\"", file=H) print(file=H) print("namespace grpc_core {", file=H) print(file=H) + print( + "ConfigVars::Overrides OverridesFromFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars);", + file=H) print( "void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars);", file=H) @@ -214,23 +218,35 @@ with open('test/core/util/fuzz_config_vars.cc', 'w') as C: ]) print("#include \"test/core/util/fuzz_config_vars.h\"", file=C) - print(file=C) - print("#include \"src/core/lib/config/config_vars.h\"", file=C) + print("#include \"test/core/util/fuzz_config_vars_helpers.h\"", file=C) print(file=C) print("namespace grpc_core {", file=C) print(file=C) print( - "void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars) {", + "ConfigVars::Overrides OverridesFromFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars) {", file=C) print(" ConfigVars::Overrides overrides;", file=C) for attr in attrs_in_packing_order: - if attr.get("fuzz", False) == False: + fuzz = attr.get("fuzz", False) + if not fuzz: continue print(" if (vars.has_%s()) {" % attr['name'], file=C) - print(" overrides.%s = vars.%s();" % (attr['name'], attr['name']), - file=C) + if isinstance(fuzz, str): + print(" overrides.%s = %s(vars.%s());" % + (attr['name'], fuzz, attr['name']), + file=C) + else: + print(" overrides.%s = vars.%s();" % + (attr['name'], attr['name']), + file=C) print(" }", file=C) - print(" ConfigVars::SetOverrides(overrides);", file=C) + print(" return overrides;", file=C) + print("}", file=C) + print( + "void ApplyFuzzConfigVars(const grpc::testing::FuzzConfigVars& vars) {", + file=C) + print(" ConfigVars::SetOverrides(OverridesFromFuzzConfigVars(vars));", + file=C) print("}", file=C) print(file=C) print("} // namespace grpc_core", file=C) diff --git a/tools/codegen/core/gen_experiments.py b/tools/codegen/core/gen_experiments.py index d5975225258..43f6e81057b 100755 --- a/tools/codegen/core/gen_experiments.py +++ b/tools/codegen/core/gen_experiments.py @@ -280,9 +280,11 @@ with open('src/core/lib/experiments/experiments.cc', 'w') as C: print(file=C) print("const ExperimentMetadata g_experiment_metadata[] = {", file=C) for attr in attrs: - print(" {%s, description_%s, %s}," % - (c_str(attr['name']), attr['name'], DEFAULTS[attr['default']]), - file=C) + print( + " {%s, description_%s, %s, %s}," % + (c_str(attr['name']), attr['name'], DEFAULTS[attr['default']], + 'true' if attr.get('allow_in_fuzzing_config', True) else 'false'), + file=C) print("};", file=C) print(file=C) print("} // namespace grpc_core", file=C) diff --git a/tools/distrib/fix_build_deps.py b/tools/distrib/fix_build_deps.py index 361628da2e1..fdab2b701f2 100755 --- a/tools/distrib/fix_build_deps.py +++ b/tools/distrib/fix_build_deps.py @@ -234,6 +234,10 @@ EXTERNAL_DEPS = { } INTERNAL_DEPS = { + "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h": + "//test/core/event_engine/fuzzing_event_engine", + "test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h": + "//test/core/event_engine/fuzzing_event_engine:fuzzing_event_engine_proto", 'google/api/expr/v1alpha1/syntax.upb.h': 'google_type_expr_upb', 'google/rpc/status.upb.h': diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json index 60440ebed29..3b6951d531e 100644 --- a/tools/run_tests/generated/tests.json +++ b/tools/run_tests/generated/tests.json @@ -5161,6 +5161,30 @@ ], "uses_polling": true }, + { + "args": [], + "benchmark": false, + "ci_platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "cpu_cost": 1.0, + "exclude_configs": [], + "exclude_iomgrs": [], + "flaky": false, + "gtest": true, + "language": "c++", + "name": "osa_distance_test", + "platforms": [ + "linux", + "mac", + "posix", + "windows" + ], + "uses_polling": true + }, { "args": [], "benchmark": false,