Support sending custom settings in the TestFrameSequence initial SETTINGS frames. This testing addition will be important for sending SETTINGS_MAX_CONCURRENT_STREAMS in nghttp2 and oghttp2 tests. PiperOrigin-RevId: 398244207
diff --git a/http2/adapter/test_frame_sequence.cc b/http2/adapter/test_frame_sequence.cc index 346eac8..7a3f115 100644 --- a/http2/adapter/test_frame_sequence.cc +++ b/http2/adapter/test_frame_sequence.cc
@@ -19,15 +19,15 @@ return out; } -TestFrameSequence& TestFrameSequence::ClientPreface() { +TestFrameSequence& TestFrameSequence::ClientPreface( + absl::Span<const Http2Setting> settings) { preface_ = spdy::kHttp2ConnectionHeaderPrefix; - frames_.push_back(absl::make_unique<spdy::SpdySettingsIR>()); - return *this; + return Settings(settings); } -TestFrameSequence& TestFrameSequence::ServerPreface() { - frames_.push_back(absl::make_unique<spdy::SpdySettingsIR>()); - return *this; +TestFrameSequence& TestFrameSequence::ServerPreface( + absl::Span<const Http2Setting> settings) { + return Settings(settings); } TestFrameSequence& TestFrameSequence::Data(Http2StreamId stream_id, @@ -51,12 +51,12 @@ } TestFrameSequence& TestFrameSequence::Settings( - absl::Span<Http2Setting> values) { - auto settings = absl::make_unique<spdy::SpdySettingsIR>(); - for (const Http2Setting& setting : values) { - settings->AddSetting(setting.id, setting.value); + absl::Span<const Http2Setting> settings) { + auto settings_frame = absl::make_unique<spdy::SpdySettingsIR>(); + for (const Http2Setting& setting : settings) { + settings_frame->AddSetting(setting.id, setting.value); } - frames_.push_back(std::move(settings)); + frames_.push_back(std::move(settings_frame)); return *this; }
diff --git a/http2/adapter/test_frame_sequence.h b/http2/adapter/test_frame_sequence.h index 86cf297..43e97db 100644 --- a/http2/adapter/test_frame_sequence.h +++ b/http2/adapter/test_frame_sequence.h
@@ -21,14 +21,16 @@ public: TestFrameSequence() = default; - TestFrameSequence& ClientPreface(); - TestFrameSequence& ServerPreface(); + TestFrameSequence& ClientPreface( + absl::Span<const Http2Setting> settings = {}); + TestFrameSequence& ServerPreface( + absl::Span<const Http2Setting> settings = {}); TestFrameSequence& Data(Http2StreamId stream_id, absl::string_view payload, bool fin = false, absl::optional<int> padding_length = absl::nullopt); TestFrameSequence& RstStream(Http2StreamId stream_id, Http2ErrorCode error); - TestFrameSequence& Settings(absl::Span<Http2Setting> values); + TestFrameSequence& Settings(absl::Span<const Http2Setting> settings); TestFrameSequence& SettingsAck(); TestFrameSequence& Ping(Http2PingId id); TestFrameSequence& PingAck(Http2PingId id);