OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/bidirectional_stream_quic_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
13 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
16 #include "net/http/bidirectional_stream_request_info.h" | 16 #include "net/http/bidirectional_stream_request_info.h" |
17 #include "net/http/transport_security_state.h" | 17 #include "net/http/transport_security_state.h" |
18 #include "net/log/test_net_log.h" | |
19 #include "net/log/test_net_log_util.h" | |
18 #include "net/quic/crypto/crypto_protocol.h" | 20 #include "net/quic/crypto/crypto_protocol.h" |
19 #include "net/quic/crypto/quic_decrypter.h" | 21 #include "net/quic/crypto/quic_decrypter.h" |
20 #include "net/quic/crypto/quic_encrypter.h" | 22 #include "net/quic/crypto/quic_encrypter.h" |
21 #include "net/quic/crypto/quic_server_info.h" | 23 #include "net/quic/crypto/quic_server_info.h" |
22 #include "net/quic/quic_chromium_client_session.h" | 24 #include "net/quic/quic_chromium_client_session.h" |
23 #include "net/quic/quic_chromium_client_stream.h" | 25 #include "net/quic/quic_chromium_client_stream.h" |
24 #include "net/quic/quic_chromium_connection_helper.h" | 26 #include "net/quic/quic_chromium_connection_helper.h" |
25 #include "net/quic/quic_chromium_packet_reader.h" | 27 #include "net/quic/quic_chromium_packet_reader.h" |
26 #include "net/quic/quic_chromium_packet_writer.h" | 28 #include "net/quic/quic_chromium_packet_writer.h" |
27 #include "net/quic/quic_connection.h" | 29 #include "net/quic/quic_connection.h" |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
265 struct PacketToWrite { | 267 struct PacketToWrite { |
266 PacketToWrite(IoMode mode, QuicEncryptedPacket* packet) | 268 PacketToWrite(IoMode mode, QuicEncryptedPacket* packet) |
267 : mode(mode), packet(packet) {} | 269 : mode(mode), packet(packet) {} |
268 PacketToWrite(IoMode mode, int rv) : mode(mode), packet(nullptr), rv(rv) {} | 270 PacketToWrite(IoMode mode, int rv) : mode(mode), packet(nullptr), rv(rv) {} |
269 IoMode mode; | 271 IoMode mode; |
270 QuicEncryptedPacket* packet; | 272 QuicEncryptedPacket* packet; |
271 int rv; | 273 int rv; |
272 }; | 274 }; |
273 | 275 |
274 BidirectionalStreamQuicImplTest() | 276 BidirectionalStreamQuicImplTest() |
275 : net_log_(BoundNetLog()), | 277 : crypto_config_(CryptoTestUtils::ProofVerifierForTesting()), |
276 crypto_config_(CryptoTestUtils::ProofVerifierForTesting()), | |
277 read_buffer_(new IOBufferWithSize(4096)), | 278 read_buffer_(new IOBufferWithSize(4096)), |
278 connection_id_(2), | 279 connection_id_(2), |
279 stream_id_(kClientDataStreamId1), | 280 stream_id_(kClientDataStreamId1), |
280 maker_(GetParam(), connection_id_, &clock_, kDefaultServerHostName), | 281 maker_(GetParam(), connection_id_, &clock_, kDefaultServerHostName), |
281 random_generator_(0) { | 282 random_generator_(0) { |
282 IPAddressNumber ip; | 283 IPAddressNumber ip; |
283 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); | 284 CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip)); |
284 peer_addr_ = IPEndPoint(ip, 443); | 285 peer_addr_ = IPEndPoint(ip, 443); |
285 self_addr_ = IPEndPoint(ip, 8435); | 286 self_addr_ = IPEndPoint(ip, 8435); |
286 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); | 287 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); |
(...skipping 28 matching lines...) Expand all Loading... | |
315 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].rv, i); | 316 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].rv, i); |
316 } else { | 317 } else { |
317 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].packet->data(), | 318 mock_writes_[i] = MockWrite(writes_[i].mode, writes_[i].packet->data(), |
318 writes_[i].packet->length()); | 319 writes_[i].packet->length()); |
319 } | 320 } |
320 }; | 321 }; |
321 | 322 |
322 socket_data_.reset(new StaticSocketDataProvider( | 323 socket_data_.reset(new StaticSocketDataProvider( |
323 nullptr, 0, mock_writes_.get(), writes_.size())); | 324 nullptr, 0, mock_writes_.get(), writes_.size())); |
324 | 325 |
325 MockUDPClientSocket* socket = | 326 MockUDPClientSocket* socket = new MockUDPClientSocket( |
mmenke
2016/03/23 20:32:21
Not realted to this CL, but this should be a scope
xunjieli
2016/03/23 22:19:23
You are right. I copied from quic_http_stream_test
| |
326 new MockUDPClientSocket(socket_data_.get(), net_log_.net_log()); | 327 socket_data_.get(), net_log().bound().net_log()); |
327 socket->Connect(peer_addr_); | 328 socket->Connect(peer_addr_); |
328 runner_ = new TestTaskRunner(&clock_); | 329 runner_ = new TestTaskRunner(&clock_); |
329 helper_.reset(new QuicChromiumConnectionHelper(runner_.get(), &clock_, | 330 helper_.reset(new QuicChromiumConnectionHelper(runner_.get(), &clock_, |
330 &random_generator_)); | 331 &random_generator_)); |
331 connection_ = new QuicConnection( | 332 connection_ = new QuicConnection( |
332 connection_id_, peer_addr_, helper_.get(), | 333 connection_id_, peer_addr_, helper_.get(), |
333 new QuicChromiumPacketWriter(socket), true /* owns_writer */, | 334 new QuicChromiumPacketWriter(socket), true /* owns_writer */, |
334 Perspective::IS_CLIENT, SupportedVersions(GetParam())); | 335 Perspective::IS_CLIENT, SupportedVersions(GetParam())); |
335 | 336 |
336 session_.reset(new QuicChromiumClientSession( | 337 session_.reset(new QuicChromiumClientSession( |
337 connection_, scoped_ptr<DatagramClientSocket>(socket), | 338 connection_, scoped_ptr<DatagramClientSocket>(socket), |
338 /*stream_factory=*/nullptr, &crypto_client_stream_factory_, &clock_, | 339 /*stream_factory=*/nullptr, &crypto_client_stream_factory_, &clock_, |
339 &transport_security_state_, make_scoped_ptr((QuicServerInfo*)nullptr), | 340 &transport_security_state_, make_scoped_ptr((QuicServerInfo*)nullptr), |
340 QuicServerId(kDefaultServerHostName, kDefaultServerPort, | 341 QuicServerId(kDefaultServerHostName, kDefaultServerPort, |
341 PRIVACY_MODE_DISABLED), | 342 PRIVACY_MODE_DISABLED), |
342 kQuicYieldAfterPacketsRead, | 343 kQuicYieldAfterPacketsRead, |
343 QuicTime::Delta::FromMilliseconds(kQuicYieldAfterDurationMilliseconds), | 344 QuicTime::Delta::FromMilliseconds(kQuicYieldAfterDurationMilliseconds), |
344 /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_, | 345 /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_, |
345 "CONNECTION_UNKNOWN", base::TimeTicks::Now(), &push_promise_index_, | 346 "CONNECTION_UNKNOWN", base::TimeTicks::Now(), &push_promise_index_, |
346 base::ThreadTaskRunnerHandle::Get().get(), | 347 base::ThreadTaskRunnerHandle::Get().get(), |
347 /*socket_performance_watcher=*/nullptr, nullptr)); | 348 /*socket_performance_watcher=*/nullptr, net_log().bound().net_log())); |
348 session_->Initialize(); | 349 session_->Initialize(); |
349 session_->GetCryptoStream()->CryptoConnect(); | 350 session_->GetCryptoStream()->CryptoConnect(); |
350 EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); | 351 EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); |
351 } | 352 } |
352 | 353 |
353 void SetRequest(const std::string& method, | 354 void SetRequest(const std::string& method, |
354 const std::string& path, | 355 const std::string& path, |
355 RequestPriority priority) { | 356 RequestPriority priority) { |
356 request_headers_ = maker_.GetRequestHeaders(method, "http", path); | 357 request_headers_ = maker_.GetRequestHeaders(method, "http", path); |
357 } | 358 } |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
451 } | 452 } |
452 | 453 |
453 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket( | 454 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket( |
454 QuicPacketNumber packet_number, | 455 QuicPacketNumber packet_number, |
455 QuicPacketNumber largest_received, | 456 QuicPacketNumber largest_received, |
456 QuicPacketNumber least_unacked) { | 457 QuicPacketNumber least_unacked) { |
457 return maker_.MakeAckPacket(packet_number, largest_received, least_unacked, | 458 return maker_.MakeAckPacket(packet_number, largest_received, least_unacked, |
458 !kIncludeCongestionFeedback); | 459 !kIncludeCongestionFeedback); |
459 } | 460 } |
460 | 461 |
461 const BoundNetLog& net_log() const { return net_log_; } | 462 const BoundTestNetLog& net_log() const { return net_log_; } |
mmenke
2016/03/23 20:32:21
This should be a TestNetLog
BoundTestNetLog is fo
mmenke
2016/03/23 22:11:59
Oops...intended to delete this comment - looks lik
xunjieli
2016/03/23 22:19:23
Acknowledged.
| |
462 | 463 |
463 QuicChromiumClientSession* session() const { return session_.get(); } | 464 QuicChromiumClientSession* session() const { return session_.get(); } |
464 | 465 |
465 private: | 466 private: |
466 BoundNetLog net_log_; | 467 BoundTestNetLog net_log_; |
467 scoped_refptr<TestTaskRunner> runner_; | 468 scoped_refptr<TestTaskRunner> runner_; |
468 scoped_ptr<MockWrite[]> mock_writes_; | 469 scoped_ptr<MockWrite[]> mock_writes_; |
469 MockClock clock_; | 470 MockClock clock_; |
470 QuicConnection* connection_; | 471 QuicConnection* connection_; |
471 scoped_ptr<QuicChromiumConnectionHelper> helper_; | 472 scoped_ptr<QuicChromiumConnectionHelper> helper_; |
472 TransportSecurityState transport_security_state_; | 473 TransportSecurityState transport_security_state_; |
473 scoped_ptr<QuicChromiumClientSession> session_; | 474 scoped_ptr<QuicChromiumClientSession> session_; |
474 QuicCryptoClientConfig crypto_config_; | 475 QuicCryptoClientConfig crypto_config_; |
475 HttpRequestHeaders headers_; | 476 HttpRequestHeaders headers_; |
476 HttpResponseInfo response_; | 477 HttpResponseInfo response_; |
(...skipping 26 matching lines...) Expand all Loading... | |
503 | 504 |
504 BidirectionalStreamRequestInfo request; | 505 BidirectionalStreamRequestInfo request; |
505 request.method = "GET"; | 506 request.method = "GET"; |
506 request.url = GURL("http://www.google.com/"); | 507 request.url = GURL("http://www.google.com/"); |
507 request.end_stream_on_headers = true; | 508 request.end_stream_on_headers = true; |
508 request.priority = DEFAULT_PRIORITY; | 509 request.priority = DEFAULT_PRIORITY; |
509 | 510 |
510 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 511 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
511 scoped_ptr<TestDelegateBase> delegate( | 512 scoped_ptr<TestDelegateBase> delegate( |
512 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 513 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
513 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 514 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
514 delegate->WaitUntilNextCallback(); // OnHeadersSent | 515 delegate->WaitUntilNextCallback(); // OnHeadersSent |
515 | 516 |
516 // Server acks the request. | 517 // Server acks the request. |
517 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 518 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
518 | 519 |
519 // Server sends the response headers. | 520 // Server sends the response headers. |
520 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 521 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
521 | 522 |
522 size_t spdy_response_headers_frame_length; | 523 size_t spdy_response_headers_frame_length; |
523 QuicStreamOffset offset = 0; | 524 QuicStreamOffset offset = 0; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
558 | 559 |
559 EXPECT_EQ(2, delegate->on_data_read_count()); | 560 EXPECT_EQ(2, delegate->on_data_read_count()); |
560 EXPECT_EQ(0, delegate->on_data_sent_count()); | 561 EXPECT_EQ(0, delegate->on_data_sent_count()); |
561 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 562 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
562 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 563 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
563 delegate->GetTotalSentBytes()); | 564 delegate->GetTotalSentBytes()); |
564 EXPECT_EQ( | 565 EXPECT_EQ( |
565 static_cast<int64_t>(spdy_response_headers_frame_length + | 566 static_cast<int64_t>(spdy_response_headers_frame_length + |
566 strlen(kResponseBody) + spdy_trailers_frame_length), | 567 strlen(kResponseBody) + spdy_trailers_frame_length), |
567 delegate->GetTotalReceivedBytes()); | 568 delegate->GetTotalReceivedBytes()); |
569 // Check that NetLog was filled as expected. | |
570 TestNetLogEntry::List entries; | |
571 net_log().GetEntries(&entries); | |
572 size_t pos = ExpectLogContainsSomewhere( | |
573 entries, /*min_offset=*/0, | |
574 NetLog::TYPE_QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, | |
575 NetLog::PHASE_NONE); | |
576 pos = ExpectLogContainsSomewhere( | |
577 entries, /*min_offset=*/pos, | |
578 NetLog::TYPE_QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, | |
579 NetLog::PHASE_NONE); | |
580 ExpectLogContainsSomewhere( | |
581 entries, /*min_offset=*/pos, | |
582 NetLog::TYPE_QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, | |
583 NetLog::PHASE_NONE); | |
568 } | 584 } |
569 | 585 |
570 TEST_P(BidirectionalStreamQuicImplTest, PostRequest) { | 586 TEST_P(BidirectionalStreamQuicImplTest, PostRequest) { |
571 SetRequest("POST", "/", DEFAULT_PRIORITY); | 587 SetRequest("POST", "/", DEFAULT_PRIORITY); |
572 size_t spdy_request_headers_frame_length; | 588 size_t spdy_request_headers_frame_length; |
573 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, | 589 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY, |
574 &spdy_request_headers_frame_length)); | 590 &spdy_request_headers_frame_length)); |
575 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); | 591 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); |
576 AddWrite(ConstructAckPacket(3, 3, 1)); | 592 AddWrite(ConstructAckPacket(3, 3, 1)); |
577 | 593 |
578 Initialize(); | 594 Initialize(); |
579 | 595 |
580 BidirectionalStreamRequestInfo request; | 596 BidirectionalStreamRequestInfo request; |
581 request.method = "POST"; | 597 request.method = "POST"; |
582 request.url = GURL("http://www.google.com/"); | 598 request.url = GURL("http://www.google.com/"); |
583 request.end_stream_on_headers = false; | 599 request.end_stream_on_headers = false; |
584 request.priority = DEFAULT_PRIORITY; | 600 request.priority = DEFAULT_PRIORITY; |
585 | 601 |
586 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 602 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
587 scoped_ptr<TestDelegateBase> delegate( | 603 scoped_ptr<TestDelegateBase> delegate( |
588 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 604 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
589 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 605 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
590 delegate->WaitUntilNextCallback(); // OnHeadersSent | 606 delegate->WaitUntilNextCallback(); // OnHeadersSent |
591 | 607 |
592 // Send a DATA frame. | 608 // Send a DATA frame. |
593 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); | 609 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); |
594 | 610 |
595 delegate->SendData(buf.get(), buf->size(), true); | 611 delegate->SendData(buf.get(), buf->size(), true); |
596 delegate->WaitUntilNextCallback(); // OnDataSent | 612 delegate->WaitUntilNextCallback(); // OnDataSent |
597 | 613 |
598 // Server acks the request. | 614 // Server acks the request. |
599 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 615 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
656 | 672 |
657 BidirectionalStreamRequestInfo request; | 673 BidirectionalStreamRequestInfo request; |
658 request.method = "POST"; | 674 request.method = "POST"; |
659 request.url = GURL("http://www.google.com/"); | 675 request.url = GURL("http://www.google.com/"); |
660 request.end_stream_on_headers = false; | 676 request.end_stream_on_headers = false; |
661 request.priority = DEFAULT_PRIORITY; | 677 request.priority = DEFAULT_PRIORITY; |
662 | 678 |
663 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 679 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
664 scoped_ptr<TestDelegateBase> delegate( | 680 scoped_ptr<TestDelegateBase> delegate( |
665 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 681 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
666 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 682 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
667 delegate->WaitUntilNextCallback(); // OnHeadersSent | 683 delegate->WaitUntilNextCallback(); // OnHeadersSent |
668 | 684 |
669 // Server acks the request. | 685 // Server acks the request. |
670 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 686 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
671 | 687 |
672 // Server sends the response headers. | 688 // Server sends the response headers. |
673 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 689 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
674 size_t spdy_response_headers_frame_length; | 690 size_t spdy_response_headers_frame_length; |
675 ProcessPacket(ConstructResponseHeadersPacket( | 691 ProcessPacket(ConstructResponseHeadersPacket( |
676 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 692 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
733 | 749 |
734 BidirectionalStreamRequestInfo request; | 750 BidirectionalStreamRequestInfo request; |
735 request.method = "GET"; | 751 request.method = "GET"; |
736 request.url = GURL("http://www.google.com/"); | 752 request.url = GURL("http://www.google.com/"); |
737 request.end_stream_on_headers = true; | 753 request.end_stream_on_headers = true; |
738 request.priority = DEFAULT_PRIORITY; | 754 request.priority = DEFAULT_PRIORITY; |
739 | 755 |
740 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 756 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
741 scoped_ptr<TestDelegateBase> delegate( | 757 scoped_ptr<TestDelegateBase> delegate( |
742 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 758 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
743 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 759 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
744 delegate->WaitUntilNextCallback(); // OnHeadersSent | 760 delegate->WaitUntilNextCallback(); // OnHeadersSent |
745 | 761 |
746 // Server sends a Rst. | 762 // Server sends a Rst. |
747 ProcessPacket(ConstructRstStreamPacket(1)); | 763 ProcessPacket(ConstructRstStreamPacket(1)); |
748 | 764 |
749 delegate->WaitUntilNextCallback(); // OnFailed | 765 delegate->WaitUntilNextCallback(); // OnFailed |
750 TestCompletionCallback cb; | 766 TestCompletionCallback cb; |
751 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); | 767 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); |
752 | 768 |
753 base::MessageLoop::current()->RunUntilIdle(); | 769 base::MessageLoop::current()->RunUntilIdle(); |
(...skipping 18 matching lines...) Expand all Loading... | |
772 | 788 |
773 BidirectionalStreamRequestInfo request; | 789 BidirectionalStreamRequestInfo request; |
774 request.method = "GET"; | 790 request.method = "GET"; |
775 request.url = GURL("http://www.google.com/"); | 791 request.url = GURL("http://www.google.com/"); |
776 request.end_stream_on_headers = true; | 792 request.end_stream_on_headers = true; |
777 request.priority = DEFAULT_PRIORITY; | 793 request.priority = DEFAULT_PRIORITY; |
778 | 794 |
779 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 795 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
780 scoped_ptr<TestDelegateBase> delegate( | 796 scoped_ptr<TestDelegateBase> delegate( |
781 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 797 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
782 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 798 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
783 delegate->WaitUntilNextCallback(); // OnHeadersSent | 799 delegate->WaitUntilNextCallback(); // OnHeadersSent |
784 | 800 |
785 // Server acks the request. | 801 // Server acks the request. |
786 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 802 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
787 | 803 |
788 // Server sends the response headers. | 804 // Server sends the response headers. |
789 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 805 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
790 | 806 |
791 size_t spdy_response_headers_frame_length; | 807 size_t spdy_response_headers_frame_length; |
792 QuicStreamOffset offset = 0; | 808 QuicStreamOffset offset = 0; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
829 | 845 |
830 BidirectionalStreamRequestInfo request; | 846 BidirectionalStreamRequestInfo request; |
831 request.method = "POST"; | 847 request.method = "POST"; |
832 request.url = GURL("http://www.google.com/"); | 848 request.url = GURL("http://www.google.com/"); |
833 request.end_stream_on_headers = false; | 849 request.end_stream_on_headers = false; |
834 request.priority = DEFAULT_PRIORITY; | 850 request.priority = DEFAULT_PRIORITY; |
835 | 851 |
836 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 852 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
837 scoped_ptr<TestDelegateBase> delegate( | 853 scoped_ptr<TestDelegateBase> delegate( |
838 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 854 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
839 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 855 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
840 delegate->WaitUntilNextCallback(); // OnHeadersSent | 856 delegate->WaitUntilNextCallback(); // OnHeadersSent |
841 | 857 |
842 // Server acks the request. | 858 // Server acks the request. |
843 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 859 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
844 | 860 |
845 // Server sends the response headers. | 861 // Server sends the response headers. |
846 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 862 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
847 size_t spdy_response_headers_frame_length; | 863 size_t spdy_response_headers_frame_length; |
848 ProcessPacket(ConstructResponseHeadersPacket( | 864 ProcessPacket(ConstructResponseHeadersPacket( |
849 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 865 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); |
(...skipping 29 matching lines...) Expand all Loading... | |
879 | 895 |
880 BidirectionalStreamRequestInfo request; | 896 BidirectionalStreamRequestInfo request; |
881 request.method = "GET"; | 897 request.method = "GET"; |
882 request.url = GURL("http://www.google.com/"); | 898 request.url = GURL("http://www.google.com/"); |
883 request.end_stream_on_headers = true; | 899 request.end_stream_on_headers = true; |
884 request.priority = DEFAULT_PRIORITY; | 900 request.priority = DEFAULT_PRIORITY; |
885 | 901 |
886 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 902 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
887 scoped_ptr<TestDelegateBase> delegate( | 903 scoped_ptr<TestDelegateBase> delegate( |
888 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 904 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
889 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 905 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
890 delegate->WaitUntilNextCallback(); // OnHeadersSent | 906 delegate->WaitUntilNextCallback(); // OnHeadersSent |
891 | 907 |
892 // Server acks the request. | 908 // Server acks the request. |
893 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 909 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
894 | 910 |
895 // Server sends the response headers. | 911 // Server sends the response headers. |
896 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 912 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
897 | 913 |
898 size_t spdy_response_headers_frame_length; | 914 size_t spdy_response_headers_frame_length; |
899 QuicStreamOffset offset = 0; | 915 QuicStreamOffset offset = 0; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
933 | 949 |
934 BidirectionalStreamRequestInfo request; | 950 BidirectionalStreamRequestInfo request; |
935 request.method = "POST"; | 951 request.method = "POST"; |
936 request.url = GURL("http://www.google.com/"); | 952 request.url = GURL("http://www.google.com/"); |
937 request.end_stream_on_headers = false; | 953 request.end_stream_on_headers = false; |
938 request.priority = DEFAULT_PRIORITY; | 954 request.priority = DEFAULT_PRIORITY; |
939 | 955 |
940 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 956 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
941 scoped_ptr<TestDelegateBase> delegate( | 957 scoped_ptr<TestDelegateBase> delegate( |
942 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 958 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
943 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 959 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
944 delegate->WaitUntilNextCallback(); // OnHeadersSent | 960 delegate->WaitUntilNextCallback(); // OnHeadersSent |
945 | 961 |
946 // Server acks the request. | 962 // Server acks the request. |
947 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 963 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
948 | 964 |
949 // Server sends the response headers. | 965 // Server sends the response headers. |
950 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 966 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
951 size_t spdy_response_headers_frame_length; | 967 size_t spdy_response_headers_frame_length; |
952 ProcessPacket(ConstructResponseHeadersPacket( | 968 ProcessPacket(ConstructResponseHeadersPacket( |
953 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); | 969 2, !kFin, response_headers, &spdy_response_headers_frame_length, 0)); |
(...skipping 29 matching lines...) Expand all Loading... | |
983 BidirectionalStreamRequestInfo request; | 999 BidirectionalStreamRequestInfo request; |
984 request.method = "POST"; | 1000 request.method = "POST"; |
985 request.url = GURL("http://www.google.com/"); | 1001 request.url = GURL("http://www.google.com/"); |
986 request.end_stream_on_headers = false; | 1002 request.end_stream_on_headers = false; |
987 request.priority = DEFAULT_PRIORITY; | 1003 request.priority = DEFAULT_PRIORITY; |
988 | 1004 |
989 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1005 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
990 scoped_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( | 1006 scoped_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( |
991 read_buffer.get(), kReadBufferSize, | 1007 read_buffer.get(), kReadBufferSize, |
992 DeleteStreamDelegate::ON_HEADERS_RECEIVED, true)); | 1008 DeleteStreamDelegate::ON_HEADERS_RECEIVED, true)); |
993 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 1009 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
994 delegate->WaitUntilNextCallback(); // OnHeadersSent | 1010 delegate->WaitUntilNextCallback(); // OnHeadersSent |
995 | 1011 |
996 // Server acks the request. | 1012 // Server acks the request. |
997 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 1013 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
998 | 1014 |
999 // Server sends the response headers. | 1015 // Server sends the response headers. |
1000 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1016 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
1001 | 1017 |
1002 size_t spdy_response_headers_frame_length; | 1018 size_t spdy_response_headers_frame_length; |
1003 ProcessPacket(ConstructResponseHeadersPacket( | 1019 ProcessPacket(ConstructResponseHeadersPacket( |
(...skipping 22 matching lines...) Expand all Loading... | |
1026 BidirectionalStreamRequestInfo request; | 1042 BidirectionalStreamRequestInfo request; |
1027 request.method = "POST"; | 1043 request.method = "POST"; |
1028 request.url = GURL("http://www.google.com/"); | 1044 request.url = GURL("http://www.google.com/"); |
1029 request.end_stream_on_headers = false; | 1045 request.end_stream_on_headers = false; |
1030 request.priority = DEFAULT_PRIORITY; | 1046 request.priority = DEFAULT_PRIORITY; |
1031 | 1047 |
1032 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1048 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
1033 scoped_ptr<DeleteStreamDelegate> delegate( | 1049 scoped_ptr<DeleteStreamDelegate> delegate( |
1034 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, | 1050 new DeleteStreamDelegate(read_buffer.get(), kReadBufferSize, |
1035 DeleteStreamDelegate::ON_DATA_READ, true)); | 1051 DeleteStreamDelegate::ON_DATA_READ, true)); |
1036 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 1052 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
1037 delegate->WaitUntilNextCallback(); // OnHeadersSent | 1053 delegate->WaitUntilNextCallback(); // OnHeadersSent |
1038 | 1054 |
1039 // Server acks the request. | 1055 // Server acks the request. |
1040 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 1056 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
1041 | 1057 |
1042 // Server sends the response headers. | 1058 // Server sends the response headers. |
1043 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1059 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
1044 | 1060 |
1045 size_t spdy_response_headers_frame_length; | 1061 size_t spdy_response_headers_frame_length; |
1046 ProcessPacket(ConstructResponseHeadersPacket( | 1062 ProcessPacket(ConstructResponseHeadersPacket( |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1078 BidirectionalStreamRequestInfo request; | 1094 BidirectionalStreamRequestInfo request; |
1079 request.method = "GET"; | 1095 request.method = "GET"; |
1080 request.url = GURL("http://www.google.com/"); | 1096 request.url = GURL("http://www.google.com/"); |
1081 request.end_stream_on_headers = true; | 1097 request.end_stream_on_headers = true; |
1082 request.priority = DEFAULT_PRIORITY; | 1098 request.priority = DEFAULT_PRIORITY; |
1083 | 1099 |
1084 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1100 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
1085 scoped_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( | 1101 scoped_ptr<DeleteStreamDelegate> delegate(new DeleteStreamDelegate( |
1086 read_buffer.get(), kReadBufferSize, | 1102 read_buffer.get(), kReadBufferSize, |
1087 DeleteStreamDelegate::ON_TRAILERS_RECEIVED, true)); | 1103 DeleteStreamDelegate::ON_TRAILERS_RECEIVED, true)); |
1088 delegate->Start(&request, net_log(), session()->GetWeakPtr()); | 1104 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
1089 delegate->WaitUntilNextCallback(); // OnHeadersSent | 1105 delegate->WaitUntilNextCallback(); // OnHeadersSent |
1090 | 1106 |
1091 // Server acks the request. | 1107 // Server acks the request. |
1092 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 1108 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
1093 | 1109 |
1094 // Server sends the response headers. | 1110 // Server sends the response headers. |
1095 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1111 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
1096 | 1112 |
1097 QuicStreamOffset offset = 0; | 1113 QuicStreamOffset offset = 0; |
1098 size_t spdy_response_headers_frame_length; | 1114 size_t spdy_response_headers_frame_length; |
(...skipping 30 matching lines...) Expand all Loading... | |
1129 | 1145 |
1130 base::MessageLoop::current()->RunUntilIdle(); | 1146 base::MessageLoop::current()->RunUntilIdle(); |
1131 | 1147 |
1132 EXPECT_EQ(1, delegate->on_data_read_count()); | 1148 EXPECT_EQ(1, delegate->on_data_read_count()); |
1133 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1149 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1134 } | 1150 } |
1135 | 1151 |
1136 } // namespace test | 1152 } // namespace test |
1137 | 1153 |
1138 } // namespace net | 1154 } // namespace net |
OLD | NEW |