Update tests on HTTP/3 unidirectional streams.
Those streams should be created in a style similar to how they are created in real QuicSpdySession.
gfe-relnote: test only change, no behavior change.
PiperOrigin-RevId: 262616474
Change-Id: Ibbd5ff50043091c6e6ce5ef8380199b57988270b
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc
index 7c90c76..e305102 100644
--- a/quic/core/http/quic_receive_control_stream_test.cc
+++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -68,13 +68,19 @@
SupportedVersions(GetParam().version))),
session_(connection_) {
session_.Initialize();
- auto pending = QuicMakeUnique<PendingStream>(
- QuicUtils::GetFirstUnidirectionalStreamId(
- GetParam().version.transport_version,
- QuicUtils::InvertPerspective(perspective())),
- &session_);
+ QuicStreamId id = perspective() == Perspective::IS_SERVER
+ ? GetNthClientInitiatedUnidirectionalStreamId(
+ session_.transport_version(), 3)
+ : GetNthServerInitiatedUnidirectionalStreamId(
+ session_.transport_version(), 3);
+ char type[] = {kControlStream};
+
+ QuicStreamFrame data1(id, false, 0, QuicStringPiece(type, 1));
+ session_.OnStreamFrame(data1);
+
receive_control_stream_ =
- QuicMakeUnique<QuicReceiveControlStream>(pending.get());
+ QuicSpdySessionPeer::GetReceiveControlStream(&session_);
+
stream_ = new TestStream(GetNthClientInitiatedBidirectionalStreamId(
GetParam().version.transport_version, 0),
&session_);
@@ -100,7 +106,7 @@
}
QuicStreamOffset NumBytesConsumed() {
- return QuicStreamPeer::sequencer(receive_control_stream_.get())
+ return QuicStreamPeer::sequencer(receive_control_stream_)
->NumBytesConsumed();
}
@@ -108,7 +114,7 @@
MockAlarmFactory alarm_factory_;
StrictMock<MockQuicConnection>* connection_;
StrictMock<MockQuicSpdySession> session_;
- std::unique_ptr<QuicReceiveControlStream> receive_control_stream_;
+ QuicReceiveControlStream* receive_control_stream_;
TestStream* stream_;
};
@@ -130,8 +136,7 @@
settings.values[3] = 2;
settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] = 5;
std::string data = EncodeSettings(settings);
- QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
- QuicStringPiece(data));
+ QuicStreamFrame frame(receive_control_stream_->id(), false, 1, data);
EXPECT_NE(5u, session_.max_outbound_header_list_size());
receive_control_stream_->OnStreamFrame(frame);
EXPECT_EQ(5u, session_.max_outbound_header_list_size());
@@ -148,15 +153,15 @@
std::string settings_frame = EncodeSettings(settings);
- EXPECT_EQ(0u, NumBytesConsumed());
+ EXPECT_EQ(1u, NumBytesConsumed());
// Receive first SETTINGS frame.
receive_control_stream_->OnStreamFrame(
QuicStreamFrame(receive_control_stream_->id(), /* fin = */ false,
- /* offset = */ 0, settings_frame));
+ /* offset = */ 1, settings_frame));
// First SETTINGS frame is consumed.
- EXPECT_EQ(settings_frame.size(), NumBytesConsumed());
+ EXPECT_EQ(settings_frame.size() + 1, NumBytesConsumed());
// Second SETTINGS frame causes the connection to be closed.
EXPECT_CALL(*connection_,
@@ -168,13 +173,13 @@
EXPECT_CALL(session_, OnConnectionClosed(_, _));
// Receive second SETTINGS frame.
- receive_control_stream_->OnStreamFrame(
- QuicStreamFrame(receive_control_stream_->id(), /* fin = */ false,
- /* offset = */ settings_frame.size(), settings_frame));
+ receive_control_stream_->OnStreamFrame(QuicStreamFrame(
+ receive_control_stream_->id(), /* fin = */ false,
+ /* offset = */ settings_frame.size() + 1, settings_frame));
// Frame header of second SETTINGS frame is consumed, but not frame payload.
QuicByteCount settings_frame_header_length = 2;
- EXPECT_EQ(settings_frame.size() + settings_frame_header_length,
+ EXPECT_EQ(settings_frame.size() + settings_frame_header_length + 1,
NumBytesConsumed());
}
@@ -186,10 +191,8 @@
std::string data1 = data.substr(0, 1);
std::string data2 = data.substr(1, data.length() - 1);
- QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
- QuicStringPiece(data.data(), 1));
- QuicStreamFrame frame2(receive_control_stream_->id(), false, 1,
- QuicStringPiece(data.data() + 1, data.length() - 1));
+ QuicStreamFrame frame(receive_control_stream_->id(), false, 1, data1);
+ QuicStreamFrame frame2(receive_control_stream_->id(), false, 2, data2);
EXPECT_NE(5u, session_.max_outbound_header_list_size());
receive_control_stream_->OnStreamFrame(frame);
receive_control_stream_->OnStreamFrame(frame2);
@@ -204,8 +207,7 @@
QuicByteCount header_length = encoder.SerializeGoAwayFrame(goaway, &buffer);
std::string data = std::string(buffer.get(), header_length);
- QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
- QuicStringPiece(data));
+ QuicStreamFrame frame(receive_control_stream_->id(), false, 1, data);
EXPECT_CALL(*connection_, CloseConnection(QUIC_HTTP_DECODER_ERROR, _, _));
receive_control_stream_->OnStreamFrame(frame);
}
@@ -220,8 +222,8 @@
frame.prioritized_element_id = stream_->id();
frame.weight = 1;
std::string serialized_frame = PriorityFrame(frame);
- QuicStreamFrame data(receive_control_stream_->id(), false, 0,
- QuicStringPiece(serialized_frame));
+ QuicStreamFrame data(receive_control_stream_->id(), false, 1,
+ serialized_frame);
EXPECT_EQ(3u, stream_->precedence().spdy3_priority());
receive_control_stream_->OnStreamFrame(data);
@@ -236,7 +238,7 @@
HttpEncoder encoder;
uint64_t length =
encoder.SerializePushPromiseFrameWithOnlyPushId(push_promise, &buffer);
- QuicStreamFrame frame(receive_control_stream_->id(), false, 0, buffer.get(),
+ QuicStreamFrame frame(receive_control_stream_->id(), false, 1, buffer.get(),
length);
// TODO(lassey) Check for HTTP_WRONG_STREAM error code.
EXPECT_CALL(*connection_, CloseConnection(QUIC_HTTP_DECODER_ERROR, _, _))
@@ -251,13 +253,13 @@
"03" // payload length
"666f6f"); // payload "foo"
- EXPECT_EQ(0u, NumBytesConsumed());
+ EXPECT_EQ(1u, NumBytesConsumed());
receive_control_stream_->OnStreamFrame(
QuicStreamFrame(receive_control_stream_->id(), /* fin = */ false,
- /* offset = */ 0, unknown_frame));
+ /* offset = */ 1, unknown_frame));
- EXPECT_EQ(unknown_frame.size(), NumBytesConsumed());
+ EXPECT_EQ(unknown_frame.size() + 1, NumBytesConsumed());
}
} // namespace
diff --git a/quic/core/http/quic_send_control_stream_test.cc b/quic/core/http/quic_send_control_stream_test.cc
index 7c0ee12..722ac86 100644
--- a/quic/core/http/quic_send_control_stream_test.cc
+++ b/quic/core/http/quic_send_control_stream_test.cc
@@ -54,9 +54,7 @@
SupportedVersions(GetParam().version))),
session_(connection_) {
session_.Initialize();
- send_control_stream_ = QuicMakeUnique<QuicSendControlStream>(
- QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(&session_),
- &session_, /* max_inbound_header_list_size = */ 100);
+ send_control_stream_ = QuicSpdySessionPeer::GetSendControlStream(&session_);
ON_CALL(session_, WritevData(_, _, _, _, _))
.WillByDefault(Invoke(MockQuicSession::ConsumeData));
}
@@ -68,7 +66,7 @@
StrictMock<MockQuicConnection>* connection_;
StrictMock<MockQuicSpdySession> session_;
HttpEncoder encoder_;
- std::unique_ptr<QuicSendControlStream> send_control_stream_;
+ QuicSendControlStream* send_control_stream_;
};
INSTANTIATE_TEST_SUITE_P(Tests,
diff --git a/quic/core/qpack/qpack_receive_stream_test.cc b/quic/core/qpack/qpack_receive_stream_test.cc
index 121043f..63c8baf 100644
--- a/quic/core/qpack/qpack_receive_stream_test.cc
+++ b/quic/core/qpack/qpack_receive_stream_test.cc
@@ -55,12 +55,16 @@
SupportedVersions(GetParam().version))),
session_(connection_) {
session_.Initialize();
+ // TODO(b/112770235): Remove explicit QPACK stream construction in test once
+ // QPACK streams are created in QuicSpdySession initialization.
PendingStream* pending =
new PendingStream(QuicUtils::GetFirstUnidirectionalStreamId(
GetParam().version.transport_version,
QuicUtils::InvertPerspective(perspective())),
&session_);
- qpack_receive_stream_ = QuicMakeUnique<QpackReceiveStream>(pending);
+ auto qpack_receive = QuicMakeUnique<QpackReceiveStream>(pending);
+ qpack_receive_stream_ = qpack_receive.get();
+ session_.RegisterStaticStream(std::move(qpack_receive), false);
delete pending;
}
@@ -70,7 +74,7 @@
MockAlarmFactory alarm_factory_;
StrictMock<MockQuicConnection>* connection_;
StrictMock<MockQuicSpdySession> session_;
- std::unique_ptr<QpackReceiveStream> qpack_receive_stream_;
+ QpackReceiveStream* qpack_receive_stream_;
};
INSTANTIATE_TEST_SUITE_P(Tests,
diff --git a/quic/core/qpack/qpack_send_stream_test.cc b/quic/core/qpack/qpack_send_stream_test.cc
index 46037c9..9eb6471 100644
--- a/quic/core/qpack/qpack_send_stream_test.cc
+++ b/quic/core/qpack/qpack_send_stream_test.cc
@@ -56,9 +56,15 @@
SupportedVersions(GetParam().version))),
session_(connection_) {
session_.Initialize();
- qpack_send_stream_ = QuicMakeUnique<QpackSendStream>(
+
+ // TODO(b/112770235): Remove explicit QPACK stream construction in test once
+ // QPACK streams are created in QuicSpdySession initialization.
+ auto qpack_send = QuicMakeUnique<QpackSendStream>(
QuicSpdySessionPeer::GetNextOutgoingUnidirectionalStreamId(&session_),
&session_, kQpackEncoderStream);
+ qpack_send_stream_ = qpack_send.get();
+ session_.RegisterStaticStream(std::move(qpack_send), false);
+
ON_CALL(session_, WritevData(_, _, _, _, _))
.WillByDefault(Invoke(MockQuicSession::ConsumeData));
}
@@ -69,7 +75,7 @@
MockAlarmFactory alarm_factory_;
StrictMock<MockQuicConnection>* connection_;
StrictMock<MockQuicSpdySession> session_;
- std::unique_ptr<QpackSendStream> qpack_send_stream_;
+ QpackSendStream* qpack_send_stream_;
};
INSTANTIATE_TEST_SUITE_P(Tests,