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

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

Issue 14816006: Land Recent QUIC changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added missing NET_PRIVATE_EXPORT to QuicWallTime Created 7 years, 7 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 | « net/quic/quic_crypto_server_stream.cc ('k') | net/quic/quic_crypto_stream.h » ('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_crypto_server_stream.h" 5 #include "net/quic/quic_crypto_server_stream.h"
6 6
7 #include <map> 7 #include <map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 } 47 }
48 48
49 QuicStreamFrame* frame() { return &frame_; } 49 QuicStreamFrame* frame() { return &frame_; }
50 50
51 private: 51 private:
52 QuicStreamFrame frame_; 52 QuicStreamFrame frame_;
53 53
54 DISALLOW_COPY_AND_ASSIGN(TestQuicVisitor); 54 DISALLOW_COPY_AND_ASSIGN(TestQuicVisitor);
55 }; 55 };
56 56
57 class TestSession: public QuicSession {
58 public:
59 TestSession(QuicConnection* connection, bool is_server)
60 : QuicSession(connection, is_server) {
61 }
62
63 MOCK_METHOD1(CreateIncomingReliableStream,
64 ReliableQuicStream*(QuicStreamId id));
65 MOCK_METHOD0(GetCryptoStream, QuicCryptoStream*());
66 MOCK_METHOD0(CreateOutgoingReliableStream, ReliableQuicStream*());
67 };
68
69 class QuicCryptoServerStreamTest : public ::testing::Test { 57 class QuicCryptoServerStreamTest : public ::testing::Test {
70 public: 58 public:
71 QuicCryptoServerStreamTest() 59 QuicCryptoServerStreamTest()
72 : guid_(1), 60 : guid_(1),
73 addr_(ParseIPLiteralToNumber("192.0.2.33", &ip_) ? 61 addr_(ParseIPLiteralToNumber("192.0.2.33", &ip_) ?
74 ip_ : IPAddressNumber(), 1), 62 ip_ : IPAddressNumber(), 1),
75 connection_(new PacketSavingConnection(guid_, addr_, true)), 63 connection_(new PacketSavingConnection(guid_, addr_, true)),
76 session_(connection_, true), 64 session_(connection_, true),
77 crypto_config_(QuicCryptoServerConfig::TESTING), 65 crypto_config_(QuicCryptoServerConfig::TESTING),
78 stream_(config_, crypto_config_, &session_) { 66 stream_(config_, crypto_config_, &session_) {
67 session_.SetCryptoStream(&stream_);
79 // We advance the clock initially because the default time is zero and the 68 // We advance the clock initially because the default time is zero and the
80 // strike register worries that we've just overflowed a uint32 time. 69 // strike register worries that we've just overflowed a uint32 time.
81 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(100000)); 70 connection_->AdvanceTime(QuicTime::Delta::FromSeconds(100000));
82 // TODO(rtenneti): Enable testing of ProofSource. 71 // TODO(rtenneti): Enable testing of ProofSource.
83 // crypto_config_.SetProofSource(CryptoTestUtils::ProofSourceForTesting()); 72 // crypto_config_.SetProofSource(CryptoTestUtils::ProofSourceForTesting());
84 73
85 CryptoTestUtils::SetupCryptoServerConfigForTest( 74 CryptoTestUtils::SetupCryptoServerConfigForTest(
86 connection_->clock(), connection_->random_generator(), &config_, 75 connection_->clock(), connection_->random_generator(), &config_,
87 &crypto_config_); 76 &crypto_config_);
88 } 77 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 } 134 }
146 135
147 QuicGuid guid(1); 136 QuicGuid guid(1);
148 IPAddressNumber ip; 137 IPAddressNumber ip;
149 ParseIPLiteralToNumber("127.0.0.1", &ip); 138 ParseIPLiteralToNumber("127.0.0.1", &ip);
150 IPEndPoint addr(ip, 0); 139 IPEndPoint addr(ip, 0);
151 PacketSavingConnection* client_conn = 140 PacketSavingConnection* client_conn =
152 new PacketSavingConnection(guid, addr, false); 141 new PacketSavingConnection(guid, addr, false);
153 PacketSavingConnection* server_conn = 142 PacketSavingConnection* server_conn =
154 new PacketSavingConnection(guid, addr, false); 143 new PacketSavingConnection(guid, addr, false);
155 client_conn->AdvanceTime(QuicTime::Delta::FromSeconds(1000000)); 144 client_conn->AdvanceTime(QuicTime::Delta::FromSeconds(100000));
156 server_conn->AdvanceTime(QuicTime::Delta::FromSeconds(1000000)); 145 server_conn->AdvanceTime(QuicTime::Delta::FromSeconds(100000));
157 146
158 scoped_ptr<TestSession> client_session(new TestSession(client_conn, true)); 147 scoped_ptr<TestSession> client_session(new TestSession(client_conn, true));
159 scoped_ptr<TestSession> server_session(new TestSession(server_conn, true)); 148 scoped_ptr<TestSession> server_session(new TestSession(server_conn, true));
160 149
161 QuicConfig client_config; 150 QuicConfig client_config;
162 QuicCryptoClientConfig client_crypto_config; 151 QuicCryptoClientConfig client_crypto_config;
163 152
164 client_config.SetDefaults(); 153 client_config.SetDefaults();
165 client_crypto_config.SetDefaults(); 154 client_crypto_config.SetDefaults();
166 155
167 scoped_ptr<QuicCryptoClientStream> client(new QuicCryptoClientStream( 156 scoped_ptr<QuicCryptoClientStream> client(new QuicCryptoClientStream(
168 "test.example.com", client_config, client_session.get(), 157 "test.example.com", client_config, client_session.get(),
169 &client_crypto_config)); 158 &client_crypto_config));
159 client_session->SetCryptoStream(client.get());
170 160
171 // Do a first handshake in order to prime the client config with the server's 161 // Do a first handshake in order to prime the client config with the server's
172 // information. 162 // information.
173 CHECK(client->CryptoConnect()); 163 CHECK(client->CryptoConnect());
174 CHECK_EQ(1u, client_conn->packets_.size()); 164 CHECK_EQ(1u, client_conn->packets_.size());
175 165
176 scoped_ptr<QuicCryptoServerStream> server( 166 scoped_ptr<QuicCryptoServerStream> server(
177 new QuicCryptoServerStream(config_, crypto_config_, 167 new QuicCryptoServerStream(config_, crypto_config_,
178 server_session.get())); 168 server_session.get()));
169 server_session->SetCryptoStream(server.get());
179 170
180 CryptoTestUtils::CommunicateHandshakeMessages( 171 CryptoTestUtils::CommunicateHandshakeMessages(
181 client_conn, client.get(), server_conn, server.get()); 172 client_conn, client.get(), server_conn, server.get());
182 EXPECT_EQ(2, client->num_sent_client_hellos()); 173 EXPECT_EQ(2, client->num_sent_client_hellos());
183 174
184 // Now do another handshake, hopefully in 0-RTT. 175 // Now do another handshake, hopefully in 0-RTT.
185 LOG(INFO) << "Resetting for 0-RTT handshake attempt"; 176 LOG(INFO) << "Resetting for 0-RTT handshake attempt";
186 177
187 client_conn = new PacketSavingConnection(guid, addr, false); 178 client_conn = new PacketSavingConnection(guid, addr, false);
188 server_conn = new PacketSavingConnection(guid, addr, false); 179 server_conn = new PacketSavingConnection(guid, addr, false);
189 // We need to advance time past the strike-server window so that it's 180 // We need to advance time past the strike-server window so that it's
190 // authoritative in this time span. 181 // authoritative in this time span.
191 client_conn->AdvanceTime(QuicTime::Delta::FromSeconds(1002000)); 182 client_conn->AdvanceTime(QuicTime::Delta::FromSeconds(102000));
192 server_conn->AdvanceTime(QuicTime::Delta::FromSeconds(1002000)); 183 server_conn->AdvanceTime(QuicTime::Delta::FromSeconds(102000));
193 184
194 // This causes the client's nonce to be different and thus stops the 185 // This causes the client's nonce to be different and thus stops the
195 // strike-register from rejecting the repeated nonce. 186 // strike-register from rejecting the repeated nonce.
196 client_conn->random_generator()->Reseed(NULL, 0); 187 client_conn->random_generator()->Reseed(NULL, 0);
197 client_session.reset(new TestSession(client_conn, true)); 188 client_session.reset(new TestSession(client_conn, true));
198 server_session.reset(new TestSession(server_conn, true)); 189 server_session.reset(new TestSession(server_conn, true));
199 client.reset(new QuicCryptoClientStream( 190 client.reset(new QuicCryptoClientStream(
200 "test.example.com", client_config, client_session.get(), 191 "test.example.com", client_config, client_session.get(),
201 &client_crypto_config)); 192 &client_crypto_config));
193 client_session->SetCryptoStream(client.get());
194
202 server.reset(new QuicCryptoServerStream(config_, crypto_config_, 195 server.reset(new QuicCryptoServerStream(config_, crypto_config_,
203 server_session.get())); 196 server_session.get()));
197 server_session->SetCryptoStream(server.get());
204 198
205 CHECK(client->CryptoConnect()); 199 CHECK(client->CryptoConnect());
206 200
207 CryptoTestUtils::CommunicateHandshakeMessages( 201 CryptoTestUtils::CommunicateHandshakeMessages(
208 client_conn, client.get(), server_conn, server.get()); 202 client_conn, client.get(), server_conn, server.get());
209 EXPECT_EQ(1, client->num_sent_client_hellos()); 203 EXPECT_EQ(1, client->num_sent_client_hellos());
210 } 204 }
211 205
212 TEST_F(QuicCryptoServerStreamTest, MessageAfterHandshake) { 206 TEST_F(QuicCryptoServerStreamTest, MessageAfterHandshake) {
213 if (!Aes128GcmEncrypter::IsSupported()) { 207 if (!Aes128GcmEncrypter::IsSupported()) {
(...skipping 18 matching lines...) Expand all
232 message_.set_tag(kSHLO); 226 message_.set_tag(kSHLO);
233 ConstructHandshakeMessage(); 227 ConstructHandshakeMessage();
234 EXPECT_CALL(*connection_, SendConnectionClose( 228 EXPECT_CALL(*connection_, SendConnectionClose(
235 QUIC_INVALID_CRYPTO_MESSAGE_TYPE)); 229 QUIC_INVALID_CRYPTO_MESSAGE_TYPE));
236 stream_.ProcessData(message_data_->data(), message_data_->length()); 230 stream_.ProcessData(message_data_->data(), message_data_->length());
237 } 231 }
238 232
239 } // namespace 233 } // namespace
240 } // namespace test 234 } // namespace test
241 } // namespace net 235 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_crypto_server_stream.cc ('k') | net/quic/quic_crypto_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698