Commit 2a9f45a0 authored by Ryan Hamilton's avatar Ryan Hamilton Committed by Commit Bot

Simplify QuicTestPacketMarker by adding helper methods for generating

HTTP/3 SETTINGS and PRIORITY frames.

Change-Id: I04f93729bdb7c82af37072e55cd4e40d567be408
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1764272Reviewed-by: default avatarZhongyi Shi <zhongyi@chromium.org>
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Auto-Submit: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#689565}
parent 1f806e55
...@@ -356,30 +356,14 @@ QuicTestPacketMaker::MakeRstAndRequestHeadersPacket( ...@@ -356,30 +356,14 @@ QuicTestPacketMaker::MakeRstAndRequestHeadersPacket(
// A stream frame containing stream type will be written on the control // A stream frame containing stream type will be written on the control
// stream first. // stream first.
std::string type(1, 0x00); std::string type(1, 0x00);
std::string settings_data = GenerateHttp3SettingsData();
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
std::string settings_data = std::string(buffer1.get(), frame_length1);
if (stream_offsets_[2] == 0) { if (stream_offsets_[2] == 0) {
frames.push_back(GenerateNextStreamFrame(2, false, type)); frames.push_back(GenerateNextStreamFrame(2, false, type));
frames.push_back(GenerateNextStreamFrame(2, false, settings_data)); frames.push_back(GenerateNextStreamFrame(2, false, settings_data));
} }
quic::PriorityFrame frame; std::string priority_data = GenerateHttp3PriorityData(priority, stream_id);
frame.weight = priority;
frame.dependency_type = quic::ROOT_OF_TREE;
frame.prioritized_type = quic::REQUEST_STREAM;
frame.prioritized_element_id = stream_id;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializePriorityFrame(frame, &buffer);
std::string priority_data = std::string(buffer.get(), frame_length);
frames.push_back(GenerateNextStreamFrame(2, false, priority_data)); frames.push_back(GenerateNextStreamFrame(2, false, priority_data));
...@@ -784,15 +768,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( ...@@ -784,15 +768,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket(
// stream first. // stream first.
std::string type(1, 0x00); std::string type(1, 0x00);
quic::SettingsFrame settings; std::string settings_data = GenerateHttp3SettingsData();
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
std::string settings_data = std::string(buffer1.get(), frame_length1);
quic::QuicFrames frames; quic::QuicFrames frames;
if (stream_offsets_[2] == 0) { if (stream_offsets_[2] == 0) {
...@@ -800,16 +776,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( ...@@ -800,16 +776,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket(
frames.push_back(GenerateNextStreamFrame(2, false, settings_data)); frames.push_back(GenerateNextStreamFrame(2, false, settings_data));
} }
quic::PriorityFrame frame; std::string priority_data = GenerateHttp3PriorityData(priority, stream_id);
frame.weight = priority;
frame.dependency_type = quic::ROOT_OF_TREE;
frame.prioritized_type = quic::REQUEST_STREAM;
frame.prioritized_element_id = stream_id;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializePriorityFrame(frame, &buffer);
std::string priority_data = std::string(buffer.get(), frame_length);
frames.push_back(GenerateNextStreamFrame(2, false, priority_data)); frames.push_back(GenerateNextStreamFrame(2, false, priority_data));
...@@ -870,15 +837,7 @@ QuicTestPacketMaker::MakeRequestHeadersPacket( ...@@ -870,15 +837,7 @@ QuicTestPacketMaker::MakeRequestHeadersPacket(
// stream first. // stream first.
std::string type(1, 0x00); std::string type(1, 0x00);
quic::SettingsFrame settings; std::string settings_data = GenerateHttp3SettingsData();
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
std::string settings_data = std::string(buffer1.get(), frame_length1);
quic::QuicFrames frames; quic::QuicFrames frames;
if (stream_offsets_[2] == 0) { if (stream_offsets_[2] == 0) {
...@@ -886,16 +845,7 @@ QuicTestPacketMaker::MakeRequestHeadersPacket( ...@@ -886,16 +845,7 @@ QuicTestPacketMaker::MakeRequestHeadersPacket(
frames.push_back(GenerateNextStreamFrame(2, false, settings_data)); frames.push_back(GenerateNextStreamFrame(2, false, settings_data));
} }
quic::PriorityFrame frame; std::string priority_data = GenerateHttp3PriorityData(priority, stream_id);
frame.weight = priority;
frame.dependency_type = quic::ROOT_OF_TREE;
frame.prioritized_type = quic::REQUEST_STREAM;
frame.prioritized_element_id = stream_id;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializePriorityFrame(frame, &buffer);
std::string priority_data = std::string(buffer.get(), frame_length);
frames.push_back(GenerateNextStreamFrame(2, false, priority_data)); frames.push_back(GenerateNextStreamFrame(2, false, priority_data));
...@@ -935,15 +885,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndRstPacket( ...@@ -935,15 +885,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndRstPacket(
// stream first. // stream first.
std::string type(1, 0x00); std::string type(1, 0x00);
quic::SettingsFrame settings; std::string settings_data = GenerateHttp3SettingsData();
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] =
kQuicMaxHeaderListSize;
settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer1;
quic::QuicByteCount frame_length1 =
http_encoder_.SerializeSettingsFrame(settings, &buffer1);
std::string settings_data = std::string(buffer1.get(), frame_length1);
quic::QuicFrames frames; quic::QuicFrames frames;
if (stream_offsets_[2] == 0) { if (stream_offsets_[2] == 0) {
...@@ -951,16 +893,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndRstPacket( ...@@ -951,16 +893,7 @@ QuicTestPacketMaker::MakeRequestHeadersAndRstPacket(
frames.push_back(GenerateNextStreamFrame(2, false, settings_data)); frames.push_back(GenerateNextStreamFrame(2, false, settings_data));
} }
quic::PriorityFrame frame; std::string priority_data = GenerateHttp3PriorityData(priority, stream_id);
frame.weight = priority;
frame.dependency_type = quic::ROOT_OF_TREE;
frame.prioritized_type = quic::REQUEST_STREAM;
frame.prioritized_element_id = stream_id;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializePriorityFrame(frame, &buffer);
std::string priority_data = std::string(buffer.get(), frame_length);
frames.push_back(GenerateNextStreamFrame(2, false, priority_data)); frames.push_back(GenerateNextStreamFrame(2, false, priority_data));
...@@ -1269,14 +1202,7 @@ QuicTestPacketMaker::MakeSettingsPacket(uint64_t packet_number, ...@@ -1269,14 +1202,7 @@ QuicTestPacketMaker::MakeSettingsPacket(uint64_t packet_number,
// A stream frame containing stream type will be written on the control stream // A stream frame containing stream type will be written on the control stream
// first. // first.
std::string type(1, 0x00); std::string type(1, 0x00);
quic::SettingsFrame settings; std::string settings_data = GenerateHttp3SettingsData();
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] = kQuicMaxHeaderListSize;
settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializeSettingsFrame(settings, &buffer);
std::string settings_data = std::string(buffer.get(), frame_length);
std::vector<std::string> data; std::vector<std::string> data;
if (coalesce_http_frames_) { if (coalesce_http_frames_) {
...@@ -1314,14 +1240,7 @@ QuicTestPacketMaker::MakeInitialSettingsPacket(uint64_t packet_number) { ...@@ -1314,14 +1240,7 @@ QuicTestPacketMaker::MakeInitialSettingsPacket(uint64_t packet_number) {
// A stream frame containing stream type will be written on the control stream // A stream frame containing stream type will be written on the control stream
// first. // first.
std::string type(1, 0x00); std::string type(1, 0x00);
quic::SettingsFrame settings; std::string settings_data = GenerateHttp3SettingsData();
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] = kQuicMaxHeaderListSize;
settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializeSettingsFrame(settings, &buffer);
std::string settings_data = std::string(buffer.get(), frame_length);
std::vector<std::string> data; std::vector<std::string> data;
if (coalesce_http_frames_) { if (coalesce_http_frames_) {
...@@ -1626,5 +1545,31 @@ quic::QuicStreamId QuicTestPacketMaker::GetHeadersStreamId() const { ...@@ -1626,5 +1545,31 @@ quic::QuicStreamId QuicTestPacketMaker::GetHeadersStreamId() const {
return quic::QuicUtils::GetHeadersStreamId(version_.transport_version); return quic::QuicUtils::GetHeadersStreamId(version_.transport_version);
} }
std::string QuicTestPacketMaker::GenerateHttp3SettingsData() {
quic::SettingsFrame settings;
settings.values[quic::SETTINGS_MAX_HEADER_LIST_SIZE] = kQuicMaxHeaderListSize;
settings.values[quic::SETTINGS_QPACK_MAX_TABLE_CAPACITY] =
quic::kDefaultQpackMaxDynamicTableCapacity;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializeSettingsFrame(settings, &buffer);
return std::string(buffer.get(), frame_length);
}
std::string QuicTestPacketMaker::GenerateHttp3PriorityData(
spdy::SpdyPriority priority,
quic::QuicStreamId stream_id) {
quic::PriorityFrame frame;
frame.weight = priority;
frame.dependency_type = quic::ROOT_OF_TREE;
frame.prioritized_type = quic::REQUEST_STREAM;
frame.prioritized_element_id = stream_id;
std::unique_ptr<char[]> buffer;
quic::QuicByteCount frame_length =
http_encoder_.SerializePriorityFrame(frame, &buffer);
return std::string(buffer.get(), frame_length);
}
} // namespace test } // namespace test
} // namespace net } // namespace net
...@@ -403,6 +403,10 @@ class QuicTestPacketMaker { ...@@ -403,6 +403,10 @@ class QuicTestPacketMaker {
quic::QuicStreamId GetFirstBidirectionalStreamId() const; quic::QuicStreamId GetFirstBidirectionalStreamId() const;
quic::QuicStreamId GetHeadersStreamId() const; quic::QuicStreamId GetHeadersStreamId() const;
std::string GenerateHttp3SettingsData();
std::string GenerateHttp3PriorityData(spdy::SpdyPriority priority,
quic::QuicStreamId stream_id);
quic::ParsedQuicVersion version_; quic::ParsedQuicVersion version_;
quic::QuicConnectionId connection_id_; quic::QuicConnectionId connection_id_;
quic::MockClock* clock_; // Owned by QuicStreamFactory. quic::MockClock* clock_; // Owned by QuicStreamFactory.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment