Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Side by Side Diff: net/quic/quic_reliable_client_stream_test.cc

Issue 136523005: Use the right priority when marking QUIC streams write blocked via (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes for quic_reliable_client_stream_test Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | net/quic/quic_session.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_reliable_client_stream.h" 5 #include "net/quic/quic_reliable_client_stream.h"
6 6
7 #include "net/base/net_errors.h" 7 #include "net/base/net_errors.h"
8 #include "net/base/test_completion_callback.h" 8 #include "net/base/test_completion_callback.h"
9 #include "net/quic/quic_client_session.h" 9 #include "net/quic/quic_client_session.h"
10 #include "net/quic/quic_utils.h" 10 #include "net/quic/quic_utils.h"
(...skipping 23 matching lines...) Expand all
34 MOCK_METHOD0(HasSendHeadersComplete, bool()); 34 MOCK_METHOD0(HasSendHeadersComplete, bool());
35 35
36 private: 36 private:
37 DISALLOW_COPY_AND_ASSIGN(MockDelegate); 37 DISALLOW_COPY_AND_ASSIGN(MockDelegate);
38 }; 38 };
39 39
40 class QuicReliableClientStreamTest 40 class QuicReliableClientStreamTest
41 : public ::testing::TestWithParam<QuicVersion> { 41 : public ::testing::TestWithParam<QuicVersion> {
42 public: 42 public:
43 QuicReliableClientStreamTest() 43 QuicReliableClientStreamTest()
44 : session_(new MockConnection(false, SupportedVersions(GetParam()))), 44 : session_(new MockConnection(false, SupportedVersions(GetParam()))) {
45 stream_(kStreamId, &session_, BoundNetLog()) { 45 stream_ = new QuicReliableClientStream(kStreamId, &session_, BoundNetLog());
46 stream_.SetDelegate(&delegate_); 46 session_.ActivateStream(stream_);
47 stream_->SetDelegate(&delegate_);
47 } 48 }
48 49
49 void InitializeHeaders() { 50 void InitializeHeaders() {
50 headers_[":host"] = "www.google.com"; 51 headers_[":host"] = "www.google.com";
51 headers_[":path"] = "/index.hml"; 52 headers_[":path"] = "/index.hml";
52 headers_[":scheme"] = "https"; 53 headers_[":scheme"] = "https";
53 headers_["cookie"] = 54 headers_["cookie"] =
54 "__utma=208381060.1228362404.1372200928.1372200928.1372200928.1; " 55 "__utma=208381060.1228362404.1372200928.1372200928.1372200928.1; "
55 "__utmc=160408618; " 56 "__utmc=160408618; "
56 "GX=DQAAAOEAAACWJYdewdE9rIrW6qw3PtVi2-d729qaa-74KqOsM1NVQblK4VhX" 57 "GX=DQAAAOEAAACWJYdewdE9rIrW6qw3PtVi2-d729qaa-74KqOsM1NVQblK4VhX"
(...skipping 14 matching lines...) Expand all
71 "Rgj3RWUoPumQVCxtSOBdX0GlJOEcDTNCzQIm9BSfetog_eP_TfYubKudt5eMsXmN6" 72 "Rgj3RWUoPumQVCxtSOBdX0GlJOEcDTNCzQIm9BSfetog_eP_TfYubKudt5eMsXmN6"
72 "QnyXHeGeK2UINUzJ-D30AFcpqYgH9_1BvYSpi7fc7_ydBU8TaD8ZRxvtnzXqj0RfG" 73 "QnyXHeGeK2UINUzJ-D30AFcpqYgH9_1BvYSpi7fc7_ydBU8TaD8ZRxvtnzXqj0RfG"
73 "tuHghmv3aD-uzSYJ75XDdzKdizZ86IG6Fbn1XFhYZM-fbHhm3mVEXnyRW4ZuNOLFk" 74 "tuHghmv3aD-uzSYJ75XDdzKdizZ86IG6Fbn1XFhYZM-fbHhm3mVEXnyRW4ZuNOLFk"
74 "Fas6LMcVC6Q8QLlHYbXBpdNFuGbuZGUnav5C-2I_-46lL0NGg3GewxGKGHvHEfoyn" 75 "Fas6LMcVC6Q8QLlHYbXBpdNFuGbuZGUnav5C-2I_-46lL0NGg3GewxGKGHvHEfoyn"
75 "EFFlEYHsBQ98rXImL8ySDycdLEFvBPdtctPmWCfTxwmoSMLHU2SCVDhbqMWU5b0yr" 76 "EFFlEYHsBQ98rXImL8ySDycdLEFvBPdtctPmWCfTxwmoSMLHU2SCVDhbqMWU5b0yr"
76 "JBCScs_ejbKaqBDoB7ZGxTvqlrB__2ZmnHHjCr8RgMRtKNtIeuZAo "; 77 "JBCScs_ejbKaqBDoB7ZGxTvqlrB__2ZmnHHjCr8RgMRtKNtIeuZAo ";
77 } 78 }
78 79
79 testing::StrictMock<MockDelegate> delegate_; 80 testing::StrictMock<MockDelegate> delegate_;
80 MockSession session_; 81 MockSession session_;
81 QuicReliableClientStream stream_; 82 QuicReliableClientStream* stream_;
82 QuicCryptoClientConfig crypto_config_; 83 QuicCryptoClientConfig crypto_config_;
83 SpdyHeaderBlock headers_; 84 SpdyHeaderBlock headers_;
84 }; 85 };
85 86
86 INSTANTIATE_TEST_CASE_P(Version, QuicReliableClientStreamTest, 87 INSTANTIATE_TEST_CASE_P(Version, QuicReliableClientStreamTest,
87 ::testing::ValuesIn(QuicSupportedVersions())); 88 ::testing::ValuesIn(QuicSupportedVersions()));
88 89
89 TEST_P(QuicReliableClientStreamTest, OnFinRead) { 90 TEST_P(QuicReliableClientStreamTest, OnFinRead) {
90 InitializeHeaders(); 91 InitializeHeaders();
91 string uncompressed_headers = 92 string uncompressed_headers =
92 SpdyUtils::SerializeUncompressedHeaders(headers_); 93 SpdyUtils::SerializeUncompressedHeaders(headers_);
93 EXPECT_CALL(delegate_, OnDataReceived(StrEq(uncompressed_headers.data()), 94 EXPECT_CALL(delegate_, OnDataReceived(StrEq(uncompressed_headers.data()),
94 uncompressed_headers.size())); 95 uncompressed_headers.size()));
95 QuicStreamOffset offset = 0; 96 QuicStreamOffset offset = 0;
96 if (GetParam() > QUIC_VERSION_12) { 97 if (GetParam() > QUIC_VERSION_12) {
97 stream_.OnStreamHeaders(uncompressed_headers); 98 stream_->OnStreamHeaders(uncompressed_headers);
98 stream_.OnStreamHeadersComplete(false, uncompressed_headers.length()); 99 stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
99 } else { 100 } else {
100 QuicSpdyCompressor compressor; 101 QuicSpdyCompressor compressor;
101 string compressed_headers = compressor.CompressHeaders(headers_); 102 string compressed_headers = compressor.CompressHeaders(headers_);
102 QuicStreamFrame frame1(kStreamId, false, 0, 103 QuicStreamFrame frame1(kStreamId, false, 0,
103 MakeIOVector(compressed_headers)); 104 MakeIOVector(compressed_headers));
104 stream_.OnStreamFrame(frame1); 105 stream_->OnStreamFrame(frame1);
105 offset = compressed_headers.length(); 106 offset = compressed_headers.length();
106 } 107 }
107 108
108 IOVector iov; 109 IOVector iov;
109 QuicStreamFrame frame2(kStreamId, true, offset, iov); 110 QuicStreamFrame frame2(kStreamId, true, offset, iov);
110 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR)); 111 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR));
111 stream_.OnStreamFrame(frame2); 112 stream_->OnStreamFrame(frame2);
112 } 113 }
113 114
114 TEST_P(QuicReliableClientStreamTest, ProcessData) { 115 TEST_P(QuicReliableClientStreamTest, ProcessData) {
115 const char data[] = "hello world!"; 116 const char data[] = "hello world!";
116 EXPECT_CALL(delegate_, OnDataReceived(StrEq(data), arraysize(data))); 117 EXPECT_CALL(delegate_, OnDataReceived(StrEq(data), arraysize(data)));
117 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR)); 118 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR));
118 119
119 EXPECT_EQ(arraysize(data), stream_.ProcessData(data, arraysize(data))); 120 EXPECT_EQ(arraysize(data), stream_->ProcessData(data, arraysize(data)));
120 } 121 }
121 122
122 TEST_P(QuicReliableClientStreamTest, ProcessDataWithError) { 123 TEST_P(QuicReliableClientStreamTest, ProcessDataWithError) {
123 const char data[] = "hello world!"; 124 const char data[] = "hello world!";
124 EXPECT_CALL(delegate_, 125 EXPECT_CALL(delegate_,
125 OnDataReceived(StrEq(data), 126 OnDataReceived(StrEq(data),
126 arraysize(data))).WillOnce(Return(ERR_UNEXPECTED)); 127 arraysize(data))).WillOnce(Return(ERR_UNEXPECTED));
127 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR)); 128 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR));
128 129
129 130
130 EXPECT_EQ(0u, stream_.ProcessData(data, arraysize(data))); 131 EXPECT_EQ(0u, stream_->ProcessData(data, arraysize(data)));
131 } 132 }
132 133
133 TEST_P(QuicReliableClientStreamTest, OnError) { 134 TEST_P(QuicReliableClientStreamTest, OnError) {
134 EXPECT_CALL(delegate_, OnError(ERR_INTERNET_DISCONNECTED)); 135 EXPECT_CALL(delegate_, OnError(ERR_INTERNET_DISCONNECTED));
135 136
136 stream_.OnError(ERR_INTERNET_DISCONNECTED); 137 stream_->OnError(ERR_INTERNET_DISCONNECTED);
137 EXPECT_FALSE(stream_.GetDelegate()); 138 EXPECT_FALSE(stream_->GetDelegate());
138 } 139 }
139 140
140 TEST_P(QuicReliableClientStreamTest, WriteStreamData) { 141 TEST_P(QuicReliableClientStreamTest, WriteStreamData) {
141 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR)); 142 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR));
142 143
143 const char kData1[] = "hello world"; 144 const char kData1[] = "hello world";
144 const size_t kDataLen = arraysize(kData1); 145 const size_t kDataLen = arraysize(kData1);
145 146
146 // All data written. 147 // All data written.
147 EXPECT_CALL(session_, WritevData(stream_.id(), _, _, _, _, _)).WillOnce( 148 EXPECT_CALL(session_, WritevData(stream_->id(), _, _, _, _, _)).WillOnce(
148 Return(QuicConsumedData(kDataLen, true))); 149 Return(QuicConsumedData(kDataLen, true)));
149 TestCompletionCallback callback; 150 TestCompletionCallback callback;
150 EXPECT_EQ(OK, stream_.WriteStreamData(base::StringPiece(kData1, kDataLen), 151 EXPECT_EQ(OK, stream_->WriteStreamData(base::StringPiece(kData1, kDataLen),
151 true, callback.callback())); 152 true, callback.callback()));
152 } 153 }
153 154
154 TEST_P(QuicReliableClientStreamTest, WriteStreamDataAsync) { 155 TEST_P(QuicReliableClientStreamTest, WriteStreamDataAsync) {
155 EXPECT_CALL(delegate_, HasSendHeadersComplete()); 156 if (GetParam() > QUIC_VERSION_12) {
157 EXPECT_CALL(delegate_, HasSendHeadersComplete()).Times(1);
158 } else {
159 EXPECT_CALL(delegate_, HasSendHeadersComplete()).Times(2);
160 }
156 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR)); 161 EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR));
157 162
158 const char kData1[] = "hello world"; 163 const char kData1[] = "hello world";
159 const size_t kDataLen = arraysize(kData1); 164 const size_t kDataLen = arraysize(kData1);
160 165
161 // No data written. 166 // No data written.
162 EXPECT_CALL(session_, WritevData(stream_.id(), _, _, _, _, _)).WillOnce( 167 EXPECT_CALL(session_, WritevData(stream_->id(), _, _, _, _, _)).WillOnce(
163 Return(QuicConsumedData(0, false))); 168 Return(QuicConsumedData(0, false)));
164 TestCompletionCallback callback; 169 TestCompletionCallback callback;
165 EXPECT_EQ(ERR_IO_PENDING, 170 EXPECT_EQ(ERR_IO_PENDING,
166 stream_.WriteStreamData(base::StringPiece(kData1, kDataLen), 171 stream_->WriteStreamData(base::StringPiece(kData1, kDataLen),
167 true, callback.callback())); 172 true, callback.callback()));
168 ASSERT_FALSE(callback.have_result()); 173 ASSERT_FALSE(callback.have_result());
169 174
170 // All data written. 175 // All data written.
171 EXPECT_CALL(session_, WritevData(stream_.id(), _, _, _, _, _)).WillOnce( 176 EXPECT_CALL(session_, WritevData(stream_->id(), _, _, _, _, _)).WillOnce(
172 Return(QuicConsumedData(kDataLen, true))); 177 Return(QuicConsumedData(kDataLen, true)));
173 stream_.OnCanWrite(); 178 stream_->OnCanWrite();
174 ASSERT_TRUE(callback.have_result()); 179 ASSERT_TRUE(callback.have_result());
175 EXPECT_EQ(OK, callback.WaitForResult()); 180 EXPECT_EQ(OK, callback.WaitForResult());
176 } 181 }
177 182
178 } // namespace 183 } // namespace
179 } // namespace test 184 } // namespace test
180 } // namespace net 185 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/quic/quic_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698