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 |