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);