OLD | NEW |
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/spdy/spdy_http_stream.h" | 5 #include "net/spdy/spdy_http_stream.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 | 136 |
137 // SpdyHttpStream::GetUploadProgress() should still work even before the | 137 // SpdyHttpStream::GetUploadProgress() should still work even before the |
138 // stream is initialized. | 138 // stream is initialized. |
139 TEST_P(SpdyHttpStreamTest, GetUploadProgressBeforeInitialization) { | 139 TEST_P(SpdyHttpStreamTest, GetUploadProgressBeforeInitialization) { |
140 MockRead reads[] = { | 140 MockRead reads[] = { |
141 MockRead(ASYNC, 0, 0) // EOF | 141 MockRead(ASYNC, 0, 0) // EOF |
142 }; | 142 }; |
143 | 143 |
144 HostPortPair host_port_pair("www.google.com", 80); | 144 HostPortPair host_port_pair("www.google.com", 80); |
145 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 145 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
146 PRIVACY_MODE_DISABLED); | 146 kPrivacyModeDisabled); |
147 InitSession(reads, arraysize(reads), NULL, 0, key); | 147 InitSession(reads, arraysize(reads), NULL, 0, key); |
148 | 148 |
149 SpdyHttpStream stream(session_, false); | 149 SpdyHttpStream stream(session_, false); |
150 UploadProgress progress = stream.GetUploadProgress(); | 150 UploadProgress progress = stream.GetUploadProgress(); |
151 EXPECT_EQ(0u, progress.size()); | 151 EXPECT_EQ(0u, progress.size()); |
152 EXPECT_EQ(0u, progress.position()); | 152 EXPECT_EQ(0u, progress.position()); |
153 | 153 |
154 // Pump the event loop so |reads| is consumed before the function returns. | 154 // Pump the event loop so |reads| is consumed before the function returns. |
155 base::RunLoop().RunUntilIdle(); | 155 base::RunLoop().RunUntilIdle(); |
156 } | 156 } |
157 | 157 |
158 TEST_P(SpdyHttpStreamTest, SendRequest) { | 158 TEST_P(SpdyHttpStreamTest, SendRequest) { |
159 scoped_ptr<SpdyFrame> req( | 159 scoped_ptr<SpdyFrame> req( |
160 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 160 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
161 MockWrite writes[] = { | 161 MockWrite writes[] = { |
162 CreateMockWrite(*req.get(), 1), | 162 CreateMockWrite(*req.get(), 1), |
163 }; | 163 }; |
164 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 164 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
165 MockRead reads[] = { | 165 MockRead reads[] = { |
166 CreateMockRead(*resp, 2), | 166 CreateMockRead(*resp, 2), |
167 MockRead(SYNCHRONOUS, 0, 3) // EOF | 167 MockRead(SYNCHRONOUS, 0, 3) // EOF |
168 }; | 168 }; |
169 | 169 |
170 HostPortPair host_port_pair("www.google.com", 80); | 170 HostPortPair host_port_pair("www.google.com", 80); |
171 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 171 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
172 PRIVACY_MODE_DISABLED); | 172 kPrivacyModeDisabled); |
173 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); | 173 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); |
174 | 174 |
175 HttpRequestInfo request; | 175 HttpRequestInfo request; |
176 request.method = "GET"; | 176 request.method = "GET"; |
177 request.url = GURL("http://www.google.com/"); | 177 request.url = GURL("http://www.google.com/"); |
178 TestCompletionCallback callback; | 178 TestCompletionCallback callback; |
179 HttpResponseInfo response; | 179 HttpResponseInfo response; |
180 HttpRequestHeaders headers; | 180 HttpRequestHeaders headers; |
181 BoundNetLog net_log; | 181 BoundNetLog net_log; |
182 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); | 182 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 MockRead reads[] = { | 237 MockRead reads[] = { |
238 CreateMockRead(*resp1, 2), | 238 CreateMockRead(*resp1, 2), |
239 CreateMockRead(*body1, 3), | 239 CreateMockRead(*body1, 3), |
240 CreateMockRead(*resp2, 4), | 240 CreateMockRead(*resp2, 4), |
241 CreateMockRead(*body2, 5), | 241 CreateMockRead(*body2, 5), |
242 MockRead(ASYNC, 0, 6) // EOF | 242 MockRead(ASYNC, 0, 6) // EOF |
243 }; | 243 }; |
244 | 244 |
245 HostPortPair host_port_pair("www.google.com", 80); | 245 HostPortPair host_port_pair("www.google.com", 80); |
246 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 246 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
247 PRIVACY_MODE_DISABLED); | 247 kPrivacyModeDisabled); |
248 InitSessionDeterministic(reads, arraysize(reads), | 248 InitSessionDeterministic(reads, arraysize(reads), |
249 writes, arraysize(writes), | 249 writes, arraysize(writes), |
250 key); | 250 key); |
251 | 251 |
252 HttpRequestInfo request1; | 252 HttpRequestInfo request1; |
253 request1.method = "GET"; | 253 request1.method = "GET"; |
254 request1.url = GURL("http://www.google.com/"); | 254 request1.url = GURL("http://www.google.com/"); |
255 TestCompletionCallback callback1; | 255 TestCompletionCallback callback1; |
256 HttpResponseInfo response1; | 256 HttpResponseInfo response1; |
257 HttpRequestHeaders headers1; | 257 HttpRequestHeaders headers1; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 writes.push_back(CreateMockWrite(*body, seq++)); // POST upload frame | 326 writes.push_back(CreateMockWrite(*body, seq++)); // POST upload frame |
327 | 327 |
328 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); | 328 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
329 std::vector<MockRead> reads; | 329 std::vector<MockRead> reads; |
330 reads.push_back(CreateMockRead(*resp, seq++)); | 330 reads.push_back(CreateMockRead(*resp, seq++)); |
331 reads.push_back(CreateMockRead(*body, seq++)); | 331 reads.push_back(CreateMockRead(*body, seq++)); |
332 reads.push_back(MockRead(SYNCHRONOUS, 0, seq++)); // EOF | 332 reads.push_back(MockRead(SYNCHRONOUS, 0, seq++)); // EOF |
333 | 333 |
334 HostPortPair host_port_pair("www.google.com", 80); | 334 HostPortPair host_port_pair("www.google.com", 80); |
335 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 335 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
336 PRIVACY_MODE_DISABLED); | 336 kPrivacyModeDisabled); |
337 InitSession(vector_as_array(&reads), reads.size(), | 337 InitSession(vector_as_array(&reads), reads.size(), |
338 vector_as_array(&writes), writes.size(), | 338 vector_as_array(&writes), writes.size(), |
339 key); | 339 key); |
340 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); | 340 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); |
341 | 341 |
342 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); | 342 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); |
343 const int kFirstChunkSize = kUploadDataSize/2; | 343 const int kFirstChunkSize = kUploadDataSize/2; |
344 upload_stream.AppendChunk(kUploadData, kFirstChunkSize, false); | 344 upload_stream.AppendChunk(kUploadData, kFirstChunkSize, false); |
345 upload_stream.AppendChunk(kUploadData + kFirstChunkSize, | 345 upload_stream.AppendChunk(kUploadData + kFirstChunkSize, |
346 kUploadDataSize - kFirstChunkSize, true); | 346 kUploadDataSize - kFirstChunkSize, true); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 MockRead reads[] = { | 402 MockRead reads[] = { |
403 CreateMockRead(*resp, 4), | 403 CreateMockRead(*resp, 4), |
404 CreateMockRead(*chunk1, 5), | 404 CreateMockRead(*chunk1, 5), |
405 CreateMockRead(*chunk2, 6), | 405 CreateMockRead(*chunk2, 6), |
406 CreateMockRead(*chunk3, 7), | 406 CreateMockRead(*chunk3, 7), |
407 MockRead(ASYNC, 0, 8) // EOF | 407 MockRead(ASYNC, 0, 8) // EOF |
408 }; | 408 }; |
409 | 409 |
410 HostPortPair host_port_pair("www.google.com", 80); | 410 HostPortPair host_port_pair("www.google.com", 80); |
411 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 411 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
412 PRIVACY_MODE_DISABLED); | 412 kPrivacyModeDisabled); |
413 InitSessionDeterministic(reads, arraysize(reads), | 413 InitSessionDeterministic(reads, arraysize(reads), |
414 writes, arraysize(writes), | 414 writes, arraysize(writes), |
415 key); | 415 key); |
416 | 416 |
417 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); | 417 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); |
418 | 418 |
419 HttpRequestInfo request; | 419 HttpRequestInfo request; |
420 request.method = "POST"; | 420 request.method = "POST"; |
421 request.url = GURL("http://www.google.com/"); | 421 request.url = GURL("http://www.google.com/"); |
422 request.upload_data_stream = &upload_stream; | 422 request.upload_data_stream = &upload_stream; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 CreateMockWrite(*req.get(), 1), | 496 CreateMockWrite(*req.get(), 1), |
497 }; | 497 }; |
498 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 498 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
499 MockRead reads[] = { | 499 MockRead reads[] = { |
500 CreateMockRead(*resp, 2), | 500 CreateMockRead(*resp, 2), |
501 MockRead(SYNCHRONOUS, 0, 3) // EOF | 501 MockRead(SYNCHRONOUS, 0, 3) // EOF |
502 }; | 502 }; |
503 | 503 |
504 HostPortPair host_port_pair("www.google.com", 80); | 504 HostPortPair host_port_pair("www.google.com", 80); |
505 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 505 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
506 PRIVACY_MODE_DISABLED); | 506 kPrivacyModeDisabled); |
507 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); | 507 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); |
508 | 508 |
509 HttpRequestInfo request; | 509 HttpRequestInfo request; |
510 request.method = "GET"; | 510 request.method = "GET"; |
511 request.url = GURL(full_url); | 511 request.url = GURL(full_url); |
512 TestCompletionCallback callback; | 512 TestCompletionCallback callback; |
513 HttpResponseInfo response; | 513 HttpResponseInfo response; |
514 HttpRequestHeaders headers; | 514 HttpRequestHeaders headers; |
515 BoundNetLog net_log; | 515 BoundNetLog net_log; |
516 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); | 516 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 spdy_util_.ConstructSpdyWindowUpdate(1, kUploadDataSize)); | 555 spdy_util_.ConstructSpdyWindowUpdate(1, kUploadDataSize)); |
556 MockRead reads[] = { | 556 MockRead reads[] = { |
557 CreateMockRead(*window_update, 2), | 557 CreateMockRead(*window_update, 2), |
558 CreateMockRead(*resp, 3), | 558 CreateMockRead(*resp, 3), |
559 CreateMockRead(*chunk1, 4), | 559 CreateMockRead(*chunk1, 4), |
560 MockRead(ASYNC, 0, 5) // EOF | 560 MockRead(ASYNC, 0, 5) // EOF |
561 }; | 561 }; |
562 | 562 |
563 HostPortPair host_port_pair("www.google.com", 80); | 563 HostPortPair host_port_pair("www.google.com", 80); |
564 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 564 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
565 PRIVACY_MODE_DISABLED); | 565 kPrivacyModeDisabled); |
566 | 566 |
567 InitSessionDeterministic(reads, arraysize(reads), | 567 InitSessionDeterministic(reads, arraysize(reads), |
568 writes, arraysize(writes), | 568 writes, arraysize(writes), |
569 key); | 569 key); |
570 | 570 |
571 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); | 571 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); |
572 | 572 |
573 HttpRequestInfo request; | 573 HttpRequestInfo request; |
574 request.method = "POST"; | 574 request.method = "POST"; |
575 request.url = GURL("http://www.google.com/"); | 575 request.url = GURL("http://www.google.com/"); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
627 ASSERT_TRUE(response.headers.get()); | 627 ASSERT_TRUE(response.headers.get()); |
628 ASSERT_EQ(200, response.headers->response_code()); | 628 ASSERT_EQ(200, response.headers->response_code()); |
629 EXPECT_TRUE(deterministic_data_->at_read_eof()); | 629 EXPECT_TRUE(deterministic_data_->at_read_eof()); |
630 EXPECT_TRUE(deterministic_data_->at_write_eof()); | 630 EXPECT_TRUE(deterministic_data_->at_write_eof()); |
631 } | 631 } |
632 | 632 |
633 // TODO(willchan): Write a longer test for SpdyStream that exercises all | 633 // TODO(willchan): Write a longer test for SpdyStream that exercises all |
634 // methods. | 634 // methods. |
635 | 635 |
636 } // namespace net | 636 } // namespace net |
OLD | NEW |