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

Side by Side Diff: net/spdy/spdy_framer_test.cc

Issue 14189003: [SPDY] Incorporate latest framing changes from HTTP2 into SPDY 4 as SPDY 4a2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments 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/spdy/spdy_framer.cc ('k') | net/spdy/spdy_http_stream_spdy3_unittest.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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 serialized_headers.size() - 2, 685 serialized_headers.size() - 2,
686 &new_headers)); 686 &new_headers));
687 } 687 }
688 688
689 TEST_P(SpdyFramerTest, OutOfOrderHeaders) { 689 TEST_P(SpdyFramerTest, OutOfOrderHeaders) {
690 SpdyFramer framer(spdy_version_); 690 SpdyFramer framer(spdy_version_);
691 framer.set_enable_compression(false); 691 framer.set_enable_compression(false);
692 692
693 // Frame builder with plentiful buffer size. 693 // Frame builder with plentiful buffer size.
694 SpdyFrameBuilder frame(1024); 694 SpdyFrameBuilder frame(1024);
695 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE); 695 if (spdy_version_ < 4) {
696 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
697 frame.WriteUInt32(3); // stream_id
698 } else {
699 frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3);
700 }
696 701
697 frame.WriteUInt32(3); // stream_id
698 frame.WriteUInt32(0); // Associated stream id 702 frame.WriteUInt32(0); // Associated stream id
699 frame.WriteUInt16(0); // Priority. 703 frame.WriteUInt16(0); // Priority.
700 704
701 if (IsSpdy2()) { 705 if (IsSpdy2()) {
702 frame.WriteUInt16(2); // Number of headers. 706 frame.WriteUInt16(2); // Number of headers.
703 frame.WriteString("gamma"); 707 frame.WriteString("gamma");
704 frame.WriteString("gamma"); 708 frame.WriteString("gamma");
705 frame.WriteString("alpha"); 709 frame.WriteString("alpha");
706 frame.WriteString("alpha"); 710 frame.WriteString("alpha");
707 } else { 711 } else {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 't', 0x00, 0x00, 0x00, 743 't', 0x00, 0x00, 0x00,
740 0x0C, 'a', 'n', 'o', 744 0x0C, 'a', 'n', 'o',
741 't', 'h', 'e', 'r', 745 't', 'h', 'e', 'r',
742 ' ', 'c', 'e', 'r', 746 ' ', 'c', 'e', 'r',
743 't', 0x00, 0x00, 0x00, 747 't', 0x00, 0x00, 0x00,
744 0x0A, 'f', 'i', 'n', 748 0x0A, 'f', 'i', 'n',
745 'a', 'l', ' ', 'c', 749 'a', 'l', ' ', 'c',
746 'e', 'r', 't', 750 'e', 'r', 't',
747 }; 751 };
748 const unsigned char kV4FrameData[] = { 752 const unsigned char kV4FrameData[] = {
749 0x00, 0x37, 0x0A, 0x00, 753 0x00, 0x3b, 0x0A, 0x00,
754 0x00, 0x00, 0x00, 0x00,
750 0x00, 0x03, 0x00, 0x00, 755 0x00, 0x03, 0x00, 0x00,
751 0x00, 0x05, 'p', 'r', 756 0x00, 0x05, 'p', 'r',
752 'o', 'o', 'f', 0x00, 757 'o', 'o', 'f', 0x00,
753 0x00, 0x00, 0x06, 'a', 758 0x00, 0x00, 0x06, 'a',
754 ' ', 'c', 'e', 'r', 759 ' ', 'c', 'e', 'r',
755 't', 0x00, 0x00, 0x00, 760 't', 0x00, 0x00, 0x00,
756 0x0C, 'a', 'n', 'o', 761 0x0C, 'a', 'n', 'o',
757 't', 'h', 'e', 'r', 762 't', 'h', 'e', 'r',
758 ' ', 'c', 'e', 'r', 763 ' ', 'c', 'e', 'r',
759 't', 0x00, 0x00, 0x00, 764 't', 0x00, 0x00, 0x00,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 0x0C, 'a', 'n', 'o', 797 0x0C, 'a', 'n', 'o',
793 't', 'h', 'e', 'r', 798 't', 'h', 'e', 'r',
794 ' ', 'c', 'e', 'r', 799 ' ', 'c', 'e', 'r',
795 't', 0x00, 0x00, 0x00, 800 't', 0x00, 0x00, 0x00,
796 0x0A, 'f', 'i', 'n', 801 0x0A, 'f', 'i', 'n',
797 'a', 'l', ' ', 'c', 802 'a', 'l', ' ', 'c',
798 'e', 'r', 't', 803 'e', 'r', 't',
799 }; 804 };
800 const unsigned char kV4FrameData[] = { 805 const unsigned char kV4FrameData[] = {
801 0x00, 0x37, 0x0A, 0x00, 806 0x00, 0x37, 0x0A, 0x00,
807 0x00, 0x00, 0x00, 0x00,
802 0x00, 0x03, 0x00, 0x00, 808 0x00, 0x03, 0x00, 0x00,
803 0x00, 0x05, 'p', 'r', 809 0x00, 0x05, 'p', 'r',
804 'o', 'o', 'f', 0x00, 810 'o', 'o', 'f', 0x00,
805 0x00, 0x00, 0x06, 'a', 811 0x00, 0x00, 0x06, 'a',
806 ' ', 'c', 'e', 'r', 812 ' ', 'c', 'e', 'r',
807 't', 0x00, 0x00, 0x00, 813 't', 0x00, 0x00, 0x00,
808 0x0C, 'a', 'n', 'o', 814 0x0C, 'a', 'n', 'o',
809 't', 'h', 'e', 'r', 815 't', 'h', 'e', 'r',
810 ' ', 'c', 'e', 'r', 816 ' ', 'c', 'e', 'r',
811 't', 0x00, 0x00, 0x00, 817 't', 0x00, 0x00, 0x00,
(...skipping 25 matching lines...) Expand all
837 EXPECT_EQ("final cert", credential.certs.front()); 843 EXPECT_EQ("final cert", credential.certs.front());
838 credential.certs.erase(credential.certs.begin()); 844 credential.certs.erase(credential.certs.begin());
839 EXPECT_TRUE(credential.certs.empty()); 845 EXPECT_TRUE(credential.certs.empty());
840 } 846 }
841 } 847 }
842 848
843 TEST_P(SpdyFramerTest, DuplicateHeader) { 849 TEST_P(SpdyFramerTest, DuplicateHeader) {
844 SpdyFramer framer(spdy_version_); 850 SpdyFramer framer(spdy_version_);
845 // Frame builder with plentiful buffer size. 851 // Frame builder with plentiful buffer size.
846 SpdyFrameBuilder frame(1024); 852 SpdyFrameBuilder frame(1024);
847 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE); 853 if (spdy_version_ < 4) {
854 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
855 frame.WriteUInt32(3); // stream_id
856 } else {
857 frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3);
858 }
848 859
849 frame.WriteUInt32(3); // stream_id
850 frame.WriteUInt32(0); // associated stream id 860 frame.WriteUInt32(0); // associated stream id
851 frame.WriteUInt16(0); // Priority. 861 frame.WriteUInt16(0); // Priority.
852 862
853 if (IsSpdy2()) { 863 if (IsSpdy2()) {
854 frame.WriteUInt16(2); // Number of headers. 864 frame.WriteUInt16(2); // Number of headers.
855 frame.WriteString("name"); 865 frame.WriteString("name");
856 frame.WriteString("value1"); 866 frame.WriteString("value1");
857 frame.WriteString("name"); 867 frame.WriteString("name");
858 frame.WriteString("value2"); 868 frame.WriteString("value2");
859 } else { 869 } else {
(...skipping 14 matching lines...) Expand all
874 // This should fail because duplicate headers are verboten by the spec. 884 // This should fail because duplicate headers are verboten by the spec.
875 EXPECT_FALSE(framer.ParseHeaderBlockInBuffer(serialized_headers.data(), 885 EXPECT_FALSE(framer.ParseHeaderBlockInBuffer(serialized_headers.data(),
876 serialized_headers.size(), 886 serialized_headers.size(),
877 &new_headers)); 887 &new_headers));
878 } 888 }
879 889
880 TEST_P(SpdyFramerTest, MultiValueHeader) { 890 TEST_P(SpdyFramerTest, MultiValueHeader) {
881 SpdyFramer framer(spdy_version_); 891 SpdyFramer framer(spdy_version_);
882 // Frame builder with plentiful buffer size. 892 // Frame builder with plentiful buffer size.
883 SpdyFrameBuilder frame(1024); 893 SpdyFrameBuilder frame(1024);
884 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE); 894 if (spdy_version_ < 4) {
895 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
896 frame.WriteUInt32(3); // stream_id
897 } else {
898 frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3);
899 }
885 900
886 frame.WriteUInt32(3); // stream_id
887 frame.WriteUInt32(0); // associated stream id 901 frame.WriteUInt32(0); // associated stream id
888 frame.WriteUInt16(0); // Priority. 902 frame.WriteUInt16(0); // Priority.
889 903
890 string value("value1\0value2"); 904 string value("value1\0value2");
891 if (IsSpdy2()) { 905 if (IsSpdy2()) {
892 frame.WriteUInt16(1); // Number of headers. 906 frame.WriteUInt16(1); // Number of headers.
893 frame.WriteString("name"); 907 frame.WriteString("name");
894 frame.WriteString(value); 908 frame.WriteString(value);
895 } else { 909 } else {
896 frame.WriteUInt32(1); // Number of headers. 910 frame.WriteUInt32(1); // Number of headers.
(...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after
2383 0x0a, 0x0b, 0x0c, 0x0d, 2397 0x0a, 0x0b, 0x0c, 0x0d,
2384 }; 2398 };
2385 const unsigned char kV3FrameData[] = { 2399 const unsigned char kV3FrameData[] = {
2386 0x80, spdy_version_, 0x00, 0x04, 2400 0x80, spdy_version_, 0x00, 0x04,
2387 0x00, 0x00, 0x00, 0x0c, 2401 0x00, 0x00, 0x00, 0x0c,
2388 0x00, 0x00, 0x00, 0x01, 2402 0x00, 0x00, 0x00, 0x01,
2389 0x01, 0x02, 0x03, 0x04, 2403 0x01, 0x02, 0x03, 0x04,
2390 0x0a, 0x0b, 0x0c, 0x0d, 2404 0x0a, 0x0b, 0x0c, 0x0d,
2391 }; 2405 };
2392 const unsigned char kV4FrameData[] = { 2406 const unsigned char kV4FrameData[] = {
2393 0x00, 0x10, 0x04, 0x00, 2407 0x00, 0x14, 0x04, 0x00,
2408 0x00, 0x00, 0x00, 0x00,
2394 0x00, 0x00, 0x00, 0x01, 2409 0x00, 0x00, 0x00, 0x01,
2395 0x01, 0x02, 0x03, 0x04, 2410 0x01, 0x02, 0x03, 0x04,
2396 0x0a, 0x0b, 0x0c, 0x0d, 2411 0x0a, 0x0b, 0x0c, 0x0d,
2397 }; 2412 };
2398 2413
2399 scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings)); 2414 scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings));
2400 if (IsSpdy2()) { 2415 if (IsSpdy2()) {
2401 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); 2416 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
2402 } else if (IsSpdy3()) { 2417 } else if (IsSpdy3()) {
2403 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2418 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
(...skipping 22 matching lines...) Expand all
2426 0x00, 0x00, 0x00, 0x00, // 1st Setting 2441 0x00, 0x00, 0x00, 0x00, // 1st Setting
2427 0x00, 0x00, 0x00, 0x01, 2442 0x00, 0x00, 0x00, 0x01,
2428 0x01, 0x00, 0x00, 0x01, // 2nd Setting 2443 0x01, 0x00, 0x00, 0x01, // 2nd Setting
2429 0x00, 0x00, 0x00, 0x02, 2444 0x00, 0x00, 0x00, 0x02,
2430 0x02, 0x00, 0x00, 0x02, // 3rd Setting 2445 0x02, 0x00, 0x00, 0x02, // 3rd Setting
2431 0x00, 0x00, 0x00, 0x03, 2446 0x00, 0x00, 0x00, 0x03,
2432 0x03, 0x00, 0x00, 0x03, // 4th Setting 2447 0x03, 0x00, 0x00, 0x03, // 4th Setting
2433 0xff, 0x00, 0x00, 0x04, 2448 0xff, 0x00, 0x00, 0x04,
2434 }; 2449 };
2435 const unsigned char kV4FrameData[] = { 2450 const unsigned char kV4FrameData[] = {
2436 0x00, 0x28, 0x04, 0x00, 2451 0x00, 0x2c, 0x04, 0x00,
2452 0x00, 0x00, 0x00, 0x00,
2437 0x00, 0x00, 0x00, 0x04, 2453 0x00, 0x00, 0x00, 0x04,
2438 0x00, 0x00, 0x00, 0x00, // 1st Setting 2454 0x00, 0x00, 0x00, 0x00, // 1st Setting
2439 0x00, 0x00, 0x00, 0x01, 2455 0x00, 0x00, 0x00, 0x01,
2440 0x01, 0x00, 0x00, 0x01, // 2nd Setting 2456 0x01, 0x00, 0x00, 0x01, // 2nd Setting
2441 0x00, 0x00, 0x00, 0x02, 2457 0x00, 0x00, 0x00, 0x02,
2442 0x02, 0x00, 0x00, 0x02, // 3rd Setting 2458 0x02, 0x00, 0x00, 0x02, // 3rd Setting
2443 0x00, 0x00, 0x00, 0x03, 2459 0x00, 0x00, 0x00, 0x03,
2444 0x03, 0x00, 0x00, 0x03, // 4th Setting 2460 0x03, 0x00, 0x00, 0x03, // 4th Setting
2445 0xff, 0x00, 0x00, 0x04, 2461 0xff, 0x00, 0x00, 0x04,
2446 }; 2462 };
2447 scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings)); 2463 scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings));
2448 if (IsSpdy4()) { 2464 if (IsSpdy4()) {
2449 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); 2465 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
2450 } else { 2466 } else {
2451 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2467 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
2452 } 2468 }
2453 } 2469 }
2454 2470
2455 { 2471 {
2456 const char kDescription[] = "Empty SETTINGS frame"; 2472 const char kDescription[] = "Empty SETTINGS frame";
2457 2473
2458 SettingsMap settings; 2474 SettingsMap settings;
2459 2475
2460 const unsigned char kV3FrameData[] = { // Also applies for V2. 2476 const unsigned char kV3FrameData[] = { // Also applies for V2.
2461 0x80, spdy_version_, 0x00, 0x04, 2477 0x80, spdy_version_, 0x00, 0x04,
2462 0x00, 0x00, 0x00, 0x04, 2478 0x00, 0x00, 0x00, 0x04,
2463 0x00, 0x00, 0x00, 0x00, 2479 0x00, 0x00, 0x00, 0x00,
2464 }; 2480 };
2465 const unsigned char kV4FrameData[] = { 2481 const unsigned char kV4FrameData[] = {
2466 0x00, 0x08, 0x04, 0x00, 2482 0x00, 0x0c, 0x04, 0x00,
2483 0x00, 0x00, 0x00, 0x00,
2467 0x00, 0x00, 0x00, 0x00, 2484 0x00, 0x00, 0x00, 0x00,
2468 }; 2485 };
2469 scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings)); 2486 scoped_ptr<SpdyFrame> frame(framer.CreateSettings(settings));
2470 if (IsSpdy4()) { 2487 if (IsSpdy4()) {
2471 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); 2488 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
2472 } else { 2489 } else {
2473 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2490 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
2474 } 2491 }
2475 } 2492 }
2476 } 2493 }
2477 2494
2478 TEST_P(SpdyFramerTest, CreatePingFrame) { 2495 TEST_P(SpdyFramerTest, CreatePingFrame) {
2479 SpdyFramer framer(spdy_version_); 2496 SpdyFramer framer(spdy_version_);
2480 2497
2481 { 2498 {
2482 const char kDescription[] = "PING frame"; 2499 const char kDescription[] = "PING frame";
2483 const unsigned char kV3FrameData[] = { // Also applies for V2. 2500 const unsigned char kV3FrameData[] = { // Also applies for V2.
2484 0x80, spdy_version_, 0x00, 0x06, 2501 0x80, spdy_version_, 0x00, 0x06,
2485 0x00, 0x00, 0x00, 0x04, 2502 0x00, 0x00, 0x00, 0x04,
2486 0x12, 0x34, 0x56, 0x78, 2503 0x12, 0x34, 0x56, 0x78,
2487 }; 2504 };
2488 const unsigned char kV4FrameData[] = { 2505 const unsigned char kV4FrameData[] = {
2489 0x00, 0x08, 0x06, 0x00, 2506 0x00, 0x0c, 0x06, 0x00,
2507 0x00, 0x00, 0x00, 0x00,
2490 0x12, 0x34, 0x56, 0x78, 2508 0x12, 0x34, 0x56, 0x78,
2491 }; 2509 };
2492 scoped_ptr<SpdyFrame> frame(framer.CreatePingFrame(0x12345678u)); 2510 scoped_ptr<SpdyFrame> frame(framer.CreatePingFrame(0x12345678u));
2493 if (IsSpdy4()) { 2511 if (IsSpdy4()) {
2494 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); 2512 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
2495 } else { 2513 } else {
2496 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2514 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
2497 } 2515 }
2498 } 2516 }
2499 } 2517 }
2500 2518
2501 TEST_P(SpdyFramerTest, CreateGoAway) { 2519 TEST_P(SpdyFramerTest, CreateGoAway) {
2502 SpdyFramer framer(spdy_version_); 2520 SpdyFramer framer(spdy_version_);
2503 2521
2504 { 2522 {
2505 const char kDescription[] = "GOAWAY frame"; 2523 const char kDescription[] = "GOAWAY frame";
2506 const unsigned char kV2FrameData[] = { 2524 const unsigned char kV2FrameData[] = {
2507 0x80, spdy_version_, 0x00, 0x07, 2525 0x80, spdy_version_, 0x00, 0x07,
2508 0x00, 0x00, 0x00, 0x04, 2526 0x00, 0x00, 0x00, 0x04,
2509 0x00, 0x00, 0x00, 0x00, 2527 0x00, 0x00, 0x00, 0x00,
2510 }; 2528 };
2511 const unsigned char kV3FrameData[] = { 2529 const unsigned char kV3FrameData[] = {
2512 0x80, spdy_version_, 0x00, 0x07, 2530 0x80, spdy_version_, 0x00, 0x07,
2513 0x00, 0x00, 0x00, 0x08, 2531 0x00, 0x00, 0x00, 0x08,
2514 0x00, 0x00, 0x00, 0x00, 2532 0x00, 0x00, 0x00, 0x00,
2515 0x00, 0x00, 0x00, 0x00, 2533 0x00, 0x00, 0x00, 0x00,
2516 }; 2534 };
2517 const unsigned char kV4FrameData[] = { 2535 const unsigned char kV4FrameData[] = {
2518 0x00, 0x0c, 0x07, 0x00, 2536 0x00, 0x10, 0x07, 0x00,
2537 0x00, 0x00, 0x00, 0x00,
2519 0x00, 0x00, 0x00, 0x00, 2538 0x00, 0x00, 0x00, 0x00,
2520 0x00, 0x00, 0x00, 0x00, 2539 0x00, 0x00, 0x00, 0x00,
2521 }; 2540 };
2522 scoped_ptr<SpdyFrame> frame(framer.CreateGoAway(0, GOAWAY_OK)); 2541 scoped_ptr<SpdyFrame> frame(framer.CreateGoAway(0, GOAWAY_OK));
2523 if (IsSpdy2()) { 2542 if (IsSpdy2()) {
2524 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); 2543 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
2525 } else if (IsSpdy3()) { 2544 } else if (IsSpdy3()) {
2526 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2545 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
2527 } else { 2546 } else {
2528 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); 2547 CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData));
2529 } 2548 }
2530 } 2549 }
2531 2550
2532 { 2551 {
2533 const char kDescription[] = "GOAWAY frame with max stream ID, status"; 2552 const char kDescription[] = "GOAWAY frame with max stream ID, status";
2534 const unsigned char kV2FrameData[] = { 2553 const unsigned char kV2FrameData[] = {
2535 0x80, spdy_version_, 0x00, 0x07, 2554 0x80, spdy_version_, 0x00, 0x07,
2536 0x00, 0x00, 0x00, 0x04, 2555 0x00, 0x00, 0x00, 0x04,
2537 0x7f, 0xff, 0xff, 0xff, 2556 0x7f, 0xff, 0xff, 0xff,
2538 }; 2557 };
2539 const unsigned char kV3FrameData[] = { 2558 const unsigned char kV3FrameData[] = {
2540 0x80, spdy_version_, 0x00, 0x07, 2559 0x80, spdy_version_, 0x00, 0x07,
2541 0x00, 0x00, 0x00, 0x08, 2560 0x00, 0x00, 0x00, 0x08,
2542 0x7f, 0xff, 0xff, 0xff, 2561 0x7f, 0xff, 0xff, 0xff,
2543 0x00, 0x00, 0x00, 0x02, 2562 0x00, 0x00, 0x00, 0x02,
2544 }; 2563 };
2545 const unsigned char kV4FrameData[] = { 2564 const unsigned char kV4FrameData[] = {
2546 0x00, 0x0c, 0x07, 0x00, 2565 0x00, 0x10, 0x07, 0x00,
2566 0x00, 0x00, 0x00, 0x00,
2547 0x7f, 0xff, 0xff, 0xff, 2567 0x7f, 0xff, 0xff, 0xff,
2548 0x00, 0x00, 0x00, 0x02, 2568 0x00, 0x00, 0x00, 0x02,
2549 }; 2569 };
2550 scoped_ptr<SpdyFrame> frame(framer.CreateGoAway(0x7FFFFFFF, 2570 scoped_ptr<SpdyFrame> frame(framer.CreateGoAway(0x7FFFFFFF,
2551 GOAWAY_INTERNAL_ERROR)); 2571 GOAWAY_INTERNAL_ERROR));
2552 if (IsSpdy2()) { 2572 if (IsSpdy2()) {
2553 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); 2573 CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData));
2554 } else if (IsSpdy3()) { 2574 } else if (IsSpdy3()) {
2555 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); 2575 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData));
2556 } else { 2576 } else {
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after
3263 0x00, 0x00, 0x00, 0x1C, 3283 0x00, 0x00, 0x00, 0x1C,
3264 0x00, 0x00, 0x00, 0x03, 3284 0x00, 0x00, 0x00, 0x03,
3265 0x00, 0x00, 0x00, 0x01, // 1st Setting 3285 0x00, 0x00, 0x00, 0x01, // 1st Setting
3266 0x00, 0x00, 0x00, 0x02, 3286 0x00, 0x00, 0x00, 0x02,
3267 0x00, 0x00, 0x00, 0x01, // 2nd (duplicate) Setting 3287 0x00, 0x00, 0x00, 0x01, // 2nd (duplicate) Setting
3268 0x00, 0x00, 0x00, 0x03, 3288 0x00, 0x00, 0x00, 0x03,
3269 0x00, 0x00, 0x00, 0x03, // 3rd (unprocessed) Setting 3289 0x00, 0x00, 0x00, 0x03, // 3rd (unprocessed) Setting
3270 0x00, 0x00, 0x00, 0x03, 3290 0x00, 0x00, 0x00, 0x03,
3271 }; 3291 };
3272 const unsigned char kV4FrameData[] = { 3292 const unsigned char kV4FrameData[] = {
3273 0x00, 0x20, 0x04, 0x00, 3293 0x00, 0x24, 0x04, 0x00,
3294 0x00, 0x00, 0x00, 0x00,
3274 0x00, 0x00, 0x00, 0x03, 3295 0x00, 0x00, 0x00, 0x03,
3275 0x00, 0x00, 0x00, 0x01, // 1st Setting 3296 0x00, 0x00, 0x00, 0x01, // 1st Setting
3276 0x00, 0x00, 0x00, 0x02, 3297 0x00, 0x00, 0x00, 0x02,
3277 0x00, 0x00, 0x00, 0x01, // 2nd (duplicate) Setting 3298 0x00, 0x00, 0x00, 0x01, // 2nd (duplicate) Setting
3278 0x00, 0x00, 0x00, 0x03, 3299 0x00, 0x00, 0x00, 0x03,
3279 0x00, 0x00, 0x00, 0x03, // 3rd (unprocessed) Setting 3300 0x00, 0x00, 0x00, 0x03, // 3rd (unprocessed) Setting
3280 0x00, 0x00, 0x00, 0x03, 3301 0x00, 0x00, 0x00, 0x03,
3281 }; 3302 };
3282 3303
3283 TestSpdyVisitor visitor(spdy_version_); 3304 TestSpdyVisitor visitor(spdy_version_);
(...skipping 29 matching lines...) Expand all
3313 0x00, 0x00, 0x00, 0x1C, 3334 0x00, 0x00, 0x00, 0x1C,
3314 0x00, 0x00, 0x00, 0x03, 3335 0x00, 0x00, 0x00, 0x03,
3315 0x00, 0x00, 0x00, 0x02, // 1st Setting 3336 0x00, 0x00, 0x00, 0x02, // 1st Setting
3316 0x00, 0x00, 0x00, 0x02, 3337 0x00, 0x00, 0x00, 0x02,
3317 0x00, 0x00, 0x00, 0x01, // 2nd (out of order) Setting 3338 0x00, 0x00, 0x00, 0x01, // 2nd (out of order) Setting
3318 0x00, 0x00, 0x00, 0x03, 3339 0x00, 0x00, 0x00, 0x03,
3319 0x00, 0x00, 0x01, 0x03, // 3rd (unprocessed) Setting 3340 0x00, 0x00, 0x01, 0x03, // 3rd (unprocessed) Setting
3320 0x00, 0x00, 0x00, 0x03, 3341 0x00, 0x00, 0x00, 0x03,
3321 }; 3342 };
3322 const unsigned char kV4FrameData[] = { 3343 const unsigned char kV4FrameData[] = {
3323 0x00, 0x20, 0x04, 0x00, 3344 0x00, 0x24, 0x04, 0x00,
3345 0x00, 0x00, 0x00, 0x00,
3324 0x00, 0x00, 0x00, 0x03, 3346 0x00, 0x00, 0x00, 0x03,
3325 0x00, 0x00, 0x00, 0x02, // 1st Setting 3347 0x00, 0x00, 0x00, 0x02, // 1st Setting
3326 0x00, 0x00, 0x00, 0x02, 3348 0x00, 0x00, 0x00, 0x02,
3327 0x00, 0x00, 0x00, 0x01, // 2nd (out of order) Setting 3349 0x00, 0x00, 0x00, 0x01, // 2nd (out of order) Setting
3328 0x00, 0x00, 0x00, 0x03, 3350 0x00, 0x00, 0x00, 0x03,
3329 0x00, 0x00, 0x01, 0x03, // 3rd (unprocessed) Setting 3351 0x00, 0x00, 0x01, 0x03, // 3rd (unprocessed) Setting
3330 0x00, 0x00, 0x00, 0x03, 3352 0x00, 0x00, 0x00, 0x03,
3331 }; 3353 };
3332 3354
3333 TestSpdyVisitor visitor(spdy_version_); 3355 TestSpdyVisitor visitor(spdy_version_);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
3500 TestSpdyVisitor visitor(spdy_version_); 3522 TestSpdyVisitor visitor(spdy_version_);
3501 visitor.use_compression_ = false; 3523 visitor.use_compression_ = false;
3502 visitor.SimulateInFramer(kFrameData, arraysize(kFrameData)); 3524 visitor.SimulateInFramer(kFrameData, arraysize(kFrameData));
3503 EXPECT_EQ(1, visitor.error_count_); 3525 EXPECT_EQ(1, visitor.error_count_);
3504 } 3526 }
3505 3527
3506 TEST_P(SpdyFramerTest, SizesTest) { 3528 TEST_P(SpdyFramerTest, SizesTest) {
3507 SpdyFramer framer(spdy_version_); 3529 SpdyFramer framer(spdy_version_);
3508 EXPECT_EQ(8u, framer.GetDataFrameMinimumSize()); 3530 EXPECT_EQ(8u, framer.GetDataFrameMinimumSize());
3509 if (IsSpdy4()) { 3531 if (IsSpdy4()) {
3510 EXPECT_EQ(4u, framer.GetControlFrameHeaderSize());
3511 EXPECT_EQ(14u, framer.GetSynStreamMinimumSize());
3512 EXPECT_EQ(8u, framer.GetSynReplyMinimumSize()); 3532 EXPECT_EQ(8u, framer.GetSynReplyMinimumSize());
3513 EXPECT_EQ(12u, framer.GetRstStreamSize()); 3533 EXPECT_EQ(12u, framer.GetRstStreamSize());
3514 EXPECT_EQ(8u, framer.GetSettingsMinimumSize()); 3534 EXPECT_EQ(12u, framer.GetSettingsMinimumSize());
3515 EXPECT_EQ(8u, framer.GetPingSize()); 3535 EXPECT_EQ(12u, framer.GetPingSize());
3516 EXPECT_EQ(12u, framer.GetGoAwaySize()); 3536 EXPECT_EQ(16u, framer.GetGoAwaySize());
3517 EXPECT_EQ(8u, framer.GetHeadersMinimumSize()); 3537 EXPECT_EQ(8u, framer.GetHeadersMinimumSize());
3518 EXPECT_EQ(12u, framer.GetWindowUpdateSize()); 3538 EXPECT_EQ(12u, framer.GetWindowUpdateSize());
3519 EXPECT_EQ(6u, framer.GetCredentialMinimumSize()); 3539 EXPECT_EQ(10u, framer.GetCredentialMinimumSize());
3520 EXPECT_EQ(4u, framer.GetFrameMinimumSize()); 3540 EXPECT_EQ(8u, framer.GetFrameMinimumSize());
3521 EXPECT_EQ(65535u, framer.GetFrameMaximumSize()); 3541 EXPECT_EQ(65535u, framer.GetFrameMaximumSize());
3522 EXPECT_EQ(65527u, framer.GetDataFrameMaximumPayload()); 3542 EXPECT_EQ(65527u, framer.GetDataFrameMaximumPayload());
3523 } else { 3543 } else {
3524 EXPECT_EQ(8u, framer.GetControlFrameHeaderSize()); 3544 EXPECT_EQ(8u, framer.GetControlFrameHeaderSize());
3525 EXPECT_EQ(18u, framer.GetSynStreamMinimumSize()); 3545 EXPECT_EQ(18u, framer.GetSynStreamMinimumSize());
3526 EXPECT_EQ(IsSpdy2() ? 14u : 12u, framer.GetSynReplyMinimumSize()); 3546 EXPECT_EQ(IsSpdy2() ? 14u : 12u, framer.GetSynReplyMinimumSize());
3527 EXPECT_EQ(16u, framer.GetRstStreamSize()); 3547 EXPECT_EQ(16u, framer.GetRstStreamSize());
3528 EXPECT_EQ(12u, framer.GetSettingsMinimumSize()); 3548 EXPECT_EQ(12u, framer.GetSettingsMinimumSize());
3529 EXPECT_EQ(12u, framer.GetPingSize()); 3549 EXPECT_EQ(12u, framer.GetPingSize());
3530 EXPECT_EQ(IsSpdy2() ? 12u : 16u, framer.GetGoAwaySize()); 3550 EXPECT_EQ(IsSpdy2() ? 12u : 16u, framer.GetGoAwaySize());
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
4117 0x00, 0x00, 0x00, 0x04, 4137 0x00, 0x00, 0x00, 0x04,
4118 0xff, 0xff, 0xff, 0xff, 4138 0xff, 0xff, 0xff, 0xff,
4119 }; 4139 };
4120 const unsigned char kV3FrameData[] = { 4140 const unsigned char kV3FrameData[] = {
4121 0x80, spdy_version_, 0x00, 0x07, 4141 0x80, spdy_version_, 0x00, 0x07,
4122 0x00, 0x00, 0x00, 0x08, 4142 0x00, 0x00, 0x00, 0x08,
4123 0xff, 0xff, 0xff, 0xff, 4143 0xff, 0xff, 0xff, 0xff,
4124 0x00, 0x00, 0x00, 0x00, 4144 0x00, 0x00, 0x00, 0x00,
4125 }; 4145 };
4126 const unsigned char kV4FrameData[] = { 4146 const unsigned char kV4FrameData[] = {
4127 0x00, 0x0c, 0x07, 0x00, 4147 0x00, 0x10, 0x07, 0x00,
4148 0x00, 0x00, 0x00, 0x00,
4128 0xff, 0xff, 0xff, 0xff, 4149 0xff, 0xff, 0xff, 0xff,
4129 0x00, 0x00, 0x00, 0x00, 4150 0x00, 0x00, 0x00, 0x00,
4130 }; 4151 };
4131 4152
4132 testing::StrictMock<test::MockVisitor> visitor; 4153 testing::StrictMock<test::MockVisitor> visitor;
4133 SpdyFramer framer(spdy_version_); 4154 SpdyFramer framer(spdy_version_);
4134 framer.set_visitor(&visitor); 4155 framer.set_visitor(&visitor);
4135 4156
4136 EXPECT_CALL(visitor, OnGoAway(0x7fffffff, GOAWAY_OK)); 4157 EXPECT_CALL(visitor, OnGoAway(0x7fffffff, GOAWAY_OK));
4137 if (IsSpdy2()) { 4158 if (IsSpdy2()) {
4138 framer.ProcessInput(reinterpret_cast<const char*>(kV2FrameData), 4159 framer.ProcessInput(reinterpret_cast<const char*>(kV2FrameData),
4139 arraysize(kV2FrameData)); 4160 arraysize(kV2FrameData));
4140 } else if (IsSpdy3()) { 4161 } else if (IsSpdy3()) {
4141 framer.ProcessInput(reinterpret_cast<const char*>(kV3FrameData), 4162 framer.ProcessInput(reinterpret_cast<const char*>(kV3FrameData),
4142 arraysize(kV3FrameData)); 4163 arraysize(kV3FrameData));
4143 } else { 4164 } else {
4144 framer.ProcessInput(reinterpret_cast<const char*>(kV4FrameData), 4165 framer.ProcessInput(reinterpret_cast<const char*>(kV4FrameData),
4145 arraysize(kV4FrameData)); 4166 arraysize(kV4FrameData));
4146 } 4167 }
4147 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); 4168 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
4148 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()); 4169 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code());
4149 } 4170 }
4150 4171
4151 } // namespace net 4172 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_http_stream_spdy3_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698