Index: net/quic/core/quic_spdy_stream_test.cc |
diff --git a/net/quic/core/quic_spdy_stream_test.cc b/net/quic/core/quic_spdy_stream_test.cc |
index e202b3c57f456d5db4f746a3515c5799d9491eab..63aaa89671cf5ce2f698d7291a3b5e27d008bfad 100644 |
--- a/net/quic/core/quic_spdy_stream_test.cc |
+++ b/net/quic/core/quic_spdy_stream_test.cc |
@@ -16,7 +16,7 @@ |
#include "net/quic/platform/api/quic_test.h" |
#include "net/quic/platform/api/quic_text_utils.h" |
#include "net/quic/test_tools/quic_flow_controller_peer.h" |
-#include "net/quic/test_tools/quic_session_peer.h" |
+#include "net/quic/test_tools/quic_spdy_session_peer.h" |
#include "net/quic/test_tools/quic_stream_peer.h" |
#include "net/quic/test_tools/quic_test_utils.h" |
@@ -100,10 +100,10 @@ class QuicSpdyStreamTest : public QuicTestWithParam<QuicVersion> { |
&helper_, &alarm_factory_, Perspective::IS_SERVER, |
SupportedVersions(GetParam())); |
session_.reset(new testing::StrictMock<MockQuicSpdySession>(connection_)); |
- stream_ = new TestStream(kClientDataStreamId1, session_.get(), |
+ stream_ = new TestStream(GetNthClientInitiatedId(0), session_.get(), |
stream_should_process_data); |
session_->ActivateStream(QuicWrapUnique(stream_)); |
- stream2_ = new TestStream(kClientDataStreamId2, session_.get(), |
+ stream2_ = new TestStream(GetNthClientInitiatedId(1), session_.get(), |
stream_should_process_data); |
session_->ActivateStream(QuicWrapUnique(stream2_)); |
} |
@@ -114,6 +114,10 @@ class QuicSpdyStreamTest : public QuicTestWithParam<QuicVersion> { |
return h; |
} |
+ QuicStreamId GetNthClientInitiatedId(int n) { |
+ return QuicSpdySessionPeer::GetNthClientInitiatedStreamId(*session_, n); |
+ } |
+ |
protected: |
MockQuicConnectionHelper helper_; |
MockAlarmFactory alarm_factory_; |
@@ -248,7 +252,8 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersAndBody) { |
QuicHeaderList headers = ProcessHeaders(false, headers_); |
EXPECT_EQ(headers, stream_->header_list()); |
stream_->ConsumeHeaderList(); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame); |
EXPECT_EQ(QuicHeaderList(), stream_->header_list()); |
EXPECT_EQ(body, stream_->data()); |
@@ -266,7 +271,7 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersAndBodyFragments) { |
size_t remaining_data = body.size() - offset; |
QuicStringPiece fragment(body.data() + offset, |
std::min(fragment_size, remaining_data)); |
- QuicStreamFrame frame(kClientDataStreamId1, false, offset, |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, offset, |
QuicStringPiece(fragment)); |
stream_->OnStreamFrame(frame); |
} |
@@ -284,13 +289,13 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersAndBodyFragmentsSplit) { |
stream_->ConsumeHeaderList(); |
QuicStringPiece fragment1(body.data(), split_point); |
- QuicStreamFrame frame1(kClientDataStreamId1, false, 0, |
+ QuicStreamFrame frame1(GetNthClientInitiatedId(0), false, 0, |
QuicStringPiece(fragment1)); |
stream_->OnStreamFrame(frame1); |
QuicStringPiece fragment2(body.data() + split_point, |
body.size() - split_point); |
- QuicStreamFrame frame2(kClientDataStreamId1, false, split_point, |
+ QuicStreamFrame frame2(GetNthClientInitiatedId(0), false, split_point, |
QuicStringPiece(fragment2)); |
stream_->OnStreamFrame(frame2); |
@@ -304,7 +309,8 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersAndBodyReadv) { |
string body = "this is the body"; |
ProcessHeaders(false, headers_); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame); |
stream_->ConsumeHeaderList(); |
@@ -325,7 +331,8 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersAndBodyMarkConsumed) { |
string body = "this is the body"; |
ProcessHeaders(false, headers_); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame); |
stream_->ConsumeHeaderList(); |
@@ -344,7 +351,8 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersAndBodyIncrementalReadv) { |
string body = "this is the body"; |
ProcessHeaders(false, headers_); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame); |
stream_->ConsumeHeaderList(); |
@@ -365,7 +373,8 @@ TEST_P(QuicSpdyStreamTest, ProcessHeadersUsingReadvWithMultipleIovecs) { |
string body = "this is the body"; |
ProcessHeaders(false, headers_); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame); |
stream_->ConsumeHeaderList(); |
@@ -402,7 +411,7 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlBlocked) { |
const uint64_t kOverflow = 15; |
string body(kWindow + kOverflow, 'a'); |
- EXPECT_CALL(*connection_, SendBlocked(kClientDataStreamId1)); |
+ EXPECT_CALL(*connection_, SendBlocked(GetNthClientInitiatedId(0))); |
EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)) |
.WillOnce(Return(QuicConsumedData(kWindow, true))); |
stream_->WriteOrBufferData(body, false, nullptr); |
@@ -440,7 +449,8 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlNoWindowUpdateIfNotConsumed) { |
string body(kWindow / 3, 'a'); |
ProcessHeaders(false, headers_); |
- QuicStreamFrame frame1(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame1(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame1); |
EXPECT_EQ(kWindow - (kWindow / 3), QuicFlowControllerPeer::ReceiveWindowSize( |
stream_->flow_controller())); |
@@ -448,7 +458,7 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlNoWindowUpdateIfNotConsumed) { |
// Now receive another frame which results in the receive window being over |
// half full. This should all be buffered, decreasing the receive window but |
// not sending WINDOW_UPDATE. |
- QuicStreamFrame frame2(kClientDataStreamId1, false, kWindow / 3, |
+ QuicStreamFrame frame2(GetNthClientInitiatedId(0), false, kWindow / 3, |
QuicStringPiece(body)); |
stream_->OnStreamFrame(frame2); |
EXPECT_EQ( |
@@ -476,7 +486,8 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlWindowUpdate) { |
ProcessHeaders(false, headers_); |
stream_->ConsumeHeaderList(); |
- QuicStreamFrame frame1(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame1(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame1); |
EXPECT_EQ(kWindow - (kWindow / 3), QuicFlowControllerPeer::ReceiveWindowSize( |
stream_->flow_controller())); |
@@ -485,10 +496,10 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlWindowUpdate) { |
// half full. This will trigger the stream to increase its receive window |
// offset and send a WINDOW_UPDATE. The result will be again an available |
// window of kWindow bytes. |
- QuicStreamFrame frame2(kClientDataStreamId1, false, kWindow / 3, |
+ QuicStreamFrame frame2(GetNthClientInitiatedId(0), false, kWindow / 3, |
QuicStringPiece(body)); |
EXPECT_CALL(*connection_, |
- SendWindowUpdate(kClientDataStreamId1, |
+ SendWindowUpdate(GetNthClientInitiatedId(0), |
QuicFlowControllerPeer::ReceiveWindowOffset( |
stream_->flow_controller()) + |
2 * kWindow / 3)); |
@@ -530,22 +541,25 @@ TEST_P(QuicSpdyStreamTest, ConnectionFlowControlWindowUpdate) { |
// Each stream gets a quarter window of data. This should not trigger a |
// WINDOW_UPDATE for either stream, nor for the connection. |
string body(kWindow / 4, 'a'); |
- QuicStreamFrame frame1(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame1(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
stream_->OnStreamFrame(frame1); |
- QuicStreamFrame frame2(kClientDataStreamId2, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame2(GetNthClientInitiatedId(1), false, 0, |
+ QuicStringPiece(body)); |
stream2_->OnStreamFrame(frame2); |
// Now receive a further single byte on one stream - again this does not |
// trigger a stream WINDOW_UPDATE, but now the connection flow control window |
// is over half full and thus a connection WINDOW_UPDATE is sent. |
- EXPECT_CALL(*connection_, SendWindowUpdate(kClientDataStreamId1, _)).Times(0); |
- EXPECT_CALL(*connection_, SendWindowUpdate(kClientDataStreamId2, _)).Times(0); |
+ EXPECT_CALL(*connection_, SendWindowUpdate(GetNthClientInitiatedId(0), _)) |
+ .Times(0); |
+ EXPECT_CALL(*connection_, SendWindowUpdate(GetNthClientInitiatedId(1), _)) |
+ .Times(0); |
EXPECT_CALL(*connection_, |
- SendWindowUpdate(0, |
- QuicFlowControllerPeer::ReceiveWindowOffset( |
- session_->flow_controller()) + |
- 1 + kWindow / 2)); |
- QuicStreamFrame frame3(kClientDataStreamId1, false, (kWindow / 4), |
+ SendWindowUpdate(0, QuicFlowControllerPeer::ReceiveWindowOffset( |
+ session_->flow_controller()) + |
+ 1 + kWindow / 2)); |
+ QuicStreamFrame frame3(GetNthClientInitiatedId(0), false, (kWindow / 4), |
QuicStringPiece("a")); |
stream_->OnStreamFrame(frame3); |
} |
@@ -567,7 +581,8 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlViolation) { |
// Receive data to overflow the window, violating flow control. |
string body(kWindow + 1, 'a'); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
EXPECT_CALL(*connection_, |
CloseConnection(QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA, _, _)); |
stream_->OnStreamFrame(frame); |
@@ -605,7 +620,8 @@ TEST_P(QuicSpdyStreamTest, ConnectionFlowControlViolation) { |
// Send enough data to overflow the connection level flow control window. |
string body(kConnectionWindow + 1, 'a'); |
EXPECT_LT(body.size(), kStreamWindow); |
- QuicStreamFrame frame(kClientDataStreamId1, false, 0, QuicStringPiece(body)); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), false, 0, |
+ QuicStringPiece(body)); |
EXPECT_CALL(*connection_, |
CloseConnection(QUIC_FLOW_CONTROL_RECEIVED_TOO_MUCH_DATA, _, _)); |
@@ -627,7 +643,7 @@ TEST_P(QuicSpdyStreamTest, StreamFlowControlFinNotBlocked) { |
string body = ""; |
bool fin = true; |
- EXPECT_CALL(*connection_, SendBlocked(kClientDataStreamId1)).Times(0); |
+ EXPECT_CALL(*connection_, SendBlocked(GetNthClientInitiatedId(0))).Times(0); |
EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _)) |
.WillOnce(Return(QuicConsumedData(0, fin))); |
@@ -709,7 +725,7 @@ TEST_P(QuicSpdyStreamTest, ReceivingTrailersWithOffset) { |
EXPECT_FALSE(stream_->IsDoneReading()); |
// Receive and consume body. |
- QuicStreamFrame frame(kClientDataStreamId1, /*fin=*/false, 0, body); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), /*fin=*/false, 0, body); |
stream_->OnStreamFrame(frame); |
EXPECT_EQ(body, stream_->data()); |
EXPECT_TRUE(stream_->IsDoneReading()); |
@@ -790,7 +806,7 @@ TEST_P(QuicSpdyStreamTest, ReceivingTrailersAfterBodyWithFin) { |
stream_->ConsumeHeaderList(); |
// Receive body data, with FIN. |
- QuicStreamFrame frame(kClientDataStreamId1, /*fin=*/true, 0, "body"); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), /*fin=*/true, 0, "body"); |
stream_->OnStreamFrame(frame); |
// Receive trailing headers after FIN already received. |
@@ -814,7 +830,7 @@ TEST_P(QuicSpdyStreamTest, ClosingStreamWithNoTrailers) { |
// Receive and consume body with FIN set, and no trailers. |
const string kBody = string(1024, 'x'); |
- QuicStreamFrame frame(kClientDataStreamId1, /*fin=*/true, 0, kBody); |
+ QuicStreamFrame frame(GetNthClientInitiatedId(0), /*fin=*/true, 0, kBody); |
stream_->OnStreamFrame(frame); |
EXPECT_TRUE(stream_->IsDoneReading()); |