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

Side by Side Diff: net/quic/core/crypto/crypto_framer_test.cc

Issue 2740453006: Add QuicStringPiece which is actually StringPiece. (Closed)
Patch Set: fix compile error and rebase Created 3 years, 9 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/crypto/crypto_framer.cc ('k') | net/quic/core/crypto/crypto_handshake_message.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/core/crypto/crypto_framer.h" 5 #include "net/quic/core/crypto/crypto_framer.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
11 #include "net/quic/core/crypto/crypto_handshake.h" 11 #include "net/quic/core/crypto/crypto_handshake.h"
12 #include "net/quic/core/crypto/crypto_protocol.h" 12 #include "net/quic/core/crypto/crypto_protocol.h"
13 #include "net/quic/core/quic_packets.h" 13 #include "net/quic/core/quic_packets.h"
14 #include "net/quic/platform/api/quic_logging.h" 14 #include "net/quic/platform/api/quic_logging.h"
15 #include "net/quic/test_tools/crypto_test_utils.h" 15 #include "net/quic/test_tools/crypto_test_utils.h"
16 #include "net/quic/test_tools/quic_test_utils.h" 16 #include "net/quic/test_tools/quic_test_utils.h"
17 17
18 using base::StringPiece;
19 using std::string; 18 using std::string;
20 19
21 namespace net { 20 namespace net {
22 21
23 namespace { 22 namespace {
24 23
25 char* AsChars(unsigned char* data) { 24 char* AsChars(unsigned char* data) {
26 return reinterpret_cast<char*>(data); 25 return reinterpret_cast<char*>(data);
27 } 26 }
28 27
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 0x79, 0x56, 0x34, 0x12, 259 0x79, 0x56, 0x34, 0x12,
261 // end offset 2 260 // end offset 2
262 0x0b, 0x00, 0x00, 0x00, 261 0x0b, 0x00, 0x00, 0x00,
263 // value 1 262 // value 1
264 'a', 'b', 'c', 'd', 'e', 'f', 263 'a', 'b', 'c', 'd', 'e', 'f',
265 // value 2 264 // value 2
266 'g', 'h', 'i', 'j', 'k', 265 'g', 'h', 'i', 'j', 'k',
267 }; 266 };
268 267
269 EXPECT_TRUE( 268 EXPECT_TRUE(
270 framer.ProcessInput(StringPiece(AsChars(input), arraysize(input)))); 269 framer.ProcessInput(QuicStringPiece(AsChars(input), arraysize(input))));
271 EXPECT_EQ(0u, framer.InputBytesRemaining()); 270 EXPECT_EQ(0u, framer.InputBytesRemaining());
272 EXPECT_EQ(0, visitor.error_count_); 271 EXPECT_EQ(0, visitor.error_count_);
273 ASSERT_EQ(1u, visitor.messages_.size()); 272 ASSERT_EQ(1u, visitor.messages_.size());
274 const CryptoHandshakeMessage& message = visitor.messages_[0]; 273 const CryptoHandshakeMessage& message = visitor.messages_[0];
275 EXPECT_EQ(0xFFAA7733, message.tag()); 274 EXPECT_EQ(0xFFAA7733, message.tag());
276 EXPECT_EQ(2u, message.tag_value_map().size()); 275 EXPECT_EQ(2u, message.tag_value_map().size());
277 EXPECT_EQ("abcdef", crypto_test_utils::GetValueForTag(message, 0x12345678)); 276 EXPECT_EQ("abcdef", crypto_test_utils::GetValueForTag(message, 0x12345678));
278 EXPECT_EQ("ghijk", crypto_test_utils::GetValueForTag(message, 0x12345679)); 277 EXPECT_EQ("ghijk", crypto_test_utils::GetValueForTag(message, 0x12345679));
279 } 278 }
280 279
(...skipping 23 matching lines...) Expand all
304 0x12, 0x00, 0x00, 0x00, 303 0x12, 0x00, 0x00, 0x00,
305 // value 1 304 // value 1
306 'a', 'b', 'c', 'd', 'e', 'f', 305 'a', 'b', 'c', 'd', 'e', 'f',
307 // value 2 306 // value 2
308 'g', 'h', 'i', 'j', 'k', 307 'g', 'h', 'i', 'j', 'k',
309 // value 3 308 // value 3
310 'l', 'm', 'n', 'o', 'p', 'q', 'r', 309 'l', 'm', 'n', 'o', 'p', 'q', 'r',
311 }; 310 };
312 311
313 EXPECT_TRUE( 312 EXPECT_TRUE(
314 framer.ProcessInput(StringPiece(AsChars(input), arraysize(input)))); 313 framer.ProcessInput(QuicStringPiece(AsChars(input), arraysize(input))));
315 EXPECT_EQ(0u, framer.InputBytesRemaining()); 314 EXPECT_EQ(0u, framer.InputBytesRemaining());
316 EXPECT_EQ(0, visitor.error_count_); 315 EXPECT_EQ(0, visitor.error_count_);
317 ASSERT_EQ(1u, visitor.messages_.size()); 316 ASSERT_EQ(1u, visitor.messages_.size());
318 const CryptoHandshakeMessage& message = visitor.messages_[0]; 317 const CryptoHandshakeMessage& message = visitor.messages_[0];
319 EXPECT_EQ(0xFFAA7733, message.tag()); 318 EXPECT_EQ(0xFFAA7733, message.tag());
320 EXPECT_EQ(3u, message.tag_value_map().size()); 319 EXPECT_EQ(3u, message.tag_value_map().size());
321 EXPECT_EQ("abcdef", crypto_test_utils::GetValueForTag(message, 0x12345678)); 320 EXPECT_EQ("abcdef", crypto_test_utils::GetValueForTag(message, 0x12345678));
322 EXPECT_EQ("ghijk", crypto_test_utils::GetValueForTag(message, 0x12345679)); 321 EXPECT_EQ("ghijk", crypto_test_utils::GetValueForTag(message, 0x12345679));
323 EXPECT_EQ("lmnopqr", crypto_test_utils::GetValueForTag(message, 0x1234567A)); 322 EXPECT_EQ("lmnopqr", crypto_test_utils::GetValueForTag(message, 0x1234567A));
324 } 323 }
(...skipping 18 matching lines...) Expand all
343 0x79, 0x56, 0x34, 0x12, 342 0x79, 0x56, 0x34, 0x12,
344 // end offset 2 343 // end offset 2
345 0x0b, 0x00, 0x00, 0x00, 344 0x0b, 0x00, 0x00, 0x00,
346 // value 1 345 // value 1
347 'a', 'b', 'c', 'd', 'e', 'f', 346 'a', 'b', 'c', 'd', 'e', 'f',
348 // value 2 347 // value 2
349 'g', 'h', 'i', 'j', 'k', 348 'g', 'h', 'i', 'j', 'k',
350 }; 349 };
351 350
352 for (size_t i = 0; i < arraysize(input); i++) { 351 for (size_t i = 0; i < arraysize(input); i++) {
353 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input) + i, 1))); 352 EXPECT_TRUE(framer.ProcessInput(QuicStringPiece(AsChars(input) + i, 1)));
354 } 353 }
355 EXPECT_EQ(0u, framer.InputBytesRemaining()); 354 EXPECT_EQ(0u, framer.InputBytesRemaining());
356 ASSERT_EQ(1u, visitor.messages_.size()); 355 ASSERT_EQ(1u, visitor.messages_.size());
357 const CryptoHandshakeMessage& message = visitor.messages_[0]; 356 const CryptoHandshakeMessage& message = visitor.messages_[0];
358 EXPECT_EQ(0xFFAA7733, message.tag()); 357 EXPECT_EQ(0xFFAA7733, message.tag());
359 EXPECT_EQ(2u, message.tag_value_map().size()); 358 EXPECT_EQ(2u, message.tag_value_map().size());
360 EXPECT_EQ("abcdef", crypto_test_utils::GetValueForTag(message, 0x12345678)); 359 EXPECT_EQ("abcdef", crypto_test_utils::GetValueForTag(message, 0x12345678));
361 EXPECT_EQ("ghijk", crypto_test_utils::GetValueForTag(message, 0x12345679)); 360 EXPECT_EQ("ghijk", crypto_test_utils::GetValueForTag(message, 0x12345679));
362 } 361 }
363 362
(...skipping 13 matching lines...) Expand all
377 0x78, 0x56, 0x34, 0x13, 376 0x78, 0x56, 0x34, 0x13,
378 // end offset 1 377 // end offset 1
379 0x01, 0x00, 0x00, 0x00, 378 0x01, 0x00, 0x00, 0x00,
380 // tag 2 379 // tag 2
381 0x79, 0x56, 0x34, 0x12, 380 0x79, 0x56, 0x34, 0x12,
382 // end offset 2 381 // end offset 2
383 0x02, 0x00, 0x00, 0x00, 382 0x02, 0x00, 0x00, 0x00,
384 }; 383 };
385 384
386 EXPECT_FALSE( 385 EXPECT_FALSE(
387 framer.ProcessInput(StringPiece(AsChars(input), arraysize(input)))); 386 framer.ProcessInput(QuicStringPiece(AsChars(input), arraysize(input))));
388 EXPECT_EQ(QUIC_CRYPTO_TAGS_OUT_OF_ORDER, framer.error()); 387 EXPECT_EQ(QUIC_CRYPTO_TAGS_OUT_OF_ORDER, framer.error());
389 EXPECT_EQ(1, visitor.error_count_); 388 EXPECT_EQ(1, visitor.error_count_);
390 } 389 }
391 390
392 TEST(CryptoFramerTest, ProcessEndOffsetsOutOfOrder) { 391 TEST(CryptoFramerTest, ProcessEndOffsetsOutOfOrder) {
393 test::TestCryptoVisitor visitor; 392 test::TestCryptoVisitor visitor;
394 CryptoFramer framer; 393 CryptoFramer framer;
395 framer.set_visitor(&visitor); 394 framer.set_visitor(&visitor);
396 395
397 unsigned char input[] = { 396 unsigned char input[] = {
398 // tag 397 // tag
399 0x33, 0x77, 0xAA, 0xFF, 398 0x33, 0x77, 0xAA, 0xFF,
400 // num entries 399 // num entries
401 0x02, 0x00, 400 0x02, 0x00,
402 // padding 401 // padding
403 0x00, 0x00, 402 0x00, 0x00,
404 // tag 1 403 // tag 1
405 0x79, 0x56, 0x34, 0x12, 404 0x79, 0x56, 0x34, 0x12,
406 // end offset 1 405 // end offset 1
407 0x01, 0x00, 0x00, 0x00, 406 0x01, 0x00, 0x00, 0x00,
408 // tag 2 407 // tag 2
409 0x78, 0x56, 0x34, 0x13, 408 0x78, 0x56, 0x34, 0x13,
410 // end offset 2 409 // end offset 2
411 0x00, 0x00, 0x00, 0x00, 410 0x00, 0x00, 0x00, 0x00,
412 }; 411 };
413 412
414 EXPECT_FALSE( 413 EXPECT_FALSE(
415 framer.ProcessInput(StringPiece(AsChars(input), arraysize(input)))); 414 framer.ProcessInput(QuicStringPiece(AsChars(input), arraysize(input))));
416 EXPECT_EQ(QUIC_CRYPTO_TAGS_OUT_OF_ORDER, framer.error()); 415 EXPECT_EQ(QUIC_CRYPTO_TAGS_OUT_OF_ORDER, framer.error());
417 EXPECT_EQ(1, visitor.error_count_); 416 EXPECT_EQ(1, visitor.error_count_);
418 } 417 }
419 418
420 TEST(CryptoFramerTest, ProcessInputTooManyEntries) { 419 TEST(CryptoFramerTest, ProcessInputTooManyEntries) {
421 test::TestCryptoVisitor visitor; 420 test::TestCryptoVisitor visitor;
422 CryptoFramer framer; 421 CryptoFramer framer;
423 framer.set_visitor(&visitor); 422 framer.set_visitor(&visitor);
424 423
425 unsigned char input[] = { 424 unsigned char input[] = {
426 // tag 425 // tag
427 0x33, 0x77, 0xAA, 0xFF, 426 0x33, 0x77, 0xAA, 0xFF,
428 // num entries 427 // num entries
429 0xA0, 0x00, 428 0xA0, 0x00,
430 // padding 429 // padding
431 0x00, 0x00, 430 0x00, 0x00,
432 }; 431 };
433 432
434 EXPECT_FALSE( 433 EXPECT_FALSE(
435 framer.ProcessInput(StringPiece(AsChars(input), arraysize(input)))); 434 framer.ProcessInput(QuicStringPiece(AsChars(input), arraysize(input))));
436 EXPECT_EQ(QUIC_CRYPTO_TOO_MANY_ENTRIES, framer.error()); 435 EXPECT_EQ(QUIC_CRYPTO_TOO_MANY_ENTRIES, framer.error());
437 EXPECT_EQ(1, visitor.error_count_); 436 EXPECT_EQ(1, visitor.error_count_);
438 } 437 }
439 438
440 TEST(CryptoFramerTest, ProcessInputZeroLength) { 439 TEST(CryptoFramerTest, ProcessInputZeroLength) {
441 test::TestCryptoVisitor visitor; 440 test::TestCryptoVisitor visitor;
442 CryptoFramer framer; 441 CryptoFramer framer;
443 framer.set_visitor(&visitor); 442 framer.set_visitor(&visitor);
444 443
445 unsigned char input[] = { 444 unsigned char input[] = {
446 // tag 445 // tag
447 0x33, 0x77, 0xAA, 0xFF, 446 0x33, 0x77, 0xAA, 0xFF,
448 // num entries 447 // num entries
449 0x02, 0x00, 448 0x02, 0x00,
450 // padding 449 // padding
451 0x00, 0x00, 450 0x00, 0x00,
452 // tag 1 451 // tag 1
453 0x78, 0x56, 0x34, 0x12, 452 0x78, 0x56, 0x34, 0x12,
454 // end offset 1 453 // end offset 1
455 0x00, 0x00, 0x00, 0x00, 454 0x00, 0x00, 0x00, 0x00,
456 // tag 2 455 // tag 2
457 0x79, 0x56, 0x34, 0x12, 456 0x79, 0x56, 0x34, 0x12,
458 // end offset 2 457 // end offset 2
459 0x05, 0x00, 0x00, 0x00, 458 0x05, 0x00, 0x00, 0x00,
460 }; 459 };
461 460
462 EXPECT_TRUE( 461 EXPECT_TRUE(
463 framer.ProcessInput(StringPiece(AsChars(input), arraysize(input)))); 462 framer.ProcessInput(QuicStringPiece(AsChars(input), arraysize(input))));
464 EXPECT_EQ(0, visitor.error_count_); 463 EXPECT_EQ(0, visitor.error_count_);
465 } 464 }
466 465
467 } // namespace test 466 } // namespace test
468 467
469 } // namespace net 468 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/crypto/crypto_framer.cc ('k') | net/quic/core/crypto/crypto_handshake_message.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698