| 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/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "net/cert/cert_verifier.h" | 9 #include "net/cert/cert_verifier.h" |
| 10 #include "net/dns/mock_host_resolver.h" | 10 #include "net/dns/mock_host_resolver.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 if (*it == session) | 57 if (*it == session) |
| 58 return true; | 58 return true; |
| 59 } | 59 } |
| 60 return false; | 60 return false; |
| 61 } | 61 } |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 class QuicStreamFactoryTest : public ::testing::Test { | 64 class QuicStreamFactoryTest : public ::testing::Test { |
| 65 protected: | 65 protected: |
| 66 QuicStreamFactoryTest() | 66 QuicStreamFactoryTest() |
| 67 : clock_(new MockClock()), | 67 : random_generator_(0), |
| 68 clock_(new MockClock()), |
| 68 factory_(&host_resolver_, &socket_factory_, | 69 factory_(&host_resolver_, &socket_factory_, |
| 69 base::WeakPtr<HttpServerProperties>(), | 70 base::WeakPtr<HttpServerProperties>(), |
| 70 &crypto_client_stream_factory_, | 71 &crypto_client_stream_factory_, |
| 71 &random_generator_, clock_, kDefaultMaxPacketSize), | 72 &random_generator_, clock_, kDefaultMaxPacketSize), |
| 72 host_port_proxy_pair_(HostPortPair("www.google.com", 443), | 73 host_port_proxy_pair_(HostPortPair("www.google.com", 443), |
| 73 ProxyServer::Direct()), | 74 ProxyServer::Direct()), |
| 74 is_https_(false), | 75 is_https_(false), |
| 75 cert_verifier_(CertVerifier::CreateDefault()) { | 76 cert_verifier_(CertVerifier::CreateDefault()) { |
| 76 factory_.set_require_confirmation(false); | 77 factory_.set_require_confirmation(false); |
| 77 } | 78 } |
| 78 | 79 |
| 79 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket( | 80 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket( |
| 80 QuicPacketSequenceNumber num, | 81 QuicPacketSequenceNumber num, |
| 81 QuicStreamId stream_id) { | 82 QuicStreamId stream_id) { |
| 82 QuicPacketHeader header; | 83 QuicPacketHeader header; |
| 83 header.public_header.guid = 0xDEADBEEF; | 84 header.public_header.guid = random_generator_.RandUint64(); |
| 84 header.public_header.reset_flag = false; | 85 header.public_header.reset_flag = false; |
| 85 header.public_header.version_flag = true; | 86 header.public_header.version_flag = true; |
| 86 header.packet_sequence_number = num; | 87 header.packet_sequence_number = num; |
| 87 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; | 88 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER; |
| 88 header.entropy_flag = false; | 89 header.entropy_flag = false; |
| 89 header.fec_flag = false; | 90 header.fec_flag = false; |
| 90 header.fec_group = 0; | 91 header.fec_group = 0; |
| 91 | 92 |
| 92 QuicRstStreamFrame rst(stream_id, QUIC_STREAM_CANCELLED); | 93 QuicRstStreamFrame rst(stream_id, QUIC_STREAM_CANCELLED); |
| 93 return scoped_ptr<QuicEncryptedPacket>( | 94 return scoped_ptr<QuicEncryptedPacket>( |
| 94 ConstructPacket(header, QuicFrame(&rst))); | 95 ConstructPacket(header, QuicFrame(&rst))); |
| 95 } | 96 } |
| 96 | 97 |
| 97 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket( | 98 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket( |
| 98 QuicPacketSequenceNumber largest_received, | 99 QuicPacketSequenceNumber largest_received, |
| 99 QuicPacketSequenceNumber least_unacked) { | 100 QuicPacketSequenceNumber least_unacked) { |
| 100 QuicPacketHeader header; | 101 QuicPacketHeader header; |
| 101 header.public_header.guid = 0xDEADBEEF; | 102 header.public_header.guid = random_generator_.RandUint64(); |
| 102 header.public_header.reset_flag = false; | 103 header.public_header.reset_flag = false; |
| 103 header.public_header.version_flag = false; | 104 header.public_header.version_flag = false; |
| 104 header.packet_sequence_number = 2; | 105 header.packet_sequence_number = 2; |
| 105 header.entropy_flag = false; | 106 header.entropy_flag = false; |
| 106 header.fec_flag = false; | 107 header.fec_flag = false; |
| 107 header.fec_group = 0; | 108 header.fec_group = 0; |
| 108 | 109 |
| 109 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); | 110 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked); |
| 110 QuicCongestionFeedbackFrame feedback; | 111 QuicCongestionFeedbackFrame feedback; |
| 111 feedback.type = kTCP; | 112 feedback.type = kTCP; |
| 112 feedback.tcp.accumulated_number_of_lost_packets = 0; | 113 feedback.tcp.accumulated_number_of_lost_packets = 0; |
| 113 feedback.tcp.receive_window = 16000; | 114 feedback.tcp.receive_window = 16000; |
| 114 | 115 |
| 115 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false); | 116 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false); |
| 116 QuicFrames frames; | 117 QuicFrames frames; |
| 117 frames.push_back(QuicFrame(&ack)); | 118 frames.push_back(QuicFrame(&ack)); |
| 118 frames.push_back(QuicFrame(&feedback)); | 119 frames.push_back(QuicFrame(&feedback)); |
| 119 scoped_ptr<QuicPacket> packet( | 120 scoped_ptr<QuicPacket> packet( |
| 120 framer.BuildUnsizedDataPacket(header, frames).packet); | 121 framer.BuildUnsizedDataPacket(header, frames).packet); |
| 121 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( | 122 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket( |
| 122 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); | 123 ENCRYPTION_NONE, header.packet_sequence_number, *packet)); |
| 123 } | 124 } |
| 124 | 125 |
| 125 // Returns a newly created packet to send congestion feedback data. | 126 // Returns a newly created packet to send congestion feedback data. |
| 126 scoped_ptr<QuicEncryptedPacket> ConstructFeedbackPacket( | 127 scoped_ptr<QuicEncryptedPacket> ConstructFeedbackPacket( |
| 127 QuicPacketSequenceNumber sequence_number) { | 128 QuicPacketSequenceNumber sequence_number) { |
| 128 QuicPacketHeader header; | 129 QuicPacketHeader header; |
| 129 header.public_header.guid = 0xDEADBEEF; | 130 header.public_header.guid = random_generator_.RandUint64(); |
| 130 header.public_header.reset_flag = false; | 131 header.public_header.reset_flag = false; |
| 131 header.public_header.version_flag = false; | 132 header.public_header.version_flag = false; |
| 132 header.packet_sequence_number = sequence_number; | 133 header.packet_sequence_number = sequence_number; |
| 133 header.entropy_flag = false; | 134 header.entropy_flag = false; |
| 134 header.fec_flag = false; | 135 header.fec_flag = false; |
| 135 header.fec_group = 0; | 136 header.fec_group = 0; |
| 136 | 137 |
| 137 QuicCongestionFeedbackFrame frame; | 138 QuicCongestionFeedbackFrame frame; |
| 138 frame.type = kTCP; | 139 frame.type = kTCP; |
| 139 frame.tcp.accumulated_number_of_lost_packets = 0; | 140 frame.tcp.accumulated_number_of_lost_packets = 0; |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 642 QuicCryptoClientConfig::CachedState* cached2 = | 643 QuicCryptoClientConfig::CachedState* cached2 = |
| 643 crypto_config2->LookupOrCreate(host_port_proxy_pair2.first.host()); | 644 crypto_config2->LookupOrCreate(host_port_proxy_pair2.first.host()); |
| 644 EXPECT_NE(cached1->source_address_token(), cached2->source_address_token()); | 645 EXPECT_NE(cached1->source_address_token(), cached2->source_address_token()); |
| 645 EXPECT_TRUE(cached2->source_address_token().empty()); | 646 EXPECT_TRUE(cached2->source_address_token().empty()); |
| 646 EXPECT_FALSE(cached2->proof_valid()); | 647 EXPECT_FALSE(cached2->proof_valid()); |
| 647 } | 648 } |
| 648 } | 649 } |
| 649 | 650 |
| 650 } // namespace test | 651 } // namespace test |
| 651 } // namespace net | 652 } // namespace net |
| OLD | NEW |