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

Unified Diff: net/spdy/spdy_framer_test.cc

Issue 138803002: SPDY4: Turn SYN_STREAM and SYN_REPLY into HEADERS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Windows bool-cast fix. Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_network_transaction_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_framer_test.cc
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
index 3f0926cf8d451285fe419b8a7a3f529df0766b94..892a52b99a98cdde8cc573419eb984ed9378088e 100644
--- a/net/spdy/spdy_framer_test.cc
+++ b/net/spdy/spdy_framer_test.cc
@@ -968,13 +968,13 @@ TEST_P(SpdyFramerTest, DuplicateHeader) {
if (spdy_version_ < 4) {
frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
frame.WriteUInt32(3); // stream_id
+ frame.WriteUInt32(0); // associated stream id
+ frame.WriteUInt16(0); // Priority.
} else {
- frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3);
+ frame.WriteFramePrefix(framer, HEADERS, HEADERS_FLAG_PRIORITY, 3);
+ frame.WriteUInt32(framer.GetHighestPriority());
}
- frame.WriteUInt32(0); // associated stream id
- frame.WriteUInt16(0); // Priority.
-
if (IsSpdy2()) {
frame.WriteUInt16(2); // Number of headers.
frame.WriteString("name");
@@ -1009,13 +1009,13 @@ TEST_P(SpdyFramerTest, MultiValueHeader) {
if (spdy_version_ < 4) {
frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
frame.WriteUInt32(3); // stream_id
+ frame.WriteUInt32(0); // associated stream id
+ frame.WriteUInt16(0); // Priority.
} else {
- frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3);
+ frame.WriteFramePrefix(framer, HEADERS, HEADERS_FLAG_PRIORITY, 3);
+ frame.WriteUInt32(framer.GetHighestPriority());
}
- frame.WriteUInt32(0); // associated stream id
- frame.WriteUInt16(0); // Priority.
-
string value("value1\0value2");
if (IsSpdy2()) {
frame.WriteUInt16(1); // Number of headers.
@@ -1277,14 +1277,13 @@ TEST_P(SpdyFramerTest, Basic) {
};
const unsigned char kV4Input[] = {
- 0x00, 0x1e, 0x01, 0x00, // SYN_STREAM #1
+ 0x00, 0x1c, 0x08, 0x08, // SYN_STREAM #1
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x02, 'h', 'h',
+ 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
- 'v', 'v',
+ 'h', 'h', 0x00, 0x00,
+ 0x00, 0x02, 'v', 'v',
0x00, 0x24, 0x08, 0x00, // HEADERS on Stream #1
0x00, 0x00, 0x00, 0x01,
@@ -1302,11 +1301,10 @@ TEST_P(SpdyFramerTest, Basic) {
0xde, 0xad, 0xbe, 0xef,
0xde, 0xad, 0xbe, 0xef,
- 0x00, 0x12, 0x01, 0x00, // SYN Stream #3
+ 0x00, 0x10, 0x08, 0x08, // SYN Stream #3
0x00, 0x00, 0x00, 0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, // DATA on Stream #3
0x00, 0x00, 0x00, 0x03,
@@ -1407,16 +1405,15 @@ TEST_P(SpdyFramerTest, FinOnDataFrame) {
0xde, 0xad, 0xbe, 0xef,
};
const unsigned char kV4Input[] = {
- 0x00, 0x1e, 0x01, 0x00, // SYN_STREAM #1
+ 0x00, 0x1c, 0x08, 0x08, // SYN_STREAM #1
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x02, 'h', 'h',
+ 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
- 'v', 'v',
+ 'h', 'h', 0x00, 0x00,
+ 0x00, 0x02, 'v', 'v',
- 0x00, 0x18, 0x02, 0x00, // SYN REPLY Stream #1
+ 0x00, 0x18, 0x08, 0x00, // SYN REPLY Stream #1
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
@@ -1445,8 +1442,13 @@ TEST_P(SpdyFramerTest, FinOnDataFrame) {
EXPECT_EQ(0, visitor.error_count_);
EXPECT_EQ(1, visitor.syn_frame_count_);
- EXPECT_EQ(1, visitor.syn_reply_frame_count_);
- EXPECT_EQ(0, visitor.headers_frame_count_);
+ if (IsSpdy4()) {
+ EXPECT_EQ(0, visitor.syn_reply_frame_count_);
+ EXPECT_EQ(1, visitor.headers_frame_count_);
+ } else {
+ EXPECT_EQ(1, visitor.syn_reply_frame_count_);
+ EXPECT_EQ(0, visitor.headers_frame_count_);
+ }
EXPECT_EQ(16, visitor.data_bytes_);
EXPECT_EQ(0, visitor.fin_frame_count_);
EXPECT_EQ(0, visitor.fin_flag_count_);
@@ -1492,16 +1494,15 @@ TEST_P(SpdyFramerTest, FinOnSynReplyFrame) {
0x00, 0x02, 'b', 'b',
};
const unsigned char kV4Input[] = {
- 0x00, 0x1e, 0x01, 0x00, // SYN_STREAM #1
+ 0x00, 0x1c, 0x08, 0x08, // SYN_STREAM #1
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x02, 'h', 'h',
+ 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
- 'v', 'v',
+ 'h', 'h', 0x00, 0x00,
+ 0x00, 0x02, 'v', 'v',
- 0x00, 0x18, 0x02, 0x01, // SYN_REPLY #1, with FIN
+ 0x00, 0x18, 0x08, 0x01, // SYN_REPLY #1, with FIN
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
@@ -1520,8 +1521,13 @@ TEST_P(SpdyFramerTest, FinOnSynReplyFrame) {
EXPECT_EQ(0, visitor.error_count_);
EXPECT_EQ(1, visitor.syn_frame_count_);
- EXPECT_EQ(1, visitor.syn_reply_frame_count_);
- EXPECT_EQ(0, visitor.headers_frame_count_);
+ if (IsSpdy4()) {
+ EXPECT_EQ(0, visitor.syn_reply_frame_count_);
+ EXPECT_EQ(1, visitor.headers_frame_count_);
+ } else {
+ EXPECT_EQ(1, visitor.syn_reply_frame_count_);
+ EXPECT_EQ(0, visitor.headers_frame_count_);
+ }
EXPECT_EQ(0, visitor.data_bytes_);
EXPECT_EQ(0, visitor.fin_frame_count_);
EXPECT_EQ(1, visitor.fin_flag_count_);
@@ -1929,18 +1935,17 @@ TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) {
'a', 'r'
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x2e, 0x01, 0x00,
+ 0x00, 0x2c, 0x08, 0x08,
0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00,
- kPri, kCre, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x03, 'b', 'a',
- 'r', 0x00, 0x00, 0x00,
- 0x03, 'f', 'o', 'o',
+ 0x00, 0x00, 0x00, 0x07,
+ 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03,
- 'f', 'o', 'o', 0x00,
- 0x00, 0x00, 0x03, 'b',
- 'a', 'r'
+ 'b', 'a', 'r', 0x00,
+ 0x00, 0x00, 0x03, 'f',
+ 'o', 'o', 0x00, 0x00,
+ 0x00, 0x03, 'f', 'o',
+ 'o', 0x00, 0x00, 0x00,
+ 0x03, 'b', 'a', 'r'
};
scoped_ptr<SpdyFrame> frame(
framer.CreateSynStream(1, // stream id
@@ -1994,17 +1999,17 @@ TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) {
'b', 'a', 'r'
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x2b, 0x01, 0x01,
- 0x7f, 0xff, 0xff, 0xff,
+ 0x00, 0x29, 0x08, 0x09,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00,
- 0x00, 0x03, 'f', 'o',
- 'o', 0x00, 0x00, 0x00,
- 0x03, 'f', 'o', 'o',
0x00, 0x00, 0x00, 0x03,
- 'b', 'a', 'r'
+ 'f', 'o', 'o', 0x00,
+ 0x00, 0x00, 0x03, 'f',
+ 'o', 'o', 0x00, 0x00,
+ 0x00, 0x03, 'b', 'a',
+ 'r'
};
scoped_ptr<SpdyFrame> frame(
framer.CreateSynStream(0x7fffffff, // stream id
@@ -2059,17 +2064,17 @@ TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) {
0x00, 0x00, 0x00
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x2b, 0x01, 0x01,
- 0x7f, 0xff, 0xff, 0xff,
+ 0x00, 0x29, 0x08, 0x09,
0x7f, 0xff, 0xff, 0xff,
- kPri, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x03, 'b', 'a',
- 'r', 0x00, 0x00, 0x00,
- 0x03, 'f', 'o', 'o',
+ 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03,
- 'f', 'o', 'o', 0x00,
- 0x00, 0x00, 0x00
+ 'b', 'a', 'r', 0x00,
+ 0x00, 0x00, 0x03, 'f',
+ 'o', 'o', 0x00, 0x00,
+ 0x00, 0x03, 'f', 'o',
+ 'o', 0x00, 0x00, 0x00,
+ 0x00
};
scoped_ptr<SpdyFrame> frame(
framer.CreateSynStream(0x7fffffff, // stream id
@@ -2141,21 +2146,21 @@ TEST_P(SpdyFramerTest, CreateSynStreamCompressed) {
0x00, 0xFF, 0xFF,
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x3b, 0x01, 0x00,
+ 0x00, 0x39, 0x08, 0x08,
0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x38, 0xea,
- 0xe3, 0xc6, 0xa7, 0xc2,
- 0x02, 0xe5, 0x0e, 0x50,
- 0xc2, 0x4b, 0x4a, 0x04,
- 0xe5, 0x0b, 0x66, 0x80,
- 0x00, 0x4a, 0xcb, 0xcf,
- 0x07, 0x08, 0x20, 0x10,
- 0x95, 0x96, 0x9f, 0x0f,
- 0xa2, 0x00, 0x02, 0x28,
- 0x29, 0xb1, 0x08, 0x20,
- 0x80, 0x00, 0x00, 0x00,
- 0x00, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x04,
+ 0x38, 0xea, 0xe3, 0xc6,
+ 0xa7, 0xc2, 0x02, 0xe5,
+ 0x0e, 0x50, 0xc2, 0x4b,
+ 0x4a, 0x04, 0xe5, 0x0b,
+ 0x66, 0x80, 0x00, 0x4a,
+ 0xcb, 0xcf, 0x07, 0x08,
+ 0x20, 0x10, 0x95, 0x96,
+ 0x9f, 0x0f, 0xa2, 0x00,
+ 0x02, 0x28, 0x29, 0xb1,
+ 0x08, 0x20, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0xff,
+ 0xff,
};
scoped_ptr<SpdyFrame> frame(
framer.CreateSynStream(1, // stream id
@@ -2211,7 +2216,7 @@ TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) {
0x03, 'b', 'a', 'r'
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x28, 0x02, 0x00,
+ 0x00, 0x28, 0x08, 0x00,
0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03,
@@ -2266,7 +2271,7 @@ TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) {
'r'
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x25, 0x02, 0x01,
+ 0x00, 0x25, 0x08, 0x01,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00,
@@ -2321,7 +2326,7 @@ TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) {
0x00
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x25, 0x02, 0x01,
+ 0x00, 0x25, 0x08, 0x01,
0x7f, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x03,
@@ -2393,7 +2398,7 @@ TEST_P(SpdyFramerTest, CreateSynReplyCompressed) {
0xff,
};
const unsigned char kV4FrameData[] = {
- 0x00, 0x35, 0x02, 0x00,
+ 0x00, 0x35, 0x08, 0x00,
0x00, 0x00, 0x00, 0x01,
0x38, 0xea, 0xe3, 0xc6,
0xa7, 0xc2, 0x02, 0xe5,
@@ -3134,7 +3139,13 @@ TEST_P(SpdyFramerTest, ReadCompressedSynReplyHeaderBlock) {
visitor.SimulateInFramer(
reinterpret_cast<unsigned char*>(control_frame->data()),
control_frame->size());
- EXPECT_EQ(1, visitor.syn_reply_frame_count_);
+ if (IsSpdy4()) {
+ EXPECT_EQ(0, visitor.syn_reply_frame_count_);
+ EXPECT_EQ(1, visitor.headers_frame_count_);
+ } else {
+ EXPECT_EQ(1, visitor.syn_reply_frame_count_);
+ EXPECT_EQ(0, visitor.headers_frame_count_);
+ }
EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_));
}
@@ -4039,14 +4050,28 @@ TEST_P(SpdyFramerTest, SynStreamFrameFlags) {
headers["foo"] = "bar";
scoped_ptr<SpdyFrame> frame(
framer.CreateSynStream(8, 3, 1, 0, CONTROL_FLAG_NONE, &headers));
- SetFrameFlags(frame.get(), flags, spdy_version_);
+ int set_flags = flags;
+ if (IsSpdy4()) {
+ // PRIORITY required for SYN_STREAM simulation.
+ set_flags |= HEADERS_FLAG_PRIORITY;
+ }
+ SetFrameFlags(frame.get(), set_flags, spdy_version_);
- if (flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) {
+ if (!IsSpdy4() &&
+ flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) {
+ EXPECT_CALL(visitor, OnError(_));
+ } else if (IsSpdy4() &&
+ flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY)) {
EXPECT_CALL(visitor, OnError(_));
} else {
EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(8, SYN_STREAM, _));
- EXPECT_CALL(visitor, OnSynStream(8, 3, 1, 0, flags & CONTROL_FLAG_FIN,
- flags & CONTROL_FLAG_UNIDIRECTIONAL));
+ if (IsSpdy4()) {
+ EXPECT_CALL(visitor, OnSynStream(8, 0, 1, 0, flags & CONTROL_FLAG_FIN,
+ false));
+ } else {
+ EXPECT_CALL(visitor, OnSynStream(8, 3, 1, 0, flags & CONTROL_FLAG_FIN,
+ flags & CONTROL_FLAG_UNIDIRECTIONAL));
+ }
EXPECT_CALL(visitor, OnControlFrameHeaderData(8, _, _))
.WillRepeatedly(testing::Return(true));
if (flags & DATA_FLAG_FIN) {
@@ -4055,7 +4080,14 @@ TEST_P(SpdyFramerTest, SynStreamFrameFlags) {
}
framer.ProcessInput(frame->data(), frame->size());
- if (flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) {
+ if (!IsSpdy4() &&
+ flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) {
+ EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state());
+ EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS,
+ framer.error_code())
+ << SpdyFramer::ErrorCodeToString(framer.error_code());
+ } else if (IsSpdy4() &&
+ flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY)) {
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state());
EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS,
framer.error_code())
@@ -4069,6 +4101,10 @@ TEST_P(SpdyFramerTest, SynStreamFrameFlags) {
}
TEST_P(SpdyFramerTest, SynReplyFrameFlags) {
+ if (IsSpdy4()) {
+ // Covered by HEADERS case.
+ return;
+ }
for (int flags = 0; flags < 256; ++flags) {
SCOPED_TRACE(testing::Message() << "Flags " << flags);
@@ -4208,6 +4244,10 @@ TEST_P(SpdyFramerTest, GoawayFrameFlags) {
TEST_P(SpdyFramerTest, HeadersFrameFlags) {
for (int flags = 0; flags < 256; ++flags) {
+ if (IsSpdy4() && flags & HEADERS_FLAG_PRIORITY) {
+ // Covered by SYN_STREAM case.
+ continue;
+ }
SCOPED_TRACE(testing::Message() << "Flags " << flags);
testing::StrictMock<test::MockVisitor> visitor;
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698