diff --git a/test/core/end2end/fuzzers/connector_fuzzer.cc b/test/core/end2end/fuzzers/connector_fuzzer.cc index a42c3da0fe00f..28fc566f1e234 100644 --- a/test/core/end2end/fuzzers/connector_fuzzer.cc +++ b/test/core/end2end/fuzzers/connector_fuzzer.cc @@ -12,9 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include + #include #include "fuzztest/fuzztest.h" +#include "gtest/gtest.h" #include "src/core/ext/transport/chttp2/client/chttp2_connector.h" #include "src/core/lib/address_utils/parse_address.h" #include "src/core/lib/event_engine/channel_args_endpoint_config.h" @@ -30,9 +33,6 @@ #include "test/core/test_util/fuzz_config_vars.h" #include "test/core/test_util/test_config.h" -bool squelch = true; -bool leak_check = true; - using ::grpc_event_engine::experimental::ChannelArgsEndpointConfig; using ::grpc_event_engine::experimental::EventEngine; using ::grpc_event_engine::experimental::FuzzingEventEngine; @@ -54,6 +54,7 @@ class ConnectorFuzzer { FuzzingEventEngine::Options(), msg.event_engine_actions())), mock_endpoint_controller_(MockEndpointController::Create(engine_)), connector_(make_connector()) { + LOG(INFO) << msg.ShortDebugString(); CHECK(engine_); grpc_event_engine::experimental::SetDefaultEventEngine(engine_); for (const auto& input : msg.network_input()) { @@ -171,9 +172,6 @@ void RunConnectorFuzzer( absl::FunctionRef()> make_security_connector, absl::FunctionRef()> make_connector) { - if (squelch && !GetEnv("GRPC_TRACE_FUZZER").has_value()) { - grpc_disable_all_absl_logs(); - } static const int once = []() { ForceEnableExperiment("event_engine_client", true); ForceEnableExperiment("event_engine_listener", true); @@ -185,6 +183,12 @@ void RunConnectorFuzzer( ConnectorFuzzer(msg, make_security_connector, make_connector).Run(); } +auto ParseTestProto(const std::string& proto) { + fuzzer_input::Msg msg; + CHECK(google::protobuf::TextFormat::ParseFromString(proto, &msg)); + return msg; +} + void Chttp2(fuzzer_input::Msg msg) { RunConnectorFuzzer( msg, []() { return RefCountedPtr(); }, @@ -205,5 +209,32 @@ void Chttp2Fakesec(fuzzer_input::Msg msg) { } FUZZ_TEST(ConnectorFuzzers, Chttp2Fakesec); +TEST(ConnectorFuzzers, Chttp2FakesecTimeout1) { + Chttp2Fakesec(ParseTestProto(R"pb(network_input { + input_segments { + segments { delay_ms: 1 } + segments { + delay_ms: 1 + chaotic_good { + known_type: SETTINGS + payload_empty_of_length: 2147483647 + } + } + } + connect_delay_ms: -1603816748 + connect_timeout_ms: 3 + } + event_engine_actions { + run_delay: 1 + assign_ports: 1 + assign_ports: 2147483647 + connections {} + } + config_vars { + verbosity: "" + experiments: 9223372036854775807 + })pb")); +} + } // namespace } // namespace grpc_core diff --git a/test/core/end2end/fuzzers/network_input.cc b/test/core/end2end/fuzzers/network_input.cc index 67f4e6b8c28b3..369efe10199ef 100644 --- a/test/core/end2end/fuzzers/network_input.cc +++ b/test/core/end2end/fuzzers/network_input.cc @@ -251,9 +251,10 @@ SliceBuffer ChaoticGoodFrame(const fuzzer_input::ChaoticGoodFrame& frame) { suffix.Append(Slice::FromCopiedString(frame.payload_raw_bytes())); break; case fuzzer_input::ChaoticGoodFrame::kPayloadEmptyOfLength: - h.payload_length = frame.payload_empty_of_length(); - suffix.Append(Slice::FromCopiedString( - std::string(frame.payload_empty_of_length(), 'a'))); + h.payload_length = + std::min(65536, frame.payload_empty_of_length()); + suffix.Append( + Slice::FromCopiedString(std::string(h.payload_length, 'a'))); break; case fuzzer_input::ChaoticGoodFrame::kPayloadOtherConnectionId: h.payload_connection_id = diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc index 508deaa5dd56a..ffa46bfa166aa 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.cc +++ b/test/core/end2end/fuzzers/server_fuzzer.cc @@ -37,9 +37,6 @@ #include "test/core/test_util/fuzz_config_vars.h" #include "test/core/test_util/test_config.h" -bool squelch = true; -bool leak_check = true; - namespace grpc_core { namespace testing { @@ -97,9 +94,6 @@ void RunServerFuzzer( const fuzzer_input::Msg& msg, absl::FunctionRef server_setup) { - if (squelch && !GetEnv("GRPC_TRACE_FUZZER").has_value()) { - grpc_disable_all_absl_logs(); - } static const int once = []() { ForceEnableExperiment("event_engine_client", true); ForceEnableExperiment("event_engine_listener", true);