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

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

Issue 2611613003: Add quic_logging (Closed)
Patch Set: keep LOG rather than all DLOG 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
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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 // tens place of the current QUIC version number. 363 // tens place of the current QUIC version number.
364 unsigned char GetQuicVersionDigitTens() { 364 unsigned char GetQuicVersionDigitTens() {
365 return static_cast<unsigned char>('0' + (version_ / 10) % 10); 365 return static_cast<unsigned char>('0' + (version_ / 10) % 10);
366 } 366 }
367 367
368 bool CheckEncryption(QuicPathId path_id, 368 bool CheckEncryption(QuicPathId path_id,
369 QuicPacketNumber packet_number, 369 QuicPacketNumber packet_number,
370 QuicPacket* packet) { 370 QuicPacket* packet) {
371 EXPECT_EQ(version_, encrypter_->version_); 371 EXPECT_EQ(version_, encrypter_->version_);
372 if (packet_number != encrypter_->packet_number_) { 372 if (packet_number != encrypter_->packet_number_) {
373 LOG(ERROR) << "Encrypted incorrect packet number. expected " 373 QUIC_LOG(ERROR) << "Encrypted incorrect packet number. expected "
374 << packet_number << " actual: " << encrypter_->packet_number_; 374 << packet_number
375 << " actual: " << encrypter_->packet_number_;
375 return false; 376 return false;
376 } 377 }
377 if (packet->AssociatedData(framer_.version()) != 378 if (packet->AssociatedData(framer_.version()) !=
378 encrypter_->associated_data_) { 379 encrypter_->associated_data_) {
379 LOG(ERROR) << "Encrypted incorrect associated data. expected " 380 QUIC_LOG(ERROR) << "Encrypted incorrect associated data. expected "
380 << packet->AssociatedData(framer_.version()) 381 << packet->AssociatedData(framer_.version())
381 << " actual: " << encrypter_->associated_data_; 382 << " actual: " << encrypter_->associated_data_;
382 return false; 383 return false;
383 } 384 }
384 if (packet->Plaintext(framer_.version()) != encrypter_->plaintext_) { 385 if (packet->Plaintext(framer_.version()) != encrypter_->plaintext_) {
385 LOG(ERROR) << "Encrypted incorrect plaintext data. expected " 386 QUIC_LOG(ERROR) << "Encrypted incorrect plaintext data. expected "
386 << packet->Plaintext(framer_.version()) 387 << packet->Plaintext(framer_.version())
387 << " actual: " << encrypter_->plaintext_; 388 << " actual: " << encrypter_->plaintext_;
388 return false; 389 return false;
389 } 390 }
390 return true; 391 return true;
391 } 392 }
392 393
393 bool CheckDecryption(const QuicEncryptedPacket& encrypted, 394 bool CheckDecryption(const QuicEncryptedPacket& encrypted,
394 bool includes_version, 395 bool includes_version,
395 bool includes_path_id, 396 bool includes_path_id,
396 bool includes_diversification_nonce) { 397 bool includes_diversification_nonce) {
397 EXPECT_EQ(version_, decrypter_->version_); 398 EXPECT_EQ(version_, decrypter_->version_);
398 if (visitor_.header_->packet_number != decrypter_->packet_number_) { 399 if (visitor_.header_->packet_number != decrypter_->packet_number_) {
399 LOG(ERROR) << "Decrypted incorrect packet number. expected " 400 QUIC_LOG(ERROR) << "Decrypted incorrect packet number. expected "
400 << visitor_.header_->packet_number 401 << visitor_.header_->packet_number
401 << " actual: " << decrypter_->packet_number_; 402 << " actual: " << decrypter_->packet_number_;
402 return false; 403 return false;
403 } 404 }
404 if (QuicFramer::GetAssociatedDataFromEncryptedPacket( 405 if (QuicFramer::GetAssociatedDataFromEncryptedPacket(
405 framer_.version(), encrypted, PACKET_8BYTE_CONNECTION_ID, 406 framer_.version(), encrypted, PACKET_8BYTE_CONNECTION_ID,
406 includes_version, includes_path_id, includes_diversification_nonce, 407 includes_version, includes_path_id, includes_diversification_nonce,
407 PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) { 408 PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) {
408 LOG(ERROR) << "Decrypted incorrect associated data. expected " 409 QUIC_LOG(ERROR) << "Decrypted incorrect associated data. expected "
409 << QuicFramer::GetAssociatedDataFromEncryptedPacket( 410 << QuicFramer::GetAssociatedDataFromEncryptedPacket(
410 framer_.version(), encrypted, 411 framer_.version(), encrypted,
411 PACKET_8BYTE_CONNECTION_ID, includes_version, 412 PACKET_8BYTE_CONNECTION_ID, includes_version,
412 includes_path_id, includes_diversification_nonce, 413 includes_path_id, includes_diversification_nonce,
413 PACKET_6BYTE_PACKET_NUMBER) 414 PACKET_6BYTE_PACKET_NUMBER)
414 << " actual: " << decrypter_->associated_data_; 415 << " actual: " << decrypter_->associated_data_;
415 return false; 416 return false;
416 } 417 }
417 StringPiece ciphertext( 418 StringPiece ciphertext(
418 encrypted.AsStringPiece().substr(GetStartOfEncryptedData( 419 encrypted.AsStringPiece().substr(GetStartOfEncryptedData(
419 framer_.version(), PACKET_8BYTE_CONNECTION_ID, includes_version, 420 framer_.version(), PACKET_8BYTE_CONNECTION_ID, includes_version,
420 includes_path_id, includes_diversification_nonce, 421 includes_path_id, includes_diversification_nonce,
421 PACKET_6BYTE_PACKET_NUMBER))); 422 PACKET_6BYTE_PACKET_NUMBER)));
422 if (ciphertext != decrypter_->ciphertext_) { 423 if (ciphertext != decrypter_->ciphertext_) {
423 LOG(ERROR) << "Decrypted incorrect ciphertext data. expected " 424 QUIC_LOG(ERROR) << "Decrypted incorrect ciphertext data. expected "
424 << ciphertext << " actual: " << decrypter_->ciphertext_; 425 << ciphertext << " actual: " << decrypter_->ciphertext_;
425 return false; 426 return false;
426 } 427 }
427 return true; 428 return true;
428 } 429 }
429 430
430 char* AsChars(unsigned char* data) { return reinterpret_cast<char*>(data); } 431 char* AsChars(unsigned char* data) { return reinterpret_cast<char*>(data); }
431 432
432 void CheckProcessingFails(unsigned char* packet, 433 void CheckProcessingFails(unsigned char* packet,
433 size_t len, 434 size_t len,
434 string expected_error, 435 string expected_error,
(...skipping 1843 matching lines...) Expand 10 before | Expand all | Expand 10 after
2278 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2279 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2279 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2280 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2280 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); 2281 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number);
2281 EXPECT_EQ( 2282 EXPECT_EQ(
2282 IpAddressFamily::IP_UNSPEC, 2283 IpAddressFamily::IP_UNSPEC,
2283 visitor_.public_reset_packet_->client_address.host().address_family()); 2284 visitor_.public_reset_packet_->client_address.host().address_family());
2284 2285
2285 // Now test framing boundaries. 2286 // Now test framing boundaries.
2286 for (size_t i = 0; i < arraysize(packet); ++i) { 2287 for (size_t i = 0; i < arraysize(packet); ++i) {
2287 string expected_error; 2288 string expected_error;
2288 DVLOG(1) << "iteration: " << i; 2289 QUIC_DLOG(INFO) << "iteration: " << i;
2289 if (i < kConnectionIdOffset) { 2290 if (i < kConnectionIdOffset) {
2290 expected_error = "Unable to read public flags."; 2291 expected_error = "Unable to read public flags.";
2291 CheckProcessingFails(packet, i, expected_error, 2292 CheckProcessingFails(packet, i, expected_error,
2292 QUIC_INVALID_PACKET_HEADER); 2293 QUIC_INVALID_PACKET_HEADER);
2293 } else if (i < kPublicResetPacketMessageTagOffset) { 2294 } else if (i < kPublicResetPacketMessageTagOffset) {
2294 expected_error = "Unable to read ConnectionId."; 2295 expected_error = "Unable to read ConnectionId.";
2295 CheckProcessingFails(packet, i, expected_error, 2296 CheckProcessingFails(packet, i, expected_error,
2296 QUIC_INVALID_PACKET_HEADER); 2297 QUIC_INVALID_PACKET_HEADER);
2297 } else { 2298 } else {
2298 expected_error = "Unable to read reset message."; 2299 expected_error = "Unable to read reset message.";
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2343 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2344 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2344 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2345 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2345 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); 2346 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number);
2346 EXPECT_EQ( 2347 EXPECT_EQ(
2347 IpAddressFamily::IP_UNSPEC, 2348 IpAddressFamily::IP_UNSPEC,
2348 visitor_.public_reset_packet_->client_address.host().address_family()); 2349 visitor_.public_reset_packet_->client_address.host().address_family());
2349 2350
2350 // Now test framing boundaries. 2351 // Now test framing boundaries.
2351 for (size_t i = 0; i < arraysize(packet); ++i) { 2352 for (size_t i = 0; i < arraysize(packet); ++i) {
2352 string expected_error; 2353 string expected_error;
2353 DVLOG(1) << "iteration: " << i; 2354 QUIC_DLOG(INFO) << "iteration: " << i;
2354 if (i < kConnectionIdOffset) { 2355 if (i < kConnectionIdOffset) {
2355 expected_error = "Unable to read public flags."; 2356 expected_error = "Unable to read public flags.";
2356 CheckProcessingFails(packet, i, expected_error, 2357 CheckProcessingFails(packet, i, expected_error,
2357 QUIC_INVALID_PACKET_HEADER); 2358 QUIC_INVALID_PACKET_HEADER);
2358 } else if (i < kPublicResetPacketMessageTagOffset) { 2359 } else if (i < kPublicResetPacketMessageTagOffset) {
2359 expected_error = "Unable to read ConnectionId."; 2360 expected_error = "Unable to read ConnectionId.";
2360 CheckProcessingFails(packet, i, expected_error, 2361 CheckProcessingFails(packet, i, expected_error,
2361 QUIC_INVALID_PACKET_HEADER); 2362 QUIC_INVALID_PACKET_HEADER);
2362 } else { 2363 } else {
2363 expected_error = "Unable to read reset message."; 2364 expected_error = "Unable to read reset message.";
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2450 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag); 2451 EXPECT_FALSE(visitor_.public_reset_packet_->public_header.version_flag);
2451 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof); 2452 EXPECT_EQ(kNonceProof, visitor_.public_reset_packet_->nonce_proof);
2452 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number); 2453 EXPECT_EQ(0u, visitor_.public_reset_packet_->rejected_packet_number);
2453 EXPECT_EQ("4.31.198.44", 2454 EXPECT_EQ("4.31.198.44",
2454 visitor_.public_reset_packet_->client_address.host().ToString()); 2455 visitor_.public_reset_packet_->client_address.host().ToString());
2455 EXPECT_EQ(443, visitor_.public_reset_packet_->client_address.port()); 2456 EXPECT_EQ(443, visitor_.public_reset_packet_->client_address.port());
2456 2457
2457 // Now test framing boundaries. 2458 // Now test framing boundaries.
2458 for (size_t i = 0; i < arraysize(packet); ++i) { 2459 for (size_t i = 0; i < arraysize(packet); ++i) {
2459 string expected_error; 2460 string expected_error;
2460 DVLOG(1) << "iteration: " << i; 2461 QUIC_DLOG(INFO) << "iteration: " << i;
2461 if (i < kConnectionIdOffset) { 2462 if (i < kConnectionIdOffset) {
2462 expected_error = "Unable to read public flags."; 2463 expected_error = "Unable to read public flags.";
2463 CheckProcessingFails(packet, i, expected_error, 2464 CheckProcessingFails(packet, i, expected_error,
2464 QUIC_INVALID_PACKET_HEADER); 2465 QUIC_INVALID_PACKET_HEADER);
2465 } else if (i < kPublicResetPacketMessageTagOffset) { 2466 } else if (i < kPublicResetPacketMessageTagOffset) {
2466 expected_error = "Unable to read ConnectionId."; 2467 expected_error = "Unable to read ConnectionId.";
2467 CheckProcessingFails(packet, i, expected_error, 2468 CheckProcessingFails(packet, i, expected_error,
2468 QUIC_INVALID_PACKET_HEADER); 2469 QUIC_INVALID_PACKET_HEADER);
2469 } else { 2470 } else {
2470 expected_error = "Unable to read reset message."; 2471 expected_error = "Unable to read reset message.";
(...skipping 1717 matching lines...) Expand 10 before | Expand all | Expand 10 after
4188 'o', ' ', 'w', 'o', 4189 'o', ' ', 'w', 'o',
4189 'r', 'l', 'd', '!', 4190 'r', 'l', 'd', '!',
4190 }; 4191 };
4191 // clang-format on 4192 // clang-format on
4192 4193
4193 QuicFramerFuzzFunc(packet, arraysize(packet)); 4194 QuicFramerFuzzFunc(packet, arraysize(packet));
4194 } 4195 }
4195 4196
4196 } // namespace test 4197 } // namespace test
4197 } // namespace net 4198 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698