@@ -248,7 +248,7 @@ class Http2CodecImplTestFixture {
248248 server_wrapper_ = std::make_unique<ConnectionWrapper>(server_.get ());
249249 createHeaderValidator ();
250250 request_encoder_ = &client_->newStream (response_decoder_);
251- setupDefaultConnectionMocks ();
251+ setupDefaultMocks ();
252252 driveToCompletion ();
253253
254254 EXPECT_CALL (server_callbacks_, newStream (_, _))
@@ -267,7 +267,16 @@ class Http2CodecImplTestFixture {
267267 .WillByDefault (Return (true ));
268268 }
269269
270- void setupDefaultConnectionMocks () {
270+ void setupRequestDecoderMock (MockRequestDecoder& request_decoder) {
271+ EXPECT_CALL (request_decoder, getRequestDecoderHandle ())
272+ .WillRepeatedly (Invoke ([&request_decoder]() {
273+ auto handle = std::make_unique<NiceMock<MockRequestDecoderHandle>>();
274+ ON_CALL (*handle, get ()).WillByDefault (Return (OptRef<RequestDecoder>(request_decoder)));
275+ return handle;
276+ }));
277+ }
278+
279+ void setupDefaultMocks () {
271280 ON_CALL (client_connection_, write (_, _))
272281 .WillByDefault (Invoke ([&](Buffer::Instance& data, bool ) -> void {
273282 if (corrupt_metadata_frame_) {
@@ -280,6 +289,7 @@ class Http2CodecImplTestFixture {
280289 [&](Buffer::Instance& data, bool ) -> void { client_wrapper_->buffer_ .add (data); }));
281290 // Set to the small read size (reads are suggested to be 16k aligned).
282291 ON_CALL (server_connection_, bufferLimit ()).WillByDefault (Return (16 * 1024 ));
292+ setupRequestDecoderMock (request_decoder_);
283293 }
284294
285295 void http2OptionsFromTuple (envoy::config::core::v3::Http2ProtocolOptions& options,
@@ -1895,6 +1905,7 @@ TEST_P(Http2CodecImplFlowControlTest, TestFlowControlInPendingSendData) {
18951905 StreamEncoder* response_encoder2;
18961906 MockStreamCallbacks server_stream_callbacks2;
18971907 MockRequestDecoder request_decoder2;
1908+ setupRequestDecoderMock (request_decoder2);
18981909 // When the server stream is created it should check the status of the
18991910 // underlying connection. Pretend it is overrun.
19001911 EXPECT_CALL (server_connection_, aboveHighWatermark ()).WillOnce (Return (true ));
@@ -2505,7 +2516,7 @@ TEST_P(Http2CodecImplStreamLimitTest, MaxClientStreams) {
25052516 server_http2_options_, random_, max_request_headers_kb_, max_request_headers_count_,
25062517 headers_with_underscores_action_);
25072518 server_wrapper_ = std::make_unique<ConnectionWrapper>(server_.get ());
2508- setupDefaultConnectionMocks ();
2519+ setupDefaultMocks ();
25092520 driveToCompletion ();
25102521 for (int i = 0 ; i < 101 ; ++i) {
25112522 request_encoder_ = &client_->newStream (response_decoder_);
@@ -4351,6 +4362,7 @@ TEST_P(Http2CodecImplTest, CheckHeaderPaddedWhitespaceValidation) {
43514362 MockStreamCallbacks server_stream_callbacks;
43524363 MockRequestDecoder request_decoder;
43534364
4365+ setupRequestDecoderMock (request_decoder);
43544366 EXPECT_CALL (server_callbacks_, newStream (_, _))
43554367 .WillOnce (Invoke ([&](ResponseEncoder& encoder, bool ) -> RequestDecoder& {
43564368 response_encoder = &encoder;
@@ -4437,6 +4449,8 @@ TEST_P(Http2CodecImplTest, CheckHeaderValueValidation) {
44374449
44384450 scoped_runtime_.mergeValues ({{" envoy.reloadable_features.validate_upstream_headers" , " false" }});
44394451 stream_error_on_invalid_http_messaging_ = true ;
4452+
4453+ setupRequestDecoderMock (request_decoder_);
44404454 initialize ();
44414455
44424456#ifdef ENVOY_ENABLE_UHV
@@ -4471,6 +4485,7 @@ TEST_P(Http2CodecImplTest, CheckHeaderValueValidation) {
44714485 MockStreamCallbacks server_stream_callbacks;
44724486 MockRequestDecoder request_decoder;
44734487
4488+ setupRequestDecoderMock (request_decoder);
44744489 EXPECT_CALL (server_callbacks_, newStream (_, _))
44754490 .WillOnce (Invoke ([&](ResponseEncoder& encoder, bool ) -> RequestDecoder& {
44764491 response_encoder = &encoder;
@@ -4591,7 +4606,7 @@ class Http2CodecMetadataTest : public Http2CodecImplTestFixture, public ::testin
45914606 server_http2_options_, random_, max_request_headers_kb_, max_request_headers_count_,
45924607 headers_with_underscores_action_);
45934608 server_wrapper_ = std::make_unique<ConnectionWrapper>(server_.get ());
4594- setupDefaultConnectionMocks ();
4609+ setupDefaultMocks ();
45954610 driveToCompletion ();
45964611 }
45974612
0 commit comments