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

Side by Side Diff: net/quic/core/quic_framer_test.cc

Issue 2611613003: Add quic_logging (Closed)
Patch Set: fix failed test? Created 3 years, 11 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
« no previous file with comments | « net/quic/core/quic_framer.cc ('k') | net/quic/core/quic_headers_stream_test.cc » ('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/core/quic_framer.h" 5 #include "net/quic/core/quic_framer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstdint> 8 #include <cstdint>
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
11 #include <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/logging.h"
15 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
16 #include "net/quic/core/crypto/null_decrypter.h" 15 #include "net/quic/core/crypto/null_decrypter.h"
17 #include "net/quic/core/crypto/null_encrypter.h" 16 #include "net/quic/core/crypto/null_encrypter.h"
18 #include "net/quic/core/crypto/quic_decrypter.h" 17 #include "net/quic/core/crypto/quic_decrypter.h"
19 #include "net/quic/core/crypto/quic_encrypter.h" 18 #include "net/quic/core/crypto/quic_encrypter.h"
20 #include "net/quic/core/quic_flags.h" 19 #include "net/quic/core/quic_flags.h"
21 #include "net/quic/core/quic_packets.h" 20 #include "net/quic/core/quic_packets.h"
22 #include "net/quic/core/quic_utils.h" 21 #include "net/quic/core/quic_utils.h"
22 #include "net/quic/platform/api/quic_logging.h"
23 #include "net/quic/test_tools/quic_framer_peer.h" 23 #include "net/quic/test_tools/quic_framer_peer.h"
24 #include "net/quic/test_tools/quic_test_utils.h" 24 #include "net/quic/test_tools/quic_test_utils.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 26
27 using base::StringPiece; 27 using base::StringPiece;
28 using std::string; 28 using std::string;
29 using testing::Return; 29 using testing::Return;
30 using testing::Truly; 30 using testing::Truly;
31 using testing::_; 31 using testing::_;
32 32
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 version_mismatch_(0), 197 version_mismatch_(0),
198 packet_count_(0), 198 packet_count_(0),
199 frame_count_(0), 199 frame_count_(0),
200 complete_packets_(0), 200 complete_packets_(0),
201 accept_packet_(true), 201 accept_packet_(true),
202 accept_public_header_(true) {} 202 accept_public_header_(true) {}
203 203
204 ~TestQuicVisitor() override {} 204 ~TestQuicVisitor() override {}
205 205
206 void OnError(QuicFramer* f) override { 206 void OnError(QuicFramer* f) override {
207 DVLOG(1) << "QuicFramer Error: " << QuicErrorCodeToString(f->error()) 207 QUIC_DLOG(INFO) << "QuicFramer Error: " << QuicErrorCodeToString(f->error())
208 << " (" << f->error() << ")"; 208 << " (" << f->error() << ")";
209 ++error_count_; 209 ++error_count_;
210 } 210 }
211 211
212 void OnPacket() override {} 212 void OnPacket() override {}
213 213
214 void OnPublicResetPacket(const QuicPublicResetPacket& packet) override { 214 void OnPublicResetPacket(const QuicPublicResetPacket& packet) override {
215 public_reset_packet_.reset(new QuicPublicResetPacket(packet)); 215 public_reset_packet_.reset(new QuicPublicResetPacket(packet));
216 } 216 }
217 217
218 void OnVersionNegotiationPacket( 218 void OnVersionNegotiationPacket(
219 const QuicVersionNegotiationPacket& packet) override { 219 const QuicVersionNegotiationPacket& packet) override {
220 version_negotiation_packet_.reset(new QuicVersionNegotiationPacket(packet)); 220 version_negotiation_packet_.reset(new QuicVersionNegotiationPacket(packet));
221 } 221 }
222 222
223 bool OnProtocolVersionMismatch(QuicVersion version) override { 223 bool OnProtocolVersionMismatch(QuicVersion version) override {
224 DVLOG(1) << "QuicFramer Version Mismatch, version: " << version; 224 QUIC_DLOG(INFO) << "QuicFramer Version Mismatch, version: " << version;
225 ++version_mismatch_; 225 ++version_mismatch_;
226 return true; 226 return true;
227 } 227 }
228 228
229 bool OnUnauthenticatedPublicHeader( 229 bool OnUnauthenticatedPublicHeader(
230 const QuicPacketPublicHeader& header) override { 230 const QuicPacketPublicHeader& header) override {
231 public_header_.reset(new QuicPacketPublicHeader(header)); 231 public_header_.reset(new QuicPacketPublicHeader(header));
232 return accept_public_header_; 232 return accept_public_header_;
233 } 233 }
234 234
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 // tens place of the current QUIC version number. 361 // tens place of the current QUIC version number.
362 unsigned char GetQuicVersionDigitTens() { 362 unsigned char GetQuicVersionDigitTens() {
363 return static_cast<unsigned char>('0' + (version_ / 10) % 10); 363 return static_cast<unsigned char>('0' + (version_ / 10) % 10);
364 } 364 }
365 365
366 bool CheckEncryption(QuicPathId path_id, 366 bool CheckEncryption(QuicPathId path_id,
367 QuicPacketNumber packet_number, 367 QuicPacketNumber packet_number,
368 QuicPacket* packet) { 368 QuicPacket* packet) {
369 EXPECT_EQ(version_, encrypter_->version_); 369 EXPECT_EQ(version_, encrypter_->version_);
370 if (packet_number != encrypter_->packet_number_) { 370 if (packet_number != encrypter_->packet_number_) {
371 LOG(ERROR) << "Encrypted incorrect packet number. expected " 371 QUIC_LOG(ERROR) << "Encrypted incorrect packet number. expected "
372 << packet_number << " actual: " << encrypter_->packet_number_; 372 << packet_number
373 << " actual: " << encrypter_->packet_number_;
373 return false; 374 return false;
374 } 375 }
375 if (packet->AssociatedData(framer_.version()) != 376 if (packet->AssociatedData(framer_.version()) !=
376 encrypter_->associated_data_) { 377 encrypter_->associated_data_) {
377 LOG(ERROR) << "Encrypted incorrect associated data. expected " 378 QUIC_LOG(ERROR) << "Encrypted incorrect associated data. expected "
378 << packet->AssociatedData(framer_.version()) 379 << packet->AssociatedData(framer_.version())
379 << " actual: " << encrypter_->associated_data_; 380 << " actual: " << encrypter_->associated_data_;
380 return false; 381 return false;
381 } 382 }
382 if (packet->Plaintext(framer_.version()) != encrypter_->plaintext_) { 383 if (packet->Plaintext(framer_.version()) != encrypter_->plaintext_) {
383 LOG(ERROR) << "Encrypted incorrect plaintext data. expected " 384 QUIC_LOG(ERROR) << "Encrypted incorrect plaintext data. expected "
384 << packet->Plaintext(framer_.version()) 385 << packet->Plaintext(framer_.version())
385 << " actual: " << encrypter_->plaintext_; 386 << " actual: " << encrypter_->plaintext_;
386 return false; 387 return false;
387 } 388 }
388 return true; 389 return true;
389 } 390 }
390 391
391 bool CheckDecryption(const QuicEncryptedPacket& encrypted, 392 bool CheckDecryption(const QuicEncryptedPacket& encrypted,
392 bool includes_version, 393 bool includes_version,
393 bool includes_path_id, 394 bool includes_path_id,
394 bool includes_diversification_nonce) { 395 bool includes_diversification_nonce) {
395 EXPECT_EQ(version_, decrypter_->version_); 396 EXPECT_EQ(version_, decrypter_->version_);
396 if (visitor_.header_->packet_number != decrypter_->packet_number_) { 397 if (visitor_.header_->packet_number != decrypter_->packet_number_) {
397 LOG(ERROR) << "Decrypted incorrect packet number. expected " 398 QUIC_LOG(ERROR) << "Decrypted incorrect packet number. expected "
398 << visitor_.header_->packet_number 399 << visitor_.header_->packet_number
399 << " actual: " << decrypter_->packet_number_; 400 << " actual: " << decrypter_->packet_number_;
400 return false; 401 return false;
401 } 402 }
402 if (QuicFramer::GetAssociatedDataFromEncryptedPacket( 403 if (QuicFramer::GetAssociatedDataFromEncryptedPacket(
403 framer_.version(), encrypted, PACKET_8BYTE_CONNECTION_ID, 404 framer_.version(), encrypted, PACKET_8BYTE_CONNECTION_ID,
404 includes_version, includes_path_id, includes_diversification_nonce, 405 includes_version, includes_path_id, includes_diversification_nonce,
405 PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) { 406 PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) {
406 LOG(ERROR) << "Decrypted incorrect associated data. expected " 407 QUIC_LOG(ERROR) << "Decrypted incorrect associated data. expected "
407 << QuicFramer::GetAssociatedDataFromEncryptedPacket( 408 << QuicFramer::GetAssociatedDataFromEncryptedPacket(
408 framer_.version(), encrypted, 409 framer_.version(), encrypted,
409 PACKET_8BYTE_CONNECTION_ID, includes_version, 410 PACKET_8BYTE_CONNECTION_ID, includes_version,
410 includes_path_id, includes_diversification_nonce, 411 includes_path_id, includes_diversification_nonce,
411 PACKET_6BYTE_PACKET_NUMBER) 412 PACKET_6BYTE_PACKET_NUMBER)
412 << " actual: " << decrypter_->associated_data_; 413 << " actual: " << decrypter_->associated_data_;
413 return false; 414 return false;
414 } 415 }
415 StringPiece ciphertext( 416 StringPiece ciphertext(
416 encrypted.AsStringPiece().substr(GetStartOfEncryptedData( 417 encrypted.AsStringPiece().substr(GetStartOfEncryptedData(
417 framer_.version(), PACKET_8BYTE_CONNECTION_ID, includes_version, 418 framer_.version(), PACKET_8BYTE_CONNECTION_ID, includes_version,
418 includes_path_id, includes_diversification_nonce, 419 includes_path_id, includes_diversification_nonce,
419 PACKET_6BYTE_PACKET_NUMBER))); 420 PACKET_6BYTE_PACKET_NUMBER)));
420 if (ciphertext != decrypter_->ciphertext_) { 421 if (ciphertext != decrypter_->ciphertext_) {
421 LOG(ERROR) << "Decrypted incorrect ciphertext data. expected " 422 QUIC_LOG(ERROR) << "Decrypted incorrect ciphertext data. expected "
422 << ciphertext << " actual: " << decrypter_->ciphertext_; 423 << ciphertext << " actual: " << decrypter_->ciphertext_;
423 return false; 424 return false;
424 } 425 }
425 return true; 426 return true;
426 } 427 }
427 428
428 char* AsChars(unsigned char* data) { return reinterpret_cast<char*>(data); } 429 char* AsChars(unsigned char* data) { return reinterpret_cast<char*>(data); }
429 430
430 void CheckProcessingFails(unsigned char* packet, 431 void CheckProcessingFails(unsigned char* packet,
431 size_t len, 432 size_t len,
432 string expected_error, 433 string expected_error,
(...skipping 1843 matching lines...) Expand 10 before | Expand all | Expand 10 after
2276 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2277 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2277 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2278 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2278 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); 2279 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number);
2279 EXPECT_EQ( 2280 EXPECT_EQ(
2280 IpAddressFamily::IP_UNSPEC, 2281 IpAddressFamily::IP_UNSPEC,
2281 visitor_.public_reset_packet_->client_address.host().address_family()); 2282 visitor_.public_reset_packet_->client_address.host().address_family());
2282 2283
2283 // Now test framing boundaries. 2284 // Now test framing boundaries.
2284 for (size_t i = 0; i < arraysize(packet); ++i) { 2285 for (size_t i = 0; i < arraysize(packet); ++i) {
2285 string expected_error; 2286 string expected_error;
2286 DVLOG(1) << "iteration: " << i; 2287 QUIC_DLOG(INFO) << "iteration: " << i;
2287 if (i < kConnectionIdOffset) { 2288 if (i < kConnectionIdOffset) {
2288 expected_error = "Unable to read public flags."; 2289 expected_error = "Unable to read public flags.";
2289 CheckProcessingFails(packet, i, expected_error, 2290 CheckProcessingFails(packet, i, expected_error,
2290 QUIC_INVALID_PACKET_HEADER); 2291 QUIC_INVALID_PACKET_HEADER);
2291 } else if (i < kPublicResetPacketMessageTagOffset) { 2292 } else if (i < kPublicResetPacketMessageTagOffset) {
2292 expected_error = "Unable to read ConnectionId."; 2293 expected_error = "Unable to read ConnectionId.";
2293 CheckProcessingFails(packet, i, expected_error, 2294 CheckProcessingFails(packet, i, expected_error,
2294 QUIC_INVALID_PACKET_HEADER); 2295 QUIC_INVALID_PACKET_HEADER);
2295 } else { 2296 } else {
2296 expected_error = "Unable to read reset message."; 2297 expected_error = "Unable to read reset message.";
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2341 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2342 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2342 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2343 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2343 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); 2344 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number);
2344 EXPECT_EQ( 2345 EXPECT_EQ(
2345 IpAddressFamily::IP_UNSPEC, 2346 IpAddressFamily::IP_UNSPEC,
2346 visitor_.public_reset_packet_->client_address.host().address_family()); 2347 visitor_.public_reset_packet_->client_address.host().address_family());
2347 2348
2348 // Now test framing boundaries. 2349 // Now test framing boundaries.
2349 for (size_t i = 0; i < arraysize(packet); ++i) { 2350 for (size_t i = 0; i < arraysize(packet); ++i) {
2350 string expected_error; 2351 string expected_error;
2351 DVLOG(1) << "iteration: " << i; 2352 QUIC_DLOG(INFO) << "iteration: " << i;
2352 if (i < kConnectionIdOffset) { 2353 if (i < kConnectionIdOffset) {
2353 expected_error = "Unable to read public flags."; 2354 expected_error = "Unable to read public flags.";
2354 CheckProcessingFails(packet, i, expected_error, 2355 CheckProcessingFails(packet, i, expected_error,
2355 QUIC_INVALID_PACKET_HEADER); 2356 QUIC_INVALID_PACKET_HEADER);
2356 } else if (i < kPublicResetPacketMessageTagOffset) { 2357 } else if (i < kPublicResetPacketMessageTagOffset) {
2357 expected_error = "Unable to read ConnectionId."; 2358 expected_error = "Unable to read ConnectionId.";
2358 CheckProcessingFails(packet, i, expected_error, 2359 CheckProcessingFails(packet, i, expected_error,
2359 QUIC_INVALID_PACKET_HEADER); 2360 QUIC_INVALID_PACKET_HEADER);
2360 } else { 2361 } else {
2361 expected_error = "Unable to read reset message."; 2362 expected_error = "Unable to read reset message.";
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2448 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2449 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2449 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2450 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2450 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); 2451 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number);
2451 EXPECT_EQ("4.31.198.44", 2452 EXPECT_EQ("4.31.198.44",
2452 visitor_.public_reset_packet_->client_address.host().ToString()); 2453 visitor_.public_reset_packet_->client_address.host().ToString());
2453 EXPECT_EQ(443, visitor_.public_reset_packet_->client_address.port()); 2454 EXPECT_EQ(443, visitor_.public_reset_packet_->client_address.port());
2454 2455
2455 // Now test framing boundaries. 2456 // Now test framing boundaries.
2456 for (size_t i = 0; i < arraysize(packet); ++i) { 2457 for (size_t i = 0; i < arraysize(packet); ++i) {
2457 string expected_error; 2458 string expected_error;
2458 DVLOG(1) << "iteration: " << i; 2459 QUIC_DLOG(INFO) << "iteration: " << i;
2459 if (i < kConnectionIdOffset) { 2460 if (i < kConnectionIdOffset) {
2460 expected_error = "Unable to read public flags."; 2461 expected_error = "Unable to read public flags.";
2461 CheckProcessingFails(packet, i, expected_error, 2462 CheckProcessingFails(packet, i, expected_error,
2462 QUIC_INVALID_PACKET_HEADER); 2463 QUIC_INVALID_PACKET_HEADER);
2463 } else if (i < kPublicResetPacketMessageTagOffset) { 2464 } else if (i < kPublicResetPacketMessageTagOffset) {
2464 expected_error = "Unable to read ConnectionId."; 2465 expected_error = "Unable to read ConnectionId.";
2465 CheckProcessingFails(packet, i, expected_error, 2466 CheckProcessingFails(packet, i, expected_error,
2466 QUIC_INVALID_PACKET_HEADER); 2467 QUIC_INVALID_PACKET_HEADER);
2467 } else { 2468 } else {
2468 expected_error = "Unable to read reset message."; 2469 expected_error = "Unable to read reset message.";
(...skipping 1717 matching lines...) Expand 10 before | Expand all | Expand 10 after
4186 'o', ' ', 'w', 'o', 4187 'o', ' ', 'w', 'o',
4187 'r', 'l', 'd', '!', 4188 'r', 'l', 'd', '!',
4188 }; 4189 };
4189 // clang-format on 4190 // clang-format on
4190 4191
4191 QuicFramerFuzzFunc(packet, arraysize(packet)); 4192 QuicFramerFuzzFunc(packet, arraysize(packet));
4192 } 4193 }
4193 4194
4194 } // namespace test 4195 } // namespace test
4195 } // namespace net 4196 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_framer.cc ('k') | net/quic/core/quic_headers_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698