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

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

Issue 1410343005: Update version parameter format in SpdyAltSvcWireFormat. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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/spdy/spdy_alt_svc_wire_format_test.cc ('k') | no next file » | 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/spdy/spdy_framer.h" 5 #include "net/spdy/spdy_framer.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 3483 matching lines...) Expand 10 before | Expand all | Expand 10 after
3494 if (spdy_version_ <= SPDY3) { 3494 if (spdy_version_ <= SPDY3) {
3495 return; 3495 return;
3496 } 3496 }
3497 3497
3498 SpdyFramer framer(spdy_version_); 3498 SpdyFramer framer(spdy_version_);
3499 3499
3500 const char kDescription[] = "ALTSVC frame"; 3500 const char kDescription[] = "ALTSVC frame";
3501 const char kType = static_cast<unsigned char>( 3501 const char kType = static_cast<unsigned char>(
3502 SpdyConstants::SerializeFrameType(spdy_version_, ALTSVC)); 3502 SpdyConstants::SerializeFrameType(spdy_version_, ALTSVC));
3503 const unsigned char kFrameData[] = { 3503 const unsigned char kFrameData[] = {
3504 0x00, 0x00, 0x51, kType, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 'o', 3504 0x00, 0x00, 0x53, kType, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 'o',
3505 'r', 'i', 'g', 'i', 'n', 'p', 'i', 'd', '1', '=', '"', 'h', 3505 'r', 'i', 'g', 'i', 'n', 'p', 'i', 'd', '1', '=', '"', 'h',
3506 'o', 's', 't', ':', '4', '4', '3', '"', ';', ' ', 'm', 'a', 3506 'o', 's', 't', ':', '4', '4', '3', '"', ';', ' ', 'm', 'a',
3507 '=', '5', ',', 'p', '%', '2', '2', '%', '3', 'D', 'i', '%', 3507 '=', '5', ',', 'p', '%', '2', '2', '%', '3', 'D', 'i', '%',
3508 '3', 'A', 'd', '=', '"', 'h', '_', '\\', '\\', 'o', '\\', '"', 3508 '3', 'A', 'd', '=', '"', 'h', '_', '\\', '\\', 'o', '\\', '"',
3509 's', 't', ':', '1', '2', '3', '"', ';', ' ', 'v', '=', '2', 3509 's', 't', ':', '1', '2', '3', '"', ';', ' ', 'm', 'a', '=',
3510 '4', ';', ' ', 'm', 'a', '=', '4', '2', ';', ' ', 'p', '=', 3510 '4', '2', ';', ' ', 'p', '=', '"', '0', '.', '2', '0', '"',
3511 '"', '0', '.', '2', '0', '"'}; 3511 ';', ' ', 'v', '=', '"', '2', '4', '"'};
3512 SpdyAltSvcIR altsvc_ir(3); 3512 SpdyAltSvcIR altsvc_ir(3);
3513 altsvc_ir.set_origin("origin"); 3513 altsvc_ir.set_origin("origin");
3514 altsvc_ir.add_altsvc(
3515 SpdyAltSvcWireFormat::AlternativeService("pid1", "host", 443, 0, 5, 1.0));
3516 altsvc_ir.add_altsvc(SpdyAltSvcWireFormat::AlternativeService( 3514 altsvc_ir.add_altsvc(SpdyAltSvcWireFormat::AlternativeService(
3517 "p\"=i:d", "h_\\o\"st", 123, 24, 42, 0.2)); 3515 "pid1", "host", 443, 5, 1.0, SpdyAltSvcWireFormat::VersionVector{}));
3516 altsvc_ir.add_altsvc(SpdyAltSvcWireFormat::AlternativeService(
3517 "p\"=i:d", "h_\\o\"st", 123, 42, 0.2,
3518 SpdyAltSvcWireFormat::VersionVector{24}));
3518 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir)); 3519 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir));
3519 CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData)); 3520 CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData));
3520 } 3521 }
3521 3522
3522 TEST_P(SpdyFramerTest, CreatePriority) { 3523 TEST_P(SpdyFramerTest, CreatePriority) {
3523 if (spdy_version_ <= SPDY3) { 3524 if (spdy_version_ <= SPDY3) {
3524 return; 3525 return;
3525 } 3526 }
3526 3527
3527 SpdyFramer framer(spdy_version_); 3528 SpdyFramer framer(spdy_version_);
(...skipping 2237 matching lines...) Expand 10 before | Expand all | Expand 10 after
5765 if (spdy_version_ <= SPDY3) { 5766 if (spdy_version_ <= SPDY3) {
5766 return; 5767 return;
5767 } 5768 }
5768 5769
5769 const SpdyStreamId kStreamId = 1; 5770 const SpdyStreamId kStreamId = 1;
5770 5771
5771 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 5772 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
5772 SpdyFramer framer(spdy_version_); 5773 SpdyFramer framer(spdy_version_);
5773 framer.set_visitor(&visitor); 5774 framer.set_visitor(&visitor);
5774 5775
5775 SpdyAltSvcWireFormat::AlternativeService altsvc1("pid1", "host", 443, 0, 5, 5776 SpdyAltSvcWireFormat::AlternativeService altsvc1(
5776 1.0); 5777 "pid1", "host", 443, 5, 1.0, SpdyAltSvcWireFormat::VersionVector());
5777 SpdyAltSvcWireFormat::AlternativeService altsvc2("p\"=i:d", "h_\\o\"st", 123, 5778 SpdyAltSvcWireFormat::AlternativeService altsvc2(
5778 24, 42, 0.2); 5779 "p\"=i:d", "h_\\o\"st", 123, 42, 0.2,
5780 SpdyAltSvcWireFormat::VersionVector{24});
5779 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; 5781 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
5780 altsvc_vector.push_back(altsvc1); 5782 altsvc_vector.push_back(altsvc1);
5781 altsvc_vector.push_back(altsvc2); 5783 altsvc_vector.push_back(altsvc2);
5782 EXPECT_CALL(visitor, 5784 EXPECT_CALL(visitor,
5783 OnAltSvc(kStreamId, StringPiece("o_r|g!n"), altsvc_vector)); 5785 OnAltSvc(kStreamId, StringPiece("o_r|g!n"), altsvc_vector));
5784 5786
5785 SpdyAltSvcIR altsvc_ir(1); 5787 SpdyAltSvcIR altsvc_ir(1);
5786 altsvc_ir.set_origin("o_r|g!n"); 5788 altsvc_ir.set_origin("o_r|g!n");
5787 altsvc_ir.add_altsvc(altsvc1); 5789 altsvc_ir.add_altsvc(altsvc1);
5788 altsvc_ir.add_altsvc(altsvc2); 5790 altsvc_ir.add_altsvc(altsvc2);
5789 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir)); 5791 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir));
5790 framer.ProcessInput(frame->data(), frame->size()); 5792 framer.ProcessInput(frame->data(), frame->size());
5791 5793
5792 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 5794 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
5793 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 5795 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
5794 << SpdyFramer::ErrorCodeToString(framer.error_code()); 5796 << SpdyFramer::ErrorCodeToString(framer.error_code());
5795 } 5797 }
5796 5798
5797 TEST_P(SpdyFramerTest, OnAltSvcNoOrigin) { 5799 TEST_P(SpdyFramerTest, OnAltSvcNoOrigin) {
5798 if (spdy_version_ <= SPDY3) { 5800 if (spdy_version_ <= SPDY3) {
5799 return; 5801 return;
5800 } 5802 }
5801 5803
5802 const SpdyStreamId kStreamId = 1; 5804 const SpdyStreamId kStreamId = 1;
5803 5805
5804 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 5806 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
5805 SpdyFramer framer(spdy_version_); 5807 SpdyFramer framer(spdy_version_);
5806 framer.set_visitor(&visitor); 5808 framer.set_visitor(&visitor);
5807 5809
5808 SpdyAltSvcWireFormat::AlternativeService altsvc1("pid1", "host", 443, 0, 5, 5810 SpdyAltSvcWireFormat::AlternativeService altsvc1(
5809 1.0); 5811 "pid1", "host", 443, 5, 1.0, SpdyAltSvcWireFormat::VersionVector());
5810 SpdyAltSvcWireFormat::AlternativeService altsvc2("p\"=i:d", "h_\\o\"st", 123, 5812 SpdyAltSvcWireFormat::AlternativeService altsvc2(
5811 24, 42, 0.2); 5813 "p\"=i:d", "h_\\o\"st", 123, 42, 0.2,
5814 SpdyAltSvcWireFormat::VersionVector{24});
5812 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; 5815 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
5813 altsvc_vector.push_back(altsvc1); 5816 altsvc_vector.push_back(altsvc1);
5814 altsvc_vector.push_back(altsvc2); 5817 altsvc_vector.push_back(altsvc2);
5815 EXPECT_CALL(visitor, OnAltSvc(kStreamId, StringPiece(""), altsvc_vector)); 5818 EXPECT_CALL(visitor, OnAltSvc(kStreamId, StringPiece(""), altsvc_vector));
5816 5819
5817 SpdyAltSvcIR altsvc_ir(1); 5820 SpdyAltSvcIR altsvc_ir(1);
5818 altsvc_ir.add_altsvc(altsvc1); 5821 altsvc_ir.add_altsvc(altsvc1);
5819 altsvc_ir.add_altsvc(altsvc2); 5822 altsvc_ir.add_altsvc(altsvc2);
5820 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir)); 5823 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir));
5821 framer.ProcessInput(frame->data(), frame->size()); 5824 framer.ProcessInput(frame->data(), frame->size());
5822 5825
5823 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 5826 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
5824 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 5827 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
5825 << SpdyFramer::ErrorCodeToString(framer.error_code()); 5828 << SpdyFramer::ErrorCodeToString(framer.error_code());
5826 } 5829 }
5827 5830
5828 TEST_P(SpdyFramerTest, OnAltSvcEmptyProtocolId) { 5831 TEST_P(SpdyFramerTest, OnAltSvcEmptyProtocolId) {
5829 if (spdy_version_ <= SPDY3) { 5832 if (spdy_version_ <= SPDY3) {
5830 return; 5833 return;
5831 } 5834 }
5832 5835
5833 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 5836 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
5834 SpdyFramer framer(spdy_version_); 5837 SpdyFramer framer(spdy_version_);
5835 framer.set_visitor(&visitor); 5838 framer.set_visitor(&visitor);
5836 5839
5837 EXPECT_CALL(visitor, OnError(testing::Eq(&framer))); 5840 EXPECT_CALL(visitor, OnError(testing::Eq(&framer)));
5838 5841
5839 SpdyAltSvcIR altsvc_ir(1); 5842 SpdyAltSvcIR altsvc_ir(1);
5840 altsvc_ir.set_origin("o1"); 5843 altsvc_ir.set_origin("o1");
5841 altsvc_ir.add_altsvc( 5844 altsvc_ir.add_altsvc(SpdyAltSvcWireFormat::AlternativeService(
5842 SpdyAltSvcWireFormat::AlternativeService("pid1", "host", 443, 0, 5, 1.0)); 5845 "pid1", "host", 443, 5, 1.0, SpdyAltSvcWireFormat::VersionVector()));
5843 altsvc_ir.add_altsvc( 5846 altsvc_ir.add_altsvc(SpdyAltSvcWireFormat::AlternativeService(
5844 SpdyAltSvcWireFormat::AlternativeService("", "h1", 443, 0, 10, 1.0)); 5847 "", "h1", 443, 10, 1.0, SpdyAltSvcWireFormat::VersionVector()));
5845 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir)); 5848 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir));
5846 framer.ProcessInput(frame->data(), frame->size()); 5849 framer.ProcessInput(frame->data(), frame->size());
5847 5850
5848 EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); 5851 EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state());
5849 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, framer.error_code()) 5852 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, framer.error_code())
5850 << SpdyFramer::ErrorCodeToString(framer.error_code()); 5853 << SpdyFramer::ErrorCodeToString(framer.error_code());
5851 } 5854 }
5852 5855
5853 TEST_P(SpdyFramerTest, OnAltSvcBadLengths) { 5856 TEST_P(SpdyFramerTest, OnAltSvcBadLengths) {
5854 if (spdy_version_ <= SPDY3) { 5857 if (spdy_version_ <= SPDY3) {
5855 return; 5858 return;
5856 } 5859 }
5857 5860
5858 const SpdyStreamId kStreamId = 1; 5861 const SpdyStreamId kStreamId = 1;
5859 5862
5860 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 5863 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
5861 SpdyFramer framer(spdy_version_); 5864 SpdyFramer framer(spdy_version_);
5862 framer.set_visitor(&visitor); 5865 framer.set_visitor(&visitor);
5863 5866
5864 SpdyAltSvcWireFormat::AlternativeService altsvc("pid", "h1", 443, 0, 10, 1.0); 5867 SpdyAltSvcWireFormat::AlternativeService altsvc(
5868 "pid", "h1", 443, 10, 1.0, SpdyAltSvcWireFormat::VersionVector());
5865 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector; 5869 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector;
5866 altsvc_vector.push_back(altsvc); 5870 altsvc_vector.push_back(altsvc);
5867 EXPECT_CALL(visitor, OnAltSvc(kStreamId, StringPiece("o1"), altsvc_vector)); 5871 EXPECT_CALL(visitor, OnAltSvc(kStreamId, StringPiece("o1"), altsvc_vector));
5868 5872
5869 SpdyAltSvcIR altsvc_ir(1); 5873 SpdyAltSvcIR altsvc_ir(1);
5870 altsvc_ir.set_origin("o1"); 5874 altsvc_ir.set_origin("o1");
5871 altsvc_ir.add_altsvc(altsvc); 5875 altsvc_ir.add_altsvc(altsvc);
5872 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir)); 5876 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(altsvc_ir));
5873 framer.ProcessInput(frame->data(), frame->size()); 5877 framer.ProcessInput(frame->data(), frame->size());
5874 5878
5875 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 5879 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
5876 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 5880 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
5877 << SpdyFramer::ErrorCodeToString(framer.error_code()); 5881 << SpdyFramer::ErrorCodeToString(framer.error_code());
5878 } 5882 }
5879 5883
5880 // Tests handling of ALTSVC frames delivered in small chunks. 5884 // Tests handling of ALTSVC frames delivered in small chunks.
5881 TEST_P(SpdyFramerTest, ReadChunkedAltSvcFrame) { 5885 TEST_P(SpdyFramerTest, ReadChunkedAltSvcFrame) {
5882 if (spdy_version_ <= SPDY3) { 5886 if (spdy_version_ <= SPDY3) {
5883 return; 5887 return;
5884 } 5888 }
5885 5889
5886 SpdyFramer framer(spdy_version_); 5890 SpdyFramer framer(spdy_version_);
5887 SpdyAltSvcIR altsvc_ir(1); 5891 SpdyAltSvcIR altsvc_ir(1);
5888 SpdyAltSvcWireFormat::AlternativeService altsvc1("pid1", "host", 443, 0, 5, 5892 SpdyAltSvcWireFormat::AlternativeService altsvc1(
5889 1.0); 5893 "pid1", "host", 443, 5, 1.0, SpdyAltSvcWireFormat::VersionVector());
5890 SpdyAltSvcWireFormat::AlternativeService altsvc2("p\"=i:d", "h_\\o\"st", 123, 5894 SpdyAltSvcWireFormat::AlternativeService altsvc2(
5891 24, 42, 0.2); 5895 "p\"=i:d", "h_\\o\"st", 123, 42, 0.2,
5896 SpdyAltSvcWireFormat::VersionVector{24});
5892 altsvc_ir.add_altsvc(altsvc1); 5897 altsvc_ir.add_altsvc(altsvc1);
5893 altsvc_ir.add_altsvc(altsvc2); 5898 altsvc_ir.add_altsvc(altsvc2);
5894 5899
5895 scoped_ptr<SpdyFrame> control_frame(framer.SerializeAltSvc(altsvc_ir)); 5900 scoped_ptr<SpdyFrame> control_frame(framer.SerializeAltSvc(altsvc_ir));
5896 TestSpdyVisitor visitor(spdy_version_); 5901 TestSpdyVisitor visitor(spdy_version_);
5897 visitor.use_compression_ = false; 5902 visitor.use_compression_ = false;
5898 5903
5899 // Read data in small chunks. 5904 // Read data in small chunks.
5900 size_t framed_data = 0; 5905 size_t framed_data = 0;
5901 size_t unframed_data = control_frame->size(); 5906 size_t unframed_data = control_frame->size();
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
6114 6119
6115 EXPECT_EQ(1, visitor->data_frame_count_); 6120 EXPECT_EQ(1, visitor->data_frame_count_);
6116 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); 6121 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_));
6117 EXPECT_EQ(0, visitor->headers_frame_count_); 6122 EXPECT_EQ(0, visitor->headers_frame_count_);
6118 } 6123 }
6119 } 6124 }
6120 6125
6121 } // namespace test 6126 } // namespace test
6122 6127
6123 } // namespace net 6128 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_alt_svc_wire_format_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698