Index: net/spdy/spdy_framer_test.cc |
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc |
index 8542835b67fdc00e256998568be205f6c14f5de7..85551639412e4370be15fb542ebf1563c8cdc144 100644 |
--- a/net/spdy/spdy_framer_test.cc |
+++ b/net/spdy/spdy_framer_test.cc |
@@ -35,14 +35,16 @@ static const size_t kMaxDecompressedSize = 1024; |
class MockDebugVisitor : public SpdyFramerDebugVisitorInterface { |
public: |
- MOCK_METHOD4(OnSendCompressedFrame, void(SpdyStreamId stream_id, |
- SpdyFrameType type, |
- size_t payload_len, |
- size_t frame_len)); |
- |
- MOCK_METHOD3(OnReceiveCompressedFrame, void(SpdyStreamId stream_id, |
- SpdyFrameType type, |
- size_t frame_len)); |
+ MOCK_METHOD4(OnSendCompressedFrame, |
+ void(SpdyStreamId stream_id, |
+ SpdyFrameType type, |
+ size_t payload_len, |
+ size_t frame_len)); |
+ |
+ MOCK_METHOD3(OnReceiveCompressedFrame, |
+ void(SpdyStreamId stream_id, |
+ SpdyFrameType type, |
+ size_t frame_len)); |
}; |
class SpdyFramerTestUtil { |
@@ -53,8 +55,9 @@ class SpdyFramerTestUtil { |
// well-formed compressed frame. |
// |
// Returns a new decompressed SpdyFrame. |
- template<class SpdyFrameType> static SpdyFrame* DecompressFrame( |
- SpdyFramer* framer, const SpdyFrameType& frame) { |
+ template <class SpdyFrameType> |
+ static SpdyFrame* DecompressFrame(SpdyFramer* framer, |
+ const SpdyFrameType& frame) { |
DecompressionVisitor visitor(framer->protocol_version()); |
framer->set_visitor(&visitor); |
CHECK_EQ(frame.size(), framer->ProcessInput(frame.data(), frame.size())); |
@@ -227,39 +230,38 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface, |
static const size_t kDefaultHeaderBufferSize = 16 * 1024 * 1024; |
explicit TestSpdyVisitor(SpdyMajorVersion version) |
- : framer_(version), |
- use_compression_(false), |
- error_count_(0), |
- syn_frame_count_(0), |
- syn_reply_frame_count_(0), |
- headers_frame_count_(0), |
- push_promise_frame_count_(0), |
- goaway_count_(0), |
- setting_count_(0), |
- settings_ack_sent_(0), |
- settings_ack_received_(0), |
- continuation_count_(0), |
- last_window_update_stream_(0), |
- last_window_update_delta_(0), |
- last_push_promise_stream_(0), |
- last_push_promise_promised_stream_(0), |
- data_bytes_(0), |
- fin_frame_count_(0), |
- fin_opaque_data_(), |
- fin_flag_count_(0), |
- zero_length_data_frame_count_(0), |
- control_frame_header_data_count_(0), |
- zero_length_control_frame_header_data_count_(0), |
- data_frame_count_(0), |
- last_payload_len_(0), |
- last_frame_len_(0), |
- header_buffer_(new char[kDefaultHeaderBufferSize]), |
- header_buffer_length_(0), |
- header_buffer_size_(kDefaultHeaderBufferSize), |
- header_stream_id_(-1), |
- header_control_type_(DATA), |
- header_buffer_valid_(false) { |
- } |
+ : framer_(version), |
+ use_compression_(false), |
+ error_count_(0), |
+ syn_frame_count_(0), |
+ syn_reply_frame_count_(0), |
+ headers_frame_count_(0), |
+ push_promise_frame_count_(0), |
+ goaway_count_(0), |
+ setting_count_(0), |
+ settings_ack_sent_(0), |
+ settings_ack_received_(0), |
+ continuation_count_(0), |
+ last_window_update_stream_(0), |
+ last_window_update_delta_(0), |
+ last_push_promise_stream_(0), |
+ last_push_promise_promised_stream_(0), |
+ data_bytes_(0), |
+ fin_frame_count_(0), |
+ fin_opaque_data_(), |
+ fin_flag_count_(0), |
+ zero_length_data_frame_count_(0), |
+ control_frame_header_data_count_(0), |
+ zero_length_control_frame_header_data_count_(0), |
+ data_frame_count_(0), |
+ last_payload_len_(0), |
+ last_frame_len_(0), |
+ header_buffer_(new char[kDefaultHeaderBufferSize]), |
+ header_buffer_length_(0), |
+ header_buffer_size_(kDefaultHeaderBufferSize), |
+ header_stream_id_(-1), |
+ header_control_type_(DATA), |
+ header_buffer_valid_(false) {} |
virtual void OnError(SpdyFramer* f) OVERRIDE { |
LOG(INFO) << "SpdyFramer Error: " |
@@ -285,7 +287,7 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface, |
data_bytes_ += len; |
std::cerr << "OnStreamFrameData(" << stream_id << ", \""; |
if (len > 0) { |
- for (size_t i = 0 ; i < len; ++i) { |
+ for (size_t i = 0; i < len; ++i) { |
std::cerr << std::hex << (0xFF & (unsigned int)data[i]) << std::dec; |
} |
} |
@@ -364,7 +366,9 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface, |
} |
virtual void OnSettingsEnd() OVERRIDE { |
- if (framer_.protocol_version() <= SPDY3) { return; } |
+ if (framer_.protocol_version() <= SPDY3) { |
+ return; |
+ } |
++settings_ack_sent_; |
} |
@@ -430,8 +434,7 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface, |
// into the framer. This simulates getting strange-sized reads from |
// the socket. |
const size_t kMaxReadSize = 32; |
- size_t bytes_read = |
- (rand() % min(input_remaining, kMaxReadSize)) + 1; |
+ size_t bytes_read = (rand() % min(input_remaining, kMaxReadSize)) + 1; |
size_t bytes_processed = framer_.ProcessInput(input_ptr, bytes_read); |
input_remaining -= bytes_processed; |
input_ptr += bytes_processed; |
@@ -522,8 +525,7 @@ base::StringPiece GetSerializedHeaders(const SpdyFrame* frame, |
reader.ReadUInt16(&serialized_type); |
frame_type = SpdyConstants::ParseFrameType(framer.protocol_version(), |
serialized_type); |
- DCHECK(frame_type == HEADERS || |
- frame_type == SYN_STREAM) << frame_type; |
+ DCHECK(frame_type == HEADERS || frame_type == SYN_STREAM) << frame_type; |
} |
if (frame_type == SYN_STREAM) { |
@@ -634,13 +636,12 @@ TEST_P(SpdyFramerTest, HeaderBlockInBuffer) { |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
- visitor.SimulateInFramer( |
- reinterpret_cast<unsigned char*>(frame->data()), |
- frame->size()); |
+ visitor.SimulateInFramer(reinterpret_cast<unsigned char*>(frame->data()), |
+ frame->size()); |
EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); |
- EXPECT_TRUE(CompareHeaderBlocks(&syn_stream.name_value_block(), |
- &visitor.headers_)); |
+ EXPECT_TRUE( |
+ CompareHeaderBlocks(&syn_stream.name_value_block(), &visitor.headers_)); |
} |
// Test that if there's not a full frame, we fail to parse it. |
@@ -658,9 +659,8 @@ TEST_P(SpdyFramerTest, UndersizedHeaderBlockInBuffer) { |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
- visitor.SimulateInFramer( |
- reinterpret_cast<unsigned char*>(frame->data()), |
- frame->size() - 2); |
+ visitor.SimulateInFramer(reinterpret_cast<unsigned char*>(frame->data()), |
+ frame->size() - 2); |
EXPECT_EQ(0, visitor.zero_length_control_frame_header_data_count_); |
EXPECT_EQ(0u, visitor.headers_.size()); |
@@ -745,7 +745,7 @@ TEST_P(SpdyFramerTest, PushPromiseWithPromisedStreamIdZero) { |
SpdyPushPromiseIR push_promise(3, 0); |
push_promise.SetHeader("alpha", "beta"); |
scoped_ptr<SpdySerializedFrame> frame( |
- framer.SerializePushPromise(push_promise)); |
+ framer.SerializePushPromise(push_promise)); |
ASSERT_TRUE(frame.get() != NULL); |
// We shouldn't have to read the whole frame before we signal an error. |
@@ -798,9 +798,8 @@ TEST_P(SpdyFramerTest, DuplicateHeader) { |
base::StringPiece serialized_headers = |
GetSerializedHeaders(control_frame.get(), framer); |
// This should fail because duplicate headers are verboten by the spec. |
- EXPECT_FALSE(framer.ParseHeaderBlockInBuffer(serialized_headers.data(), |
- serialized_headers.size(), |
- &new_headers)); |
+ EXPECT_FALSE(framer.ParseHeaderBlockInBuffer( |
+ serialized_headers.data(), serialized_headers.size(), &new_headers)); |
} |
TEST_P(SpdyFramerTest, MultiValueHeader) { |
@@ -813,10 +812,8 @@ TEST_P(SpdyFramerTest, MultiValueHeader) { |
frame.WriteUInt32(0); // associated stream id |
frame.WriteUInt16(0); // Priority. |
} else { |
- frame.BeginNewFrame(framer, |
- HEADERS, |
- HEADERS_FLAG_PRIORITY | HEADERS_FLAG_END_HEADERS, |
- 3); |
+ frame.BeginNewFrame( |
+ framer, HEADERS, HEADERS_FLAG_PRIORITY | HEADERS_FLAG_END_HEADERS, 3); |
frame.WriteUInt32(framer.GetHighestPriority()); |
} |
@@ -850,8 +847,7 @@ TEST_P(SpdyFramerTest, MultiValueHeader) { |
reinterpret_cast<unsigned char*>(control_frame->data()), |
control_frame->size()); |
- EXPECT_THAT(visitor.headers_, ElementsAre( |
- Pair("name", value))); |
+ EXPECT_THAT(visitor.headers_, ElementsAre(Pair("name", value))); |
} |
TEST_P(SpdyFramerTest, BasicCompression) { |
@@ -878,14 +874,14 @@ TEST_P(SpdyFramerTest, BasicCompression) { |
EXPECT_EQ(139u, uncompressed_size1); |
#if defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(155u, compressed_size1); |
-#else // !defined(USE_SYSTEM_ZLIB) |
+#else // !defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(135u, compressed_size1); |
#endif // !defined(USE_SYSTEM_ZLIB) |
} else { |
EXPECT_EQ(165u, uncompressed_size1); |
#if defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(181u, compressed_size1); |
-#else // !defined(USE_SYSTEM_ZLIB) |
+#else // !defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(117u, compressed_size1); |
#endif // !defined(USE_SYSTEM_ZLIB) |
} |
@@ -898,30 +894,29 @@ TEST_P(SpdyFramerTest, BasicCompression) { |
EXPECT_LE(frame2->size(), frame1->size()); |
// Decompress the first frame |
- scoped_ptr<SpdyFrame> frame3(SpdyFramerTestUtil::DecompressFrame( |
- &framer, *frame1.get())); |
+ scoped_ptr<SpdyFrame> frame3( |
+ SpdyFramerTestUtil::DecompressFrame(&framer, *frame1.get())); |
// Decompress the second frame |
visitor.reset(new TestSpdyVisitor(spdy_version_)); |
framer.set_debug_visitor(visitor.get()); |
- scoped_ptr<SpdyFrame> frame4(SpdyFramerTestUtil::DecompressFrame( |
- &framer, *frame2.get())); |
- size_t uncompressed_size4 = |
- frame4->size() - framer.GetSynStreamMinimumSize(); |
+ scoped_ptr<SpdyFrame> frame4( |
+ SpdyFramerTestUtil::DecompressFrame(&framer, *frame2.get())); |
+ size_t uncompressed_size4 = frame4->size() - framer.GetSynStreamMinimumSize(); |
size_t compressed_size4 = |
visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); |
if (IsSpdy2()) { |
EXPECT_EQ(139u, uncompressed_size4); |
#if defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(149u, compressed_size4); |
-#else // !defined(USE_SYSTEM_ZLIB) |
+#else // !defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(101u, compressed_size4); |
#endif // !defined(USE_SYSTEM_ZLIB) |
} else { |
EXPECT_EQ(165u, uncompressed_size4); |
#if defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(175u, compressed_size4); |
-#else // !defined(USE_SYSTEM_ZLIB) |
+#else // !defined(USE_SYSTEM_ZLIB) |
EXPECT_EQ(102u, compressed_size4); |
#endif // !defined(USE_SYSTEM_ZLIB) |
} |
@@ -959,162 +954,130 @@ TEST_P(SpdyFramerTest, CompressEmptyHeaders) { |
TEST_P(SpdyFramerTest, Basic) { |
const unsigned char kV2Input[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
- 0x00, 0x00, 0x00, 0x14, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x02, 'h', 'h', |
- 0x00, 0x02, 'v', 'v', |
- |
- 0x80, spdy_version_ch_, 0x00, 0x08, // HEADERS on Stream #1 |
- 0x00, 0x00, 0x00, 0x18, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x02, 'h', '2', |
- 0x00, 0x02, 'v', '2', |
- 0x00, 0x02, 'h', '3', |
- 0x00, 0x02, 'v', '3', |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x0c, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #3 |
- 0x00, 0x00, 0x00, 0x0c, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- |
- 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
- 0x00, 0x00, 0x00, 0x08, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x04, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #1 |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
- |
- 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
- 0x00, 0x00, 0x00, 0x00, |
- |
- 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #3 |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
+ 0x00, 0x00, 0x00, 0x14, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x02, 'h', 'h', |
+ 0x00, 0x02, 'v', 'v', |
+ 0x80, spdy_version_ch_, 0x00, 0x08, // HEADERS on Stream #1 |
+ 0x00, 0x00, 0x00, 0x18, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x02, |
+ 0x00, 0x02, 'h', '2', |
+ 0x00, 0x02, 'v', '2', |
+ 0x00, 0x02, 'h', '3', |
+ 0x00, 0x02, 'v', '3', |
+ 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x0c, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #3 |
+ 0x00, 0x00, 0x00, 0x0c, |
+ 0x00, 0x00, 0x00, 0x03, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x04, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #1 |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
+ 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #3 |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0x00, 0x00, 0x00, 0x03, |
+ 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
}; |
const unsigned char kV3Input[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
- 0x00, 0x00, 0x00, 0x1a, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x01, 0x00, 0x00, |
- 0x00, 0x02, 'h', 'h', |
- 0x00, 0x00, 0x00, 0x02, |
- 'v', 'v', |
- |
- 0x80, spdy_version_ch_, 0x00, 0x08, // HEADERS on Stream #1 |
- 0x00, 0x00, 0x00, 0x20, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x02, |
- 'h', '2', |
- 0x00, 0x00, 0x00, 0x02, |
- 'v', '2', 0x00, 0x00, |
- 0x00, 0x02, 'h', '3', |
- 0x00, 0x00, 0x00, 0x02, |
- 'v', '3', |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x0c, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #3 |
- 0x00, 0x00, 0x00, 0x0e, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, |
- |
- 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
- 0x00, 0x00, 0x00, 0x08, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x04, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #1 |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
- |
- 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
- 0x00, 0x00, 0x00, 0x00, |
- |
- 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #3 |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
+ 0x00, 0x00, 0x00, 0x1a, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x02, 'h', 'h', |
+ 0x00, 0x00, 0x00, 0x02, |
+ 'v', 'v', 0x80, spdy_version_ch_, |
+ 0x00, 0x08, // HEADERS on Stream #1 |
+ 0x00, 0x00, 0x00, 0x20, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x02, |
+ 0x00, 0x00, 0x00, 0x02, |
+ 'h', '2', 0x00, 0x00, |
+ 0x00, 0x02, 'v', '2', |
+ 0x00, 0x00, 0x00, 0x02, |
+ 'h', '3', 0x00, 0x00, |
+ 0x00, 0x02, 'v', '3', |
+ 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x0c, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #3 |
+ 0x00, 0x00, 0x00, 0x0e, |
+ 0x00, 0x00, 0x00, 0x03, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x03, // DATA on Stream #3 |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x04, |
+ 0xde, 0xad, 0xbe, 0xef, |
+ 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #1 |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
+ 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #3 |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0x00, 0x00, 0x00, 0x03, |
+ 0x00, 0x00, 0x00, 0x05, // RST_STREAM_CANCEL |
}; |
// SYN_STREAM doesn't exist in SPDY4, so instead we send |
// HEADERS frames with PRIORITY and END_HEADERS set. |
const unsigned char kV4Input[] = { |
- 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x00, 0x00, 0x00, 0x00, // Priority 0 |
- 0x82, // :method: GET |
- |
- 0x00, 0x01, 0x01, 0x04, // HEADERS: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x8c, // :status: 200 |
- |
- 0x00, 0x0c, 0x00, 0x00, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x01, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
- 0x00, 0x00, 0x00, 0x03, // Stream 3 |
- 0x00, 0x00, 0x00, 0x00, // Priority 0 |
- 0x82, // :method: GET |
- |
- 0x00, 0x08, 0x00, 0x00, // DATA on Stream #3 |
- 0x00, 0x00, 0x00, 0x03, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x04, 0x00, 0x00, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x01, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x04, 0x03, 0x00, // RST_STREAM on Stream #1 |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x08, // RST_STREAM_CANCEL |
- |
- 0x00, 0x00, 0x00, 0x00, // DATA on Stream #3 |
- 0x00, 0x00, 0x00, 0x03, |
- |
- 0x00, 0x0f, 0x03, 0x00, // RST_STREAM on Stream #3 |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x08, // RST_STREAM_CANCEL |
- 0x52, 0x45, 0x53, 0x45, // opaque data |
- 0x54, 0x53, 0x54, 0x52, |
- 0x45, 0x41, 0x4d, |
+ 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x00, 0x00, 0x00, 0x00, // Priority 0 |
+ 0x82, // :method: GET |
+ 0x00, 0x01, 0x01, 0x04, // HEADERS: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x8c, // :status: 200 |
+ 0x00, 0x0c, 0x00, 0x00, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x01, 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, |
+ 0xef, 0xde, 0xad, 0xbe, 0xef, 0x00, 0x05, 0x01, 0x0c, // HEADERS: |
+ // PRIORITY | |
+ // END_HEADERS |
+ 0x00, 0x00, 0x00, 0x03, // Stream 3 |
+ 0x00, 0x00, 0x00, 0x00, // Priority 0 |
+ 0x82, // :method: GET |
+ 0x00, 0x08, 0x00, 0x00, // DATA on Stream #3 |
+ 0x00, 0x00, 0x00, 0x03, 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, |
+ 0xef, 0x00, 0x04, 0x00, 0x00, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x01, 0xde, 0xad, 0xbe, 0xef, 0x00, 0x04, 0x03, |
+ 0x00, // RST_STREAM on Stream #1 |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, // RST_STREAM_CANCEL |
+ 0x00, 0x00, 0x00, 0x00, // DATA on Stream #3 |
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x0f, 0x03, 0x00, // RST_STREAM on Stream |
+ // #3 |
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, // RST_STREAM_CANCEL |
+ 0x52, 0x45, 0x53, 0x45, // opaque data |
+ 0x54, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
@@ -1150,82 +1113,55 @@ TEST_P(SpdyFramerTest, Basic) { |
// Test that the FIN flag on a data frame signifies EOF. |
TEST_P(SpdyFramerTest, FinOnDataFrame) { |
const unsigned char kV2Input[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
- 0x00, 0x00, 0x00, 0x14, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x02, 'h', 'h', |
- 0x00, 0x02, 'v', 'v', |
- |
- 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
- 0x00, 0x00, 0x00, 0x10, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x02, 'a', 'a', |
- 0x00, 0x02, 'b', 'b', |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x0c, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1, with EOF |
- 0x01, 0x00, 0x00, 0x04, |
- 0xde, 0xad, 0xbe, 0xef, |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
+ 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, |
+ 'h', 'h', 0x00, 0x02, 'v', 'v', |
+ 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x02, 'a', 'a', 0x00, 0x02, |
+ 'b', 'b', 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x0c, 0xde, 0xad, |
+ 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, 0x00, 0x00, |
+ 0x00, 0x01, // DATA on Stream #1, with EOF |
+ 0x01, 0x00, 0x00, 0x04, 0xde, 0xad, |
+ 0xbe, 0xef, |
}; |
const unsigned char kV3Input[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
- 0x00, 0x00, 0x00, 0x1a, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x01, 0x00, 0x00, |
- 0x00, 0x02, 'h', 'h', |
- 0x00, 0x00, 0x00, 0x02, |
- 'v', 'v', |
- |
- 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
- 0x00, 0x00, 0x00, 0x14, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 'a', 'a', 0x00, 0x00, |
- 0x00, 0x02, 'b', 'b', |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x0c, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1, with EOF |
- 0x01, 0x00, 0x00, 0x04, |
- 0xde, 0xad, 0xbe, 0xef, |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
+ 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 'h', 'h', |
+ 0x00, 0x00, 0x00, 0x02, 'v', 'v', 0x80, spdy_version_ch_, |
+ 0x00, 0x02, // SYN REPLY Stream #1 |
+ 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, |
+ 'a', 'a', 0x00, 0x00, 0x00, 0x02, 'b', 'b', |
+ 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x0c, 0xde, 0xad, 0xbe, 0xef, |
+ 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef, |
+ 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1, with EOF |
+ 0x01, 0x00, 0x00, 0x04, 0xde, 0xad, 0xbe, 0xef, |
}; |
// SYN_STREAM and SYN_REPLY don't exist in SPDY4, so instead we send |
// HEADERS frames with PRIORITY(SYN_STREAM only) and END_HEADERS set. |
const unsigned char kV4Input[] = { |
- 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x00, 0x00, 0x00, 0x00, // Priority 0 |
- 0x82, // :method: GET |
- |
- 0x00, 0x01, 0x01, 0x04, // HEADERS: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x8c, // :status: 200 |
- |
- 0x00, 0x0c, 0x00, 0x00, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x01, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- 0xde, 0xad, 0xbe, 0xef, |
- |
- 0x00, 0x04, 0x00, 0x01, // DATA on Stream #1, with FIN |
- 0x00, 0x00, 0x00, 0x01, |
- 0xde, 0xad, 0xbe, 0xef, |
+ 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x00, 0x00, 0x00, 0x00, // Priority 0 |
+ 0x82, // :method: GET |
+ 0x00, 0x01, 0x01, 0x04, // HEADERS: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x8c, // :status: 200 |
+ 0x00, 0x0c, 0x00, 0x00, // DATA on Stream #1 |
+ 0x00, 0x00, 0x00, 0x01, 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, |
+ 0xef, 0xde, 0xad, 0xbe, 0xef, 0x00, 0x04, 0x00, 0x01, // DATA on Stream |
+ // #1, with FIN |
+ 0x00, 0x00, 0x00, 0x01, 0xde, 0xad, 0xbe, 0xef, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
@@ -1256,52 +1192,36 @@ TEST_P(SpdyFramerTest, FinOnDataFrame) { |
// Test that the FIN flag on a SYN reply frame signifies EOF. |
TEST_P(SpdyFramerTest, FinOnSynReplyFrame) { |
const unsigned char kV2Input[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
- 0x00, 0x00, 0x00, 0x14, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x02, 'h', 'h', |
- 0x00, 0x02, 'v', 'v', |
- |
- 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
- 0x01, 0x00, 0x00, 0x10, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x02, 'a', 'a', |
- 0x00, 0x02, 'b', 'b', |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
+ 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x02, 'h', 'h', 0x00, 0x02, 'v', 'v', |
+ 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
+ 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 'a', 'a', |
+ 0x00, 0x02, 'b', 'b', |
}; |
const unsigned char kV3Input[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
- 0x00, 0x00, 0x00, 0x1a, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x01, 0x00, 0x00, |
- 0x00, 0x02, 'h', 'h', |
- 0x00, 0x00, 0x00, 0x02, |
- 'v', 'v', |
- |
- 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
- 0x01, 0x00, 0x00, 0x14, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 'a', 'a', 0x00, 0x00, |
- 0x00, 0x02, 'b', 'b', |
+ 0x80, spdy_version_ch_, 0x00, 0x01, // SYN Stream #1 |
+ 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x02, 'h', 'h', 0x00, 0x00, 0x00, 0x02, 'v', 'v', |
+ 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 |
+ 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 'a', 'a', 0x00, 0x00, |
+ 0x00, 0x02, 'b', 'b', |
}; |
// SYN_STREAM and SYN_REPLY don't exist in SPDY4, so instead we send |
// HEADERS frames with PRIORITY(SYN_STREAM only) and END_HEADERS set. |
const unsigned char kV4Input[] = { |
- 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x00, 0x00, 0x00, 0x00, // Priority 0 |
- 0x82, // :method: GET |
- |
- 0x00, 0x01, 0x01, 0x05, // HEADERS: FIN | END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x8c, // :status: 200 |
+ 0x00, 0x05, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x00, 0x00, 0x00, 0x00, // Priority 0 |
+ 0x82, // :method: GET |
+ 0x00, 0x01, 0x01, 0x05, // HEADERS: FIN | END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x8c, // :status: 200 |
}; |
TestSpdyVisitor visitor(spdy_version_); |
@@ -1370,8 +1290,8 @@ TEST_P(SpdyFramerTest, HeaderCompression) { |
SpdyHeaderBlock decompressed_headers; |
// Decompress SYN_STREAM #1 |
- decompressed.reset(SpdyFramerTestUtil::DecompressFrame( |
- &recv_framer, *syn_frame_1.get())); |
+ decompressed.reset( |
+ SpdyFramerTestUtil::DecompressFrame(&recv_framer, *syn_frame_1.get())); |
EXPECT_TRUE(decompressed.get() != NULL); |
serialized_headers = GetSerializedHeaders(decompressed.get(), send_framer); |
EXPECT_TRUE(recv_framer.ParseHeaderBlockInBuffer(serialized_headers.data(), |
@@ -1382,8 +1302,8 @@ TEST_P(SpdyFramerTest, HeaderCompression) { |
EXPECT_EQ(kValue2, decompressed_headers[kHeader2]); |
// Decompress SYN_STREAM #2 |
- decompressed.reset(SpdyFramerTestUtil::DecompressFrame( |
- &recv_framer, *syn_frame_2.get())); |
+ decompressed.reset( |
+ SpdyFramerTestUtil::DecompressFrame(&recv_framer, *syn_frame_2.get())); |
EXPECT_TRUE(decompressed.get() != NULL); |
serialized_headers = GetSerializedHeaders(decompressed.get(), send_framer); |
decompressed_headers.clear(); |
@@ -1491,21 +1411,16 @@ TEST_P(SpdyFramerTest, UnclosedStreamDataCompressorsOneByteAtATime) { |
TEST_P(SpdyFramerTest, WindowUpdateFrame) { |
SpdyFramer framer(spdy_version_); |
- scoped_ptr<SpdyFrame> frame(framer.SerializeWindowUpdate( |
- SpdyWindowUpdateIR(1, 0x12345678))); |
+ scoped_ptr<SpdyFrame> frame( |
+ framer.SerializeWindowUpdate(SpdyWindowUpdateIR(1, 0x12345678))); |
const char kDescription[] = "WINDOW_UPDATE frame, stream 1, delta 0x12345678"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x09, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x12, 0x34, 0x56, 0x78 |
- }; |
- const unsigned char kV4FrameData[] = { |
- 0x00, 0x04, 0x08, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x12, 0x34, 0x56, 0x78 |
- }; |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, |
+ 0x00, 0x01, 0x12, 0x34, 0x56, 0x78}; |
+ const unsigned char kV4FrameData[] = {0x00, 0x04, 0x08, 0x00, 0x00, 0x00, |
+ 0x00, 0x01, 0x12, 0x34, 0x56, 0x78}; |
if (IsSpdy4()) { |
CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
@@ -1519,34 +1434,26 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
{ |
const char kDescription[] = "'hello' data frame, no FIN"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x05, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
- const unsigned char kV4FrameData[] = { |
- 0x00, 0x05, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
+ const unsigned char kV3FrameData[] = {// Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x05, 'h', 'e', 'l', 'l', 'o'}; |
+ const unsigned char kV4FrameData[] = {0x00, 0x05, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x01, 'h', 'e', |
+ 'l', 'l', 'o'}; |
const char bytes[] = "hello"; |
SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
SpdyDataIR data_header_ir(1); |
data_header_ir.SetDataShallow(base::StringPiece(bytes, strlen(bytes))); |
- frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField( |
- data_header_ir)); |
+ frame.reset( |
+ framer.SerializeDataFrameHeaderWithPaddingLengthField(data_header_ir)); |
CompareCharArraysWithHexError( |
kDescription, |
reinterpret_cast<const unsigned char*>(frame->data()), |
@@ -1557,40 +1464,36 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
{ |
const char kDescription[] = "'hello' data frame with more padding, no FIN"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x05, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
+ const unsigned char kV3FrameData[] = {// Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x05, 'h', 'e', 'l', 'l', 'o'}; |
const unsigned char kV4FrameData[] = { |
- 0x01, 0x0b, 0x00, 0x30, // Length = 267. PAD_HIGH and PAD_LOW set. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x01, 0x04, // Pad Low and Pad High fields. |
- 'h', 'e', 'l', 'l', // Data |
- 'o', |
- // Padding of 260 zeros (so both PAD_HIGH and PAD_LOW fields are used). |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
- '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ 0x01, 0x0b, 0x00, 0x30, // Length = 267. PAD_HIGH and PAD_LOW set. |
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x04, // Pad Low and Pad High fields. |
+ 'h', 'e', 'l', 'l', // Data |
+ 'o', |
+ // Padding of 260 zeros (so both PAD_HIGH and PAD_LOW fields are used). |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
+ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', |
}; |
const char bytes[] = "hello"; |
@@ -1600,11 +1503,9 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
data_ir.set_padding_len(262); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir)); |
@@ -1618,22 +1519,17 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
{ |
const char kDescription[] = "'hello' data frame with few padding, no FIN"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x05, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
+ const unsigned char kV3FrameData[] = {// Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x05, 'h', 'e', 'l', 'l', 'o'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0d, 0x00, 0x10, // Length = 13. PAD_LOW set. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x07, // Pad Low field. |
- 'h', 'e', 'l', 'l', // Data |
- 'o', |
- '0', '0', '0', '0', // Padding |
- '0', '0', '0' |
- }; |
+ 0x00, 0x0d, 0x00, 0x10, // Length = 13. PAD_LOW set. |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x07, // Pad Low field. |
+ 'h', 'e', 'l', 'l', // Data |
+ 'o', '0', '0', '0', '0', // Padding |
+ '0', '0', '0'}; |
const char bytes[] = "hello"; |
SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); |
@@ -1641,30 +1537,25 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
data_ir.set_padding_len(8); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
} |
{ |
const char kDescription[] = |
"'hello' data frame with 1 byte padding, no FIN"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x05, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
+ const unsigned char kV3FrameData[] = {// Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x05, 'h', 'e', 'l', 'l', 'o'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x06, 0x00, 0x10, // Length = 6. PAD_LOW set. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, // Pad Low field. |
- 'h', 'e', 'l', 'l', // Data |
- 'o', |
+ 0x00, 0x06, 0x00, 0x10, // Length = 6. PAD_LOW set. |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, // Pad Low field. |
+ 'h', 'e', 'l', 'l', // Data |
+ 'o', |
}; |
const char bytes[] = "hello"; |
@@ -1674,11 +1565,9 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
data_ir.set_padding_len(1); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir)); |
@@ -1692,71 +1581,53 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
{ |
const char kDescription[] = "Data frame with negative data byte, no FIN"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 0xff |
- }; |
- const unsigned char kV4FrameData[] = { |
- 0x00, 0x01, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0xff |
- }; |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xff}; |
+ const unsigned char kV4FrameData[] = {0x00, 0x01, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x01, 0xff}; |
SpdyDataIR data_ir(1, StringPiece("\xff", 1)); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
} |
{ |
const char kDescription[] = "'hello' data frame, with FIN"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x01, 0x00, 0x00, 0x05, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
- const unsigned char kV4FrameData[] = { |
- 0x00, 0x05, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
+ const unsigned char kV3FrameData[] = {// Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, |
+ 0x00, 0x05, 'h', 'e', 'l', 'l', 'o'}; |
+ const unsigned char kV4FrameData[] = {0x00, 0x05, 0x00, 0x01, 0x00, |
+ 0x00, 0x00, 0x01, 'h', 'e', |
+ 'l', 'l', 'o'}; |
SpdyDataIR data_ir(1, StringPiece("hello", 5)); |
data_ir.set_fin(true); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
} |
{ |
const char kDescription[] = "Empty data frame"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, |
}; |
SpdyDataIR data_ir(1, StringPiece()); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir)); |
@@ -1770,27 +1641,19 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
{ |
const char kDescription[] = "Data frame with max stream ID"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x01, 0x00, 0x00, 0x05, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
- const unsigned char kV4FrameData[] = { |
- 0x00, 0x05, 0x00, 0x01, |
- 0x7f, 0xff, 0xff, 0xff, |
- 'h', 'e', 'l', 'l', |
- 'o' |
- }; |
+ const unsigned char kV3FrameData[] = {// Also applies for V2. |
+ 0x7f, 0xff, 0xff, 0xff, 0x01, 0x00, |
+ 0x00, 0x05, 'h', 'e', 'l', 'l', 'o'}; |
+ const unsigned char kV4FrameData[] = {0x00, 0x05, 0x00, 0x01, 0x7f, |
+ 0xff, 0xff, 0xff, 'h', 'e', |
+ 'l', 'l', 'o'}; |
SpdyDataIR data_ir(0x7fffffff, "hello"); |
data_ir.set_fin(true); |
scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
if (IsSpdy4()) { |
- CompareFrame( |
- kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
- CompareFrame( |
- kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
} |
} |
@@ -1801,8 +1664,7 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
const int kDataSize = 4 * 1024 * 1024; // 4 MB |
const string kData(kDataSize, 'A'); |
const unsigned char kFrameHeader[] = { |
- 0x00, 0x00, 0x00, 0x01, |
- 0x01, 0x40, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x40, 0x00, 0x00, |
}; |
const int kFrameSize = arraysize(kFrameHeader) + kDataSize; |
@@ -1827,41 +1689,25 @@ TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { |
const unsigned char kPri = IsSpdy2() ? 0xC0 : 0xE0; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x20, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- kPri, 0x00, 0x00, 0x02, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x03, 'b', 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, kPri, 0x00, 0x00, 0x02, |
+ 0x00, 0x03, 'b', 'a', 'r', 0x00, 0x03, 'f', 'o', 'o', |
+ 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x2a, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- kPri, 0x00, 0x00, 0x00, |
- 0x00, 0x02, 0x00, 0x00, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x00, 0x00, |
- 0x03, 'f', 'o', 'o', |
- 0x00, 0x00, 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00, 0x00, 0x03, 'b', |
- 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, kPri, 0x00, 0x00, 0x00, |
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 'b', 'a', 'r', 0x00, |
+ 0x00, 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x16, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x00, 0x00, 0x00, 0x07, // Priority 7 |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x03, 0x62, // oo.b |
- 0x61, 0x72, // ar |
+ 0x00, 0x16, 0x01, 0x0c, // HEADERS: PRIORITY | END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x00, 0x00, 0x00, 0x07, // Priority 7 |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x03, 0x62, // oo.b |
+ 0x61, 0x72, // ar |
}; |
SpdySynStreamIR syn_stream(1); |
syn_stream.set_priority(framer.GetLowestPriority()); |
@@ -1883,39 +1729,24 @@ TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { |
"max stream ID"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x01, 0x00, 0x00, 0x1D, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x03, 'f', 'o', 'o', |
- 0x00, 0x03, 'b', 'a', |
- 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x01, 0x00, 0x00, 0x1D, 0x7f, 0xff, |
+ 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, |
+ 0x00, 0x00, 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x03, 'f', |
+ 'o', 'o', 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x01, 0x00, 0x00, 0x27, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x02, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x03, 'f', 'o', |
- 'o', 0x00, 0x00, 0x00, |
- 0x03, 'f', 'o', 'o', |
- 0x00, 0x00, 0x00, 0x03, |
- 'b', 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x01, 0x00, 0x00, 0x27, 0x7f, 0xff, |
+ 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, 'f', 'o', 'o', |
+ 0x00, 0x00, 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x13, 0x01, 0x0d, // HEADERS: PRIORITY | FIN | END_HEADERS |
- 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
- 0x00, 0x00, 0x00, 0x00, // Priority 0 |
- 0x40, 0x00, 0x03, 0x66, // @..f |
- 0x6f, 0x6f, 0x40, 0x03, // oo@. |
- 0x66, 0x6f, 0x6f, 0x03, // foo. |
- 0x62, 0x61, 0x72, // bar |
+ 0x00, 0x13, 0x01, 0x0d, // HEADERS: PRIORITY | FIN | END_HEADERS |
+ 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
+ 0x00, 0x00, 0x00, 0x00, // Priority 0 |
+ 0x40, 0x00, 0x03, 0x66, // @..f |
+ 0x6f, 0x6f, 0x40, 0x03, // oo@. |
+ 0x66, 0x6f, 0x6f, 0x03, // foo. |
+ 0x62, 0x61, 0x72, // bar |
}; |
SpdySynStreamIR syn_stream(0x7fffffff); |
syn_stream.set_associated_to_stream_id(0x7fffffff); |
@@ -1940,39 +1771,24 @@ TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { |
const unsigned char kPri = IsSpdy2() ? 0x40 : 0x20; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x01, 0x00, 0x00, 0x1D, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x7f, 0xff, 0xff, 0xff, |
- kPri, 0x00, 0x00, 0x02, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00 |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x01, 0x00, 0x00, 0x1D, 0x7f, 0xff, |
+ 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, kPri, 0x00, 0x00, 0x02, |
+ 0x00, 0x03, 'b', 'a', 'r', 0x00, 0x03, 'f', 'o', 'o', |
+ 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x00}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x01, 0x00, 0x00, 0x27, |
- 0x7f, 0xff, 0xff, 0xff, |
- 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, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00, 0x00, 0x00 |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x01, 0x00, 0x00, 0x27, 0x7f, 0xff, |
+ 0xff, 0xff, 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, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x00}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x13, 0x01, 0x0d, // HEADERS: PRIORITY | FIN | END_HEADERS |
- 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
- 0x00, 0x00, 0x00, 0x01, // Priority 1 |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x00, // oo. |
+ 0x00, 0x13, 0x01, 0x0d, // HEADERS: PRIORITY | FIN | END_HEADERS |
+ 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
+ 0x00, 0x00, 0x00, 0x01, // Priority 1 |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x00, // oo. |
}; |
SpdySynStreamIR syn_stream(0x7fffffff); |
syn_stream.set_associated_to_stream_id(0x7fffffff); |
@@ -1999,45 +1815,26 @@ TEST_P(SpdyFramerTest, CreateSynStreamCompressed) { |
framer.set_enable_compression(true); |
{ |
- const char kDescription[] = |
- "SYN_STREAM frame, low pri, no FIN"; |
+ const char kDescription[] = "SYN_STREAM frame, low pri, no FIN"; |
const SpdyPriority priority = IsSpdy2() ? 2 : 4; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x36, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x80, 0x00, 0x38, 0xea, |
- 0xdf, 0xa2, 0x51, 0xb2, |
- 0x62, 0x60, 0x62, 0x60, |
- 0x4e, 0x4a, 0x2c, 0x62, |
- 0x60, 0x06, 0x08, 0xa0, |
- 0xb4, 0xfc, 0x7c, 0x80, |
- 0x00, 0x62, 0x60, 0x4e, |
- 0xcb, 0xcf, 0x67, 0x60, |
- 0x06, 0x08, 0xa0, 0xa4, |
- 0xc4, 0x22, 0x80, 0x00, |
- 0x02, 0x00, 0x00, 0x00, |
- 0xff, 0xff, |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, |
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, |
+ 0x38, 0xea, 0xdf, 0xa2, 0x51, 0xb2, 0x62, 0x60, 0x62, |
+ 0x60, 0x4e, 0x4a, 0x2c, 0x62, 0x60, 0x06, 0x08, 0xa0, |
+ 0xb4, 0xfc, 0x7c, 0x80, 0x00, 0x62, 0x60, 0x4e, 0xcb, |
+ 0xcf, 0x67, 0x60, 0x06, 0x08, 0xa0, 0xa4, 0xc4, 0x22, |
+ 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x37, |
- 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, |
+ 0x80, spdy_version_ch_, 0x00, 0x01, 0x00, 0x00, 0x00, 0x37, 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, |
}; |
SpdySynStreamIR syn_stream(1); |
syn_stream.set_priority(priority); |
@@ -2063,37 +1860,24 @@ TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) { |
const char kDescription[] = "SYN_REPLY frame, no FIN"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x1C, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x03, 'b', 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, |
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, |
+ 'b', 'a', 'r', 0x00, 0x03, 'f', 'o', 'o', 0x00, |
+ 0x03, 'f', 'o', 'o', 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x24, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'b', 'a', 'r', 0x00, |
- 0x00, 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x00, |
- 0x00, 0x03, 'f', 'o', |
- 'o', 0x00, 0x00, 0x00, |
- 0x03, 'b', 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, |
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x03, 'b', 'a', 'r', 0x00, 0x00, 0x00, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, 'f', 'o', |
+ 'o', 0x00, 0x00, 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x12, 0x01, 0x04, // HEADER: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x03, 0x62, // oo.b |
- 0x61, 0x72, // ar |
+ 0x00, 0x12, 0x01, 0x04, // HEADER: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x03, 0x62, // oo.b |
+ 0x61, 0x72, // ar |
}; |
SpdySynReplyIR syn_reply(1); |
syn_reply.SetHeader("bar", "foo"); |
@@ -2113,36 +1897,23 @@ TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) { |
"SYN_REPLY frame with a 0-length header name, FIN, max stream ID"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x01, 0x00, 0x00, 0x19, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x03, 'f', 'o', 'o', |
- 0x00, 0x03, 'b', 'a', |
- 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x01, 0x00, 0x00, 0x19, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x03, 'f', 'o', |
+ 'o', 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x01, 0x00, 0x00, 0x21, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00, 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x00, |
- 0x00, 0x03, 'b', 'a', |
- 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x01, 0x00, 0x00, 0x21, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 'f', 'o', 'o', |
+ 0x00, 0x00, 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x00, |
+ 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
- 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
- 0x40, 0x00, 0x03, 0x66, // @..f |
- 0x6f, 0x6f, 0x40, 0x03, // oo@. |
- 0x66, 0x6f, 0x6f, 0x03, // foo. |
- 0x62, 0x61, 0x72, // bar |
+ 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
+ 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
+ 0x40, 0x00, 0x03, 0x66, // @..f |
+ 0x6f, 0x6f, 0x40, 0x03, // oo@. |
+ 0x66, 0x6f, 0x6f, 0x03, // foo. |
+ 0x62, 0x61, 0x72, // bar |
}; |
SpdySynReplyIR syn_reply(0x7fffffff); |
syn_reply.set_fin(true); |
@@ -2163,36 +1934,23 @@ TEST_P(SpdyFramerTest, CreateSynReplyUncompressed) { |
"SYN_REPLY frame with a 0-length header val, FIN, max stream ID"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x01, 0x00, 0x00, 0x19, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00 |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x01, 0x00, 0x00, 0x19, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, |
+ 'b', 'a', 'r', 0x00, 0x03, 'f', 'o', 'o', 0x00, |
+ 0x03, 'f', 'o', 'o', 0x00, 0x00}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x01, 0x00, 0x00, 0x21, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'b', 'a', 'r', 0x00, |
- 0x00, 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x00, |
- 0x00, 0x03, 'f', 'o', |
- 'o', 0x00, 0x00, 0x00, |
- 0x00 |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x01, 0x00, 0x00, 0x21, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x03, 'b', 'a', 'r', 0x00, 0x00, 0x00, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, 'f', 'o', |
+ 'o', 0x00, 0x00, 0x00, 0x00}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
- 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x00, // oo. |
+ 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
+ 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x00, // oo. |
}; |
SpdySynReplyIR syn_reply(0x7fffffff); |
syn_reply.set_fin(true); |
@@ -2220,38 +1978,20 @@ TEST_P(SpdyFramerTest, CreateSynReplyCompressed) { |
const char kDescription[] = "SYN_REPLY frame, no FIN"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x32, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x38, 0xea, |
- 0xdf, 0xa2, 0x51, 0xb2, |
- 0x62, 0x60, 0x62, 0x60, |
- 0x4e, 0x4a, 0x2c, 0x62, |
- 0x60, 0x06, 0x08, 0xa0, |
- 0xb4, 0xfc, 0x7c, 0x80, |
- 0x00, 0x62, 0x60, 0x4e, |
- 0xcb, 0xcf, 0x67, 0x60, |
- 0x06, 0x08, 0xa0, 0xa4, |
- 0xc4, 0x22, 0x80, 0x00, |
- 0x02, 0x00, 0x00, 0x00, |
- 0xff, 0xff, |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x38, 0xea, 0xdf, 0xa2, 0x51, 0xb2, |
+ 0x62, 0x60, 0x62, 0x60, 0x4e, 0x4a, 0x2c, 0x62, 0x60, 0x06, |
+ 0x08, 0xa0, 0xb4, 0xfc, 0x7c, 0x80, 0x00, 0x62, 0x60, 0x4e, |
+ 0xcb, 0xcf, 0x67, 0x60, 0x06, 0x08, 0xa0, 0xa4, 0xc4, 0x22, |
+ 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x31, |
- 0x00, 0x00, 0x00, 0x01, |
- 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, |
+ 0x80, spdy_version_ch_, 0x00, 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, |
+ 0x00, 0x01, 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, |
}; |
SpdySynReplyIR syn_reply(1); |
syn_reply.SetHeader("bar", "foo"); |
@@ -2273,18 +2013,14 @@ TEST_P(SpdyFramerTest, CreateRstStream) { |
{ |
const char kDescription[] = "RST_STREAM frame"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- }; |
- const unsigned char kV4FrameData[] = { |
- 0x00, 0x07, 0x03, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x52, 0x53, 0x54 |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, |
}; |
+ const unsigned char kV4FrameData[] = {0x00, 0x07, 0x03, 0x00, 0x00, |
+ 0x00, 0x00, 0x01, 0x00, 0x00, |
+ 0x00, 0x01, 0x52, 0x53, 0x54}; |
SpdyRstStreamIR rst_stream(1, RST_STREAM_PROTOCOL_ERROR, "RST"); |
scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
if (IsSpdy4()) { |
@@ -2296,20 +2032,15 @@ TEST_P(SpdyFramerTest, CreateRstStream) { |
{ |
const char kDescription[] = "RST_STREAM frame with max stream ID"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x01, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x7f, 0xff, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x04, 0x03, 0x00, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x04, 0x03, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, |
}; |
- SpdyRstStreamIR rst_stream(0x7FFFFFFF, |
- RST_STREAM_PROTOCOL_ERROR, |
- ""); |
+ SpdyRstStreamIR rst_stream(0x7FFFFFFF, RST_STREAM_PROTOCOL_ERROR, ""); |
scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
if (IsSpdy4()) { |
CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
@@ -2320,20 +2051,15 @@ TEST_P(SpdyFramerTest, CreateRstStream) { |
{ |
const char kDescription[] = "RST_STREAM frame with max status code"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x06, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x7f, 0xff, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x04, 0x03, 0x00, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x06, |
+ 0x00, 0x04, 0x03, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x06, |
}; |
- SpdyRstStreamIR rst_stream(0x7FFFFFFF, |
- RST_STREAM_INTERNAL_ERROR, |
- ""); |
+ SpdyRstStreamIR rst_stream(0x7FFFFFFF, RST_STREAM_INTERNAL_ERROR, ""); |
scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
if (IsSpdy4()) { |
CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
@@ -2350,24 +2076,16 @@ TEST_P(SpdyFramerTest, CreateSettings) { |
const char kDescription[] = "Network byte order SETTINGS frame"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x0c, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x07, 0x00, 0x00, 0x01, |
- 0x0a, 0x0b, 0x0c, 0x0d, |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, |
+ 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x0c, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x01, 0x00, 0x00, 0x07, |
- 0x0a, 0x0b, 0x0c, 0x0d, |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, |
+ 0x00, 0x01, 0x01, 0x00, 0x00, 0x07, 0x0a, 0x0b, 0x0c, 0x0d, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x05, 0x04, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x04, 0x0a, 0x0b, 0x0c, |
- 0x0d, |
+ 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x04, 0x0a, 0x0b, 0x0c, 0x0d, |
}; |
uint32 kValue = 0x0a0b0c0d; |
@@ -2397,46 +2115,47 @@ TEST_P(SpdyFramerTest, CreateSettings) { |
{ |
const char kDescription[] = "Basic SETTINGS frame"; |
- const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x24, |
- 0x00, 0x00, 0x00, 0x04, |
- 0x01, 0x00, 0x00, 0x00, // 1st Setting |
- 0x00, 0x00, 0x00, 0x05, |
- 0x02, 0x00, 0x00, 0x00, // 2nd Setting |
- 0x00, 0x00, 0x00, 0x06, |
- 0x03, 0x00, 0x00, 0x00, // 3rd Setting |
- 0x00, 0x00, 0x00, 0x07, |
- 0x04, 0x00, 0x00, 0x00, // 4th Setting |
- 0x00, 0x00, 0x00, 0x08, |
- }; |
- const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x24, |
- 0x00, 0x00, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x01, // 1st Setting |
- 0x00, 0x00, 0x00, 0x05, |
- 0x00, 0x00, 0x00, 0x02, // 2nd Setting |
- 0x00, 0x00, 0x00, 0x06, |
- 0x00, 0x00, 0x00, 0x03, // 3rd Setting |
- 0x00, 0x00, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x04, // 4th Setting |
- 0x00, 0x00, 0x00, 0x08, |
- }; |
+ const unsigned char |
+ kV2FrameData |
+ [] = { |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, |
+ 0x00, 0x24, 0x00, 0x00, 0x00, 0x04, |
+ 0x01, 0x00, 0x00, 0x00, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, |
+ 0x00, 0x00, // 2nd Setting |
+ 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, |
+ 0x00, 0x00, // 3rd Setting |
+ 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, |
+ 0x00, 0x00, // 4th Setting |
+ 0x00, 0x00, 0x00, 0x08, |
+ }; |
+ const unsigned char |
+ kV3FrameData |
+ [] = { |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, |
+ 0x00, 0x24, 0x00, 0x00, 0x00, 0x04, |
+ 0x00, 0x00, 0x00, 0x01, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, |
+ 0x00, 0x02, // 2nd Setting |
+ 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, |
+ 0x00, 0x03, // 3rd Setting |
+ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, |
+ 0x00, 0x04, // 4th Setting |
+ 0x00, 0x00, 0x00, 0x08, |
+ }; |
// These end up seemingly out of order because of the way that our internal |
// ordering for settings_ir works. HTTP2 has no requirement on ordering on |
// the wire. |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x14, 0x04, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x03, // 3rd Setting |
- 0x00, 0x00, 0x00, 0x07, |
- 0x04, // 4th Setting |
- 0x00, 0x00, 0x00, 0x08, |
- 0x01, // 1st Setting |
- 0x00, 0x00, 0x00, 0x05, |
- 0x02, // 2nd Setting |
- 0x00, 0x00, 0x00, 0x06, |
+ 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x03, // 3rd Setting |
+ 0x00, 0x00, 0x00, 0x07, |
+ 0x04, // 4th Setting |
+ 0x00, 0x00, 0x00, 0x08, |
+ 0x01, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x05, |
+ 0x02, // 2nd Setting |
+ 0x00, 0x00, 0x00, 0x06, |
}; |
SpdySettingsIR settings_ir; |
@@ -2470,14 +2189,13 @@ TEST_P(SpdyFramerTest, CreateSettings) { |
{ |
const char kDescription[] = "Empty SETTINGS frame"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x00, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, |
+ 0x00, 0x00, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x00, 0x04, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, |
}; |
SpdySettingsIR settings_ir; |
scoped_ptr<SpdyFrame> frame(framer.SerializeSettings(settings_ir)); |
@@ -2494,22 +2212,18 @@ TEST_P(SpdyFramerTest, CreatePingFrame) { |
{ |
const char kDescription[] = "PING frame"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x06, |
- 0x00, 0x00, 0x00, 0x04, |
- 0x12, 0x34, 0x56, 0x78, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x12, 0x34, |
+ 0x56, 0x78, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x08, 0x06, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x12, 0x34, 0x56, 0x78, |
- 0x9a, 0xbc, 0xde, 0xff, |
+ 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xff, |
}; |
const unsigned char kV4FrameDataWithAck[] = { |
- 0x00, 0x08, 0x06, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x12, 0x34, 0x56, 0x78, |
- 0x9a, 0xbc, 0xde, 0xff, |
+ 0x00, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, |
+ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xff, |
}; |
scoped_ptr<SpdyFrame> frame; |
if (IsSpdy4()) { |
@@ -2523,8 +2237,10 @@ TEST_P(SpdyFramerTest, CreatePingFrame) { |
// Tests SpdyPingIR when the ping is an ack. |
ping_ir.set_is_ack(true); |
frame.reset(framer.SerializePing(ping_ir)); |
- CompareFrame(kDescription, *frame, |
- kV4FrameDataWithAck, arraysize(kV4FrameDataWithAck)); |
+ CompareFrame(kDescription, |
+ *frame, |
+ kV4FrameDataWithAck, |
+ arraysize(kV4FrameDataWithAck)); |
} else { |
frame.reset(framer.SerializePing(SpdyPingIR(0x12345678ull))); |
@@ -2539,22 +2255,19 @@ TEST_P(SpdyFramerTest, CreateGoAway) { |
{ |
const char kDescription[] = "GOAWAY frame"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x00, // Stream Id |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, |
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, // Stream Id |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x00, // Stream Id |
- 0x00, 0x00, 0x00, 0x00, // Status |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, |
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // Stream Id |
+ 0x00, 0x00, 0x00, 0x00, // Status |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0a, 0x07, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, // Stream id |
- 0x00, 0x00, 0x00, 0x00, // Status |
- 0x47, 0x41, // Opaque Description |
+ 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Stream id |
+ 0x00, 0x00, 0x00, 0x00, // Status |
+ 0x47, 0x41, // Opaque Description |
}; |
SpdyGoAwayIR goaway_ir(0, GOAWAY_OK, "GA"); |
scoped_ptr<SpdyFrame> frame(framer.SerializeGoAway(goaway_ir)); |
@@ -2570,22 +2283,19 @@ TEST_P(SpdyFramerTest, CreateGoAway) { |
{ |
const char kDescription[] = "GOAWAY frame with max stream ID, status"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x04, |
- 0x7f, 0xff, 0xff, 0xff, // Stream Id |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, |
+ 0x00, 0x04, 0x7f, 0xff, 0xff, 0xff, // Stream Id |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x7f, 0xff, 0xff, 0xff, // Stream Id |
- 0x00, 0x00, 0x00, 0x02, // Status |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, |
+ 0x00, 0x08, 0x7f, 0xff, 0xff, 0xff, // Stream Id |
+ 0x00, 0x00, 0x00, 0x02, // Status |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0a, 0x07, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x7f, 0xff, 0xff, 0xff, // Stream Id |
- 0x00, 0x00, 0x00, 0x02, // Status |
- 0x47, 0x41, // Opaque Description |
+ 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, // Stream Id |
+ 0x00, 0x00, 0x00, 0x02, // Status |
+ 0x47, 0x41, // Opaque Description |
}; |
SpdyGoAwayIR goaway_ir(0x7FFFFFFF, GOAWAY_INTERNAL_ERROR, "GA"); |
scoped_ptr<SpdyFrame> frame(framer.SerializeGoAway(goaway_ir)); |
@@ -2607,37 +2317,24 @@ TEST_P(SpdyFramerTest, CreateHeadersUncompressed) { |
const char kDescription[] = "HEADERS frame, no FIN"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x1C, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x03, 'b', 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x00, |
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, |
+ 'b', 'a', 'r', 0x00, 0x03, 'f', 'o', 'o', 0x00, |
+ 0x03, 'f', 'o', 'o', 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x24, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'b', 'a', 'r', 0x00, |
- 0x00, 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x00, |
- 0x00, 0x03, 'f', 'o', |
- 'o', 0x00, 0x00, 0x00, |
- 0x03, 'b', 'a', 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, |
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x03, 'b', 'a', 'r', 0x00, 0x00, 0x00, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, 'f', 'o', |
+ 'o', 0x00, 0x00, 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x12, 0x01, 0x04, // Headers: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x03, 0x62, // oo.b |
- 0x61, 0x72, // ar |
+ 0x00, 0x12, 0x01, 0x04, // Headers: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x03, 0x62, // oo.b |
+ 0x61, 0x72, // ar |
}; |
SpdyHeadersIR headers_ir(1); |
headers_ir.SetHeader("bar", "foo"); |
@@ -2657,36 +2354,23 @@ TEST_P(SpdyFramerTest, CreateHeadersUncompressed) { |
"HEADERS frame with a 0-length header name, FIN, max stream ID"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x01, 0x00, 0x00, 0x19, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x03, 'f', 'o', 'o', |
- 0x00, 0x03, 'b', 'a', |
- 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x01, 0x00, 0x00, 0x19, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x03, 'f', 'o', |
+ 'o', 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x01, 0x00, 0x00, 0x21, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00, 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x00, |
- 0x00, 0x03, 'b', 'a', |
- 'r' |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x01, 0x00, 0x00, 0x21, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 'f', 'o', 'o', |
+ 0x00, 0x00, 0x00, 0x03, 'f', 'o', 'o', 0x00, 0x00, |
+ 0x00, 0x03, 'b', 'a', 'r'}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
- 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
- 0x40, 0x00, 0x03, 0x66, // @..f |
- 0x6f, 0x6f, 0x40, 0x03, // oo@. |
- 0x66, 0x6f, 0x6f, 0x03, // foo. |
- 0x62, 0x61, 0x72, // bar |
+ 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
+ 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
+ 0x40, 0x00, 0x03, 0x66, // @..f |
+ 0x6f, 0x6f, 0x40, 0x03, // oo@. |
+ 0x66, 0x6f, 0x6f, 0x03, // foo. |
+ 0x62, 0x61, 0x72, // bar |
}; |
SpdyHeadersIR headers_ir(0x7fffffff); |
headers_ir.set_fin(true); |
@@ -2707,40 +2391,27 @@ TEST_P(SpdyFramerTest, CreateHeadersUncompressed) { |
"HEADERS frame with a 0-length header val, FIN, max stream ID"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x01, 0x00, 0x00, 0x19, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x03, 'b', 'a', |
- 'r', 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x03, |
- 'f', 'o', 'o', 0x00, |
- 0x00 |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x01, 0x00, 0x00, 0x19, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, |
+ 'b', 'a', 'r', 0x00, 0x03, 'f', 'o', 'o', 0x00, |
+ 0x03, 'f', 'o', 'o', 0x00, 0x00}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x01, 0x00, 0x00, 0x21, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x03, |
- 'b', 'a', 'r', 0x00, |
- 0x00, 0x00, 0x03, 'f', |
- 'o', 'o', 0x00, 0x00, |
- 0x00, 0x03, 'f', 'o', |
- 'o', 0x00, 0x00, 0x00, |
- 0x00 |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x01, 0x00, 0x00, 0x21, 0x7f, |
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, |
+ 0x00, 0x03, 'b', 'a', 'r', 0x00, 0x00, 0x00, 0x03, |
+ 'f', 'o', 'o', 0x00, 0x00, 0x00, 0x03, 'f', 'o', |
+ 'o', 0x00, 0x00, 0x00, 0x00}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
- 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x00, // oo. |
+ 0x00, 0x0f, 0x01, 0x05, // HEADER: FIN | END_HEADERS |
+ 0x7f, 0xff, 0xff, 0xff, // Stream 0x7fffffff |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x00, // oo. |
}; |
SpdyHeadersIR headers_ir(0x7fffffff); |
headers_ir.set_fin(true); |
- headers_ir.SetHeader("bar", "foo"); |
+ headers_ir.SetHeader("bar", "foo"); |
headers_ir.SetHeader("foo", ""); |
scoped_ptr<SpdyFrame> frame(framer.SerializeHeaders(headers_ir)); |
if (IsSpdy2()) { |
@@ -2764,38 +2435,20 @@ TEST_P(SpdyFramerTest, CreateHeadersCompressed) { |
const char kDescription[] = "HEADERS frame, no FIN"; |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x32, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x38, 0xea, |
- 0xdf, 0xa2, 0x51, 0xb2, |
- 0x62, 0x60, 0x62, 0x60, |
- 0x4e, 0x4a, 0x2c, 0x62, |
- 0x60, 0x06, 0x08, 0xa0, |
- 0xb4, 0xfc, 0x7c, 0x80, |
- 0x00, 0x62, 0x60, 0x4e, |
- 0xcb, 0xcf, 0x67, 0x60, |
- 0x06, 0x08, 0xa0, 0xa4, |
- 0xc4, 0x22, 0x80, 0x00, |
- 0x02, 0x00, 0x00, 0x00, |
- 0xff, 0xff, |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x38, 0xea, 0xdf, 0xa2, 0x51, 0xb2, |
+ 0x62, 0x60, 0x62, 0x60, 0x4e, 0x4a, 0x2c, 0x62, 0x60, 0x06, |
+ 0x08, 0xa0, 0xb4, 0xfc, 0x7c, 0x80, 0x00, 0x62, 0x60, 0x4e, |
+ 0xcb, 0xcf, 0x67, 0x60, 0x06, 0x08, 0xa0, 0xa4, 0xc4, 0x22, |
+ 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x31, |
- 0x00, 0x00, 0x00, 0x01, |
- 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, |
+ 0x80, spdy_version_ch_, 0x00, 0x08, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, |
+ 0x00, 0x01, 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, |
}; |
SpdyHeadersIR headers_ir(1); |
headers_ir.SetHeader("bar", "foo"); |
@@ -2817,16 +2470,13 @@ TEST_P(SpdyFramerTest, CreateWindowUpdate) { |
{ |
const char kDescription[] = "WINDOW_UPDATE frame"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x09, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x04, 0x08, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, |
}; |
scoped_ptr<SpdyFrame> frame( |
framer.SerializeWindowUpdate(SpdyWindowUpdateIR(1, 1))); |
@@ -2839,19 +2489,16 @@ TEST_P(SpdyFramerTest, CreateWindowUpdate) { |
{ |
const char kDescription[] = "WINDOW_UPDATE frame with max stream ID"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x09, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x01, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x7f, 0xff, |
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x04, 0x08, 0x00, |
- 0x7f, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x04, 0x08, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, |
}; |
- scoped_ptr<SpdyFrame> frame(framer.SerializeWindowUpdate( |
- SpdyWindowUpdateIR(0x7FFFFFFF, 1))); |
+ scoped_ptr<SpdyFrame> frame( |
+ framer.SerializeWindowUpdate(SpdyWindowUpdateIR(0x7FFFFFFF, 1))); |
if (IsSpdy4()) { |
CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
@@ -2861,19 +2508,16 @@ TEST_P(SpdyFramerTest, CreateWindowUpdate) { |
{ |
const char kDescription[] = "WINDOW_UPDATE frame with max window delta"; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x09, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x7f, 0xff, 0xff, 0xff, |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, |
+ 0x00, 0x01, 0x7f, 0xff, 0xff, 0xff, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x04, 0x08, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x7f, 0xff, 0xff, 0xff, |
+ 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xff, 0xff, 0xff, |
}; |
- scoped_ptr<SpdyFrame> frame(framer.SerializeWindowUpdate( |
- SpdyWindowUpdateIR(1, 0x7FFFFFFF))); |
+ scoped_ptr<SpdyFrame> frame( |
+ framer.SerializeWindowUpdate(SpdyWindowUpdateIR(1, 0x7FFFFFFF))); |
if (IsSpdy4()) { |
CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
} else { |
@@ -2891,8 +2535,7 @@ TEST_P(SpdyFramerTest, SerializeBlocked) { |
const char kDescription[] = "BLOCKED frame"; |
const unsigned char kFrameData[] = { |
- 0x00, 0x00, 0x0a, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, |
}; |
SpdyBlockedIR blocked_ir(0); |
scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir)); |
@@ -2913,7 +2556,7 @@ TEST_P(SpdyFramerTest, CreateBlocked) { |
framer.SerializeBlocked(SpdyBlockedIR(kStreamId))); |
SpdyBlockedIR blocked_ir(kStreamId); |
scoped_ptr<SpdySerializedFrame> frame_created( |
- framer.SerializeFrame(blocked_ir)); |
+ framer.SerializeFrame(blocked_ir)); |
CompareFrames(kDescription, *frame_serialized, *frame_created); |
} |
@@ -2928,21 +2571,21 @@ TEST_P(SpdyFramerTest, CreatePushPromiseUncompressed) { |
const char kDescription[] = "PUSH_PROMISE frame"; |
const unsigned char kFrameData[] = { |
- 0x00, 0x16, 0x05, 0x04, // PUSH_PROMISE: END_HEADERS |
- 0x00, 0x00, 0x00, 0x2a, // Stream 42 |
- 0x00, 0x00, 0x00, 0x39, // Promised stream 57 |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x03, 0x62, // oo.b |
- 0x61, 0x72, // ar |
+ 0x00, 0x16, 0x05, 0x04, // PUSH_PROMISE: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x2a, // Stream 42 |
+ 0x00, 0x00, 0x00, 0x39, // Promised stream 57 |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x03, 0x62, // oo.b |
+ 0x61, 0x72, // ar |
}; |
SpdyPushPromiseIR push_promise(42, 57); |
push_promise.SetHeader("bar", "foo"); |
push_promise.SetHeader("foo", "bar"); |
scoped_ptr<SpdySerializedFrame> frame( |
- framer.SerializePushPromise(push_promise)); |
+ framer.SerializePushPromise(push_promise)); |
CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData)); |
} |
@@ -3096,8 +2739,7 @@ TEST_P(SpdyFramerTest, ControlFrameTooLarge) { |
control_frame.reset(framer.SerializeSynStream(syn_stream)); |
EXPECT_TRUE(control_frame.get() != NULL); |
- EXPECT_EQ(framer.GetControlFrameBufferMaxSize() + 1, |
- control_frame->size()); |
+ EXPECT_EQ(framer.GetControlFrameBufferMaxSize() + 1, control_frame->size()); |
TestSpdyVisitor visitor(spdy_version_); |
visitor.SimulateInFramer( |
@@ -3242,12 +2884,12 @@ TEST_P(SpdyFramerTest, ControlFrameSizesAreValidated) { |
// Create a GoAway frame that has a few extra bytes at the end. |
// We create enough overhead to overflow the framer's control frame buffer. |
ASSERT_GE(250u, SpdyFramer::kControlFrameBufferSize); |
- const unsigned char length = 1 + SpdyFramer::kControlFrameBufferSize; |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, length, |
- 0x00, 0x00, 0x00, 0x00, // Stream ID |
- 0x00, 0x00, 0x00, 0x00, // Status |
+ const unsigned char length = 1 + SpdyFramer::kControlFrameBufferSize; |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, 0x00, length, 0x00, 0x00, |
+ 0x00, 0x00, // Stream ID |
+ 0x00, 0x00, 0x00, 0x00, // Status |
}; |
// SPDY version 4 and up GOAWAY frames are only bound to a minimal length, |
@@ -3255,10 +2897,10 @@ TEST_P(SpdyFramerTest, ControlFrameSizesAreValidated) { |
const unsigned char less_than_min_length = |
framer.GetGoAwayMinimumSize() - framer.GetControlFrameHeaderSize() - 1; |
const unsigned char kV4FrameData[] = { |
- 0x00, static_cast<uint8>(less_than_min_length), 0x07, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x00, 0x00, 0x00, 0x00, // Stream Id |
- 0x00, 0x00, 0x00, 0x00, // Status |
+ 0x00, static_cast<uint8>(less_than_min_length), 0x07, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x00, // Stream Id |
+ 0x00, 0x00, 0x00, 0x00, // Status |
}; |
const size_t pad_length = |
length + framer.GetControlFrameHeaderSize() - |
@@ -3271,9 +2913,8 @@ TEST_P(SpdyFramerTest, ControlFrameSizesAreValidated) { |
} else { |
visitor.SimulateInFramer(kV3FrameData, sizeof(kV3FrameData)); |
} |
- visitor.SimulateInFramer( |
- reinterpret_cast<const unsigned char*>(pad.c_str()), |
- pad.length()); |
+ visitor.SimulateInFramer(reinterpret_cast<const unsigned char*>(pad.c_str()), |
+ pad.length()); |
EXPECT_EQ(1, visitor.error_count_); // This generated an error. |
EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, |
@@ -3308,10 +2949,8 @@ TEST_P(SpdyFramerTest, ReadBogusLenSettingsFrame) { |
// Add a setting to pad the frame so that we don't get a buffer overflow when |
// calling SimulateInFramer() below. |
- settings_ir.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE, |
- false, |
- false, |
- 0x00000002); |
+ settings_ir.AddSetting( |
+ SETTINGS_INITIAL_WINDOW_SIZE, false, false, 0x00000002); |
scoped_ptr<SpdyFrame> control_frame(framer.SerializeSettings(settings_ir)); |
const size_t kNewLength = 14; |
SetFrameLength(control_frame.get(), kNewLength, spdy_version_); |
@@ -3343,8 +2982,7 @@ TEST_P(SpdyFramerTest, ReadLargeSettingsFrame) { |
7); |
scoped_ptr<SpdyFrame> control_frame(framer.SerializeSettings(settings_ir)); |
- EXPECT_LT(SpdyFramer::kControlFrameBufferSize, |
- control_frame->size()); |
+ EXPECT_LT(SpdyFramer::kControlFrameBufferSize, control_frame->size()); |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
@@ -3382,36 +3020,35 @@ TEST_P(SpdyFramerTest, ReadDuplicateSettings) { |
SpdyFramer framer(spdy_version_); |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x1C, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x01, 0x00, 0x00, 0x00, // 1st Setting |
- 0x00, 0x00, 0x00, 0x02, |
- 0x01, 0x00, 0x00, 0x00, // 2nd (duplicate) Setting |
- 0x00, 0x00, 0x00, 0x03, |
- 0x03, 0x00, 0x00, 0x00, // 3rd (unprocessed) Setting |
- 0x00, 0x00, 0x00, 0x03, |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, |
+ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // 2nd |
+ // (duplicate) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, // 3rd |
+ // (unprocessed) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x1C, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x01, // 1st Setting |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x01, // 2nd (duplicate) Setting |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x03, // 3rd (unprocessed) Setting |
- 0x00, 0x00, 0x00, 0x03, |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, |
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, // 2nd |
+ // (duplicate) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, // 3rd |
+ // (unprocessed) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0f, 0x04, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x01, // 1st Setting |
- 0x00, 0x00, 0x00, 0x02, |
- 0x01, // 2nd (duplicate) Setting |
- 0x00, 0x00, 0x00, 0x03, |
- 0x03, // 3rd (unprocessed) Setting |
- 0x00, 0x00, 0x00, 0x03, |
+ 0x00, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x01, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x02, |
+ 0x01, // 2nd (duplicate) Setting |
+ 0x00, 0x00, 0x00, 0x03, |
+ 0x03, // 3rd (unprocessed) Setting |
+ 0x00, 0x00, 0x00, 0x03, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
@@ -3441,36 +3078,35 @@ TEST_P(SpdyFramerTest, ReadOutOfOrderSettings) { |
SpdyFramer framer(spdy_version_); |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x1C, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x02, 0x00, 0x00, 0x00, // 1st Setting |
- 0x00, 0x00, 0x00, 0x02, |
- 0x01, 0x00, 0x00, 0x00, // 2nd (out of order) Setting |
- 0x00, 0x00, 0x00, 0x03, |
- 0x03, 0x00, 0x00, 0x00, // 3rd (unprocessed) Setting |
- 0x00, 0x00, 0x00, 0x03, |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, |
+ 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, // 2nd (out |
+ // of order) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, // 3rd |
+ // (unprocessed) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x04, |
- 0x00, 0x00, 0x00, 0x1C, |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x02, // 1st Setting |
- 0x00, 0x00, 0x00, 0x02, |
- 0x00, 0x00, 0x00, 0x01, // 2nd (out of order) Setting |
- 0x00, 0x00, 0x00, 0x03, |
- 0x00, 0x00, 0x01, 0x03, // 3rd (unprocessed) Setting |
- 0x00, 0x00, 0x00, 0x03, |
+ 0x80, spdy_version_ch_, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x00, |
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, // 2nd (out |
+ // of order) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x03, // 3rd |
+ // (unprocessed) |
+ // Setting |
+ 0x00, 0x00, 0x00, 0x03, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x0f, 0x04, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x02, // 1st Setting |
- 0x00, 0x00, 0x00, 0x02, |
- 0x01, // 2nd (out of order) Setting |
- 0x00, 0x00, 0x00, 0x03, |
- 0x03, // 3rd (unprocessed) Setting |
- 0x00, 0x00, 0x00, 0x03, |
+ 0x00, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0x02, // 1st Setting |
+ 0x00, 0x00, 0x00, 0x02, |
+ 0x01, // 2nd (out of order) Setting |
+ 0x00, 0x00, 0x00, 0x03, |
+ 0x03, // 3rd (unprocessed) Setting |
+ 0x00, 0x00, 0x00, 0x03, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
@@ -3501,8 +3137,7 @@ TEST_P(SpdyFramerTest, ProcessSettingsAckFrame) { |
SpdyFramer framer(spdy_version_); |
const unsigned char kFrameData[] = { |
- 0x00, 0x00, 0x04, 0x01, |
- 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
@@ -3514,7 +3149,6 @@ TEST_P(SpdyFramerTest, ProcessSettingsAckFrame) { |
EXPECT_EQ(1, visitor.settings_ack_received_); |
} |
- |
TEST_P(SpdyFramerTest, ProcessDataFrameWithPadding) { |
if (spdy_version_ <= SPDY3) { |
return; |
@@ -3535,9 +3169,8 @@ TEST_P(SpdyFramerTest, ProcessDataFrameWithPadding) { |
int bytes_consumed = 0; |
// Send the frame header. |
- EXPECT_CALL(visitor, OnDataFrameHeader(1, |
- kPaddingLen + strlen(data_payload), |
- false)); |
+ EXPECT_CALL(visitor, |
+ OnDataFrameHeader(1, kPaddingLen + strlen(data_payload), false)); |
CHECK_EQ(8u, framer.ProcessInput(frame->data(), 8)); |
CHECK_EQ(framer.state(), SpdyFramer::SPDY_READ_PADDING_LENGTH); |
CHECK_EQ(framer.error_code(), SpdyFramer::SPDY_NO_ERROR); |
@@ -3600,22 +3233,13 @@ TEST_P(SpdyFramerTest, ReceiveCredentialFrame) { |
return; |
} |
SpdyFramer framer(spdy_version_); |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x0A, |
- 0x00, 0x00, 0x00, 0x33, |
- 0x00, 0x03, 0x00, 0x00, |
- 0x00, 0x05, 'p', 'r', |
- 'o', 'o', 'f', 0x00, |
- 0x00, 0x00, 0x06, 'a', |
- ' ', 'c', 'e', 'r', |
- 't', 0x00, 0x00, 0x00, |
- 0x0C, 'a', 'n', 'o', |
- 't', 'h', 'e', 'r', |
- ' ', 'c', 'e', 'r', |
- 't', 0x00, 0x00, 0x00, |
- 0x0A, 'f', 'i', 'n', |
- 'a', 'l', ' ', 'c', |
- 'e', 'r', 't', |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x33, 0x00, 0x03, |
+ 0x00, 0x00, 0x00, 0x05, 'p', 'r', 'o', 'o', 'f', 0x00, 0x00, 0x00, 0x06, |
+ 'a', ' ', 'c', 'e', 'r', 't', 0x00, 0x00, 0x00, 0x0C, 'a', 'n', 'o', 't', |
+ 'h', 'e', 'r', ' ', 'c', 'e', 'r', 't', 0x00, 0x00, 0x00, 0x0A, 'f', 'i', |
+ 'n', 'a', 'l', ' ', 'c', 'e', 'r', 't', |
}; |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
@@ -3628,22 +3252,13 @@ TEST_P(SpdyFramerTest, ReadCredentialFrameFollowedByAnotherFrame) { |
return; |
} |
SpdyFramer framer(spdy_version_); |
- const unsigned char kV3FrameData[] = { // Also applies for V2. |
- 0x80, spdy_version_ch_, 0x00, 0x0A, |
- 0x00, 0x00, 0x00, 0x33, |
- 0x00, 0x03, 0x00, 0x00, |
- 0x00, 0x05, 'p', 'r', |
- 'o', 'o', 'f', 0x00, |
- 0x00, 0x00, 0x06, 'a', |
- ' ', 'c', 'e', 'r', |
- 't', 0x00, 0x00, 0x00, |
- 0x0C, 'a', 'n', 'o', |
- 't', 'h', 'e', 'r', |
- ' ', 'c', 'e', 'r', |
- 't', 0x00, 0x00, 0x00, |
- 0x0A, 'f', 'i', 'n', |
- 'a', 'l', ' ', 'c', |
- 'e', 'r', 't', |
+ const unsigned char kV3FrameData[] = { |
+ // Also applies for V2. |
+ 0x80, spdy_version_ch_, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x33, 0x00, 0x03, |
+ 0x00, 0x00, 0x00, 0x05, 'p', 'r', 'o', 'o', 'f', 0x00, 0x00, 0x00, 0x06, |
+ 'a', ' ', 'c', 'e', 'r', 't', 0x00, 0x00, 0x00, 0x0C, 'a', 'n', 'o', 't', |
+ 'h', 'e', 'r', ' ', 'c', 'e', 'r', 't', 0x00, 0x00, 0x00, 0x0A, 'f', 'i', |
+ 'n', 'a', 'l', ' ', 'c', 'e', 'r', 't', |
}; |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
@@ -3651,8 +3266,8 @@ TEST_P(SpdyFramerTest, ReadCredentialFrameFollowedByAnotherFrame) { |
arraysize(kV3FrameData)); |
scoped_ptr<SpdyFrame> control_frame( |
framer.SerializeWindowUpdate(SpdyWindowUpdateIR(1, 2))); |
- multiple_frame_data.append(string(control_frame->data(), |
- control_frame->size())); |
+ multiple_frame_data.append( |
+ string(control_frame->data(), control_frame->size())); |
visitor.SimulateInFramer( |
reinterpret_cast<unsigned const char*>(multiple_frame_data.data()), |
multiple_frame_data.length()); |
@@ -3671,20 +3286,20 @@ TEST_P(SpdyFramerTest, CreateContinuationUncompressed) { |
const char kDescription[] = "CONTINUATION frame"; |
const unsigned char kFrameData[] = { |
- 0x00, 0x12, 0x09, 0x00, // CONTINUATION |
- 0x00, 0x00, 0x00, 0x2a, // Stream 42 |
- 0x40, 0x03, 0x62, 0x61, // @.ba |
- 0x72, 0x03, 0x66, 0x6f, // r.fo |
- 0x6f, 0x40, 0x03, 0x66, // o@.f |
- 0x6f, 0x6f, 0x03, 0x62, // oo.b |
- 0x61, 0x72, // ar |
+ 0x00, 0x12, 0x09, 0x00, // CONTINUATION |
+ 0x00, 0x00, 0x00, 0x2a, // Stream 42 |
+ 0x40, 0x03, 0x62, 0x61, // @.ba |
+ 0x72, 0x03, 0x66, 0x6f, // r.fo |
+ 0x6f, 0x40, 0x03, 0x66, // o@.f |
+ 0x6f, 0x6f, 0x03, 0x62, // oo.b |
+ 0x61, 0x72, // ar |
}; |
SpdyContinuationIR continuation(42); |
continuation.SetHeader("bar", "foo"); |
continuation.SetHeader("foo", "bar"); |
scoped_ptr<SpdySerializedFrame> frame( |
- framer.SerializeContinuation(continuation)); |
+ framer.SerializeContinuation(continuation)); |
CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData)); |
} |
@@ -3699,13 +3314,12 @@ TEST_P(SpdyFramerTest, ReadCompressedPushPromise) { |
push_promise.SetHeader("bar", "foofoo"); |
SpdyHeaderBlock headers = push_promise.name_value_block(); |
scoped_ptr<SpdySerializedFrame> frame( |
- framer.SerializePushPromise(push_promise)); |
+ framer.SerializePushPromise(push_promise)); |
EXPECT_TRUE(frame.get() != NULL); |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = true; |
- visitor.SimulateInFramer( |
- reinterpret_cast<unsigned char*>(frame->data()), |
- frame->size()); |
+ visitor.SimulateInFramer(reinterpret_cast<unsigned char*>(frame->data()), |
+ frame->size()); |
EXPECT_EQ(42u, visitor.last_push_promise_stream_); |
EXPECT_EQ(57u, visitor.last_push_promise_promised_stream_); |
EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); |
@@ -3717,28 +3331,17 @@ TEST_P(SpdyFramerTest, ReadHeadersWithContinuation) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x10, 0x01, 0x00, // HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
- |
- 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x08, 0x62, 0x61, 0x7a, |
- 0x3d, 0x62, 0x69, 0x6e, |
- 0x67, 0x40, 0x06, 0x43, |
- |
- 0x00, 0x12, 0x09, 0x04, // CONTINUATION: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x6f, 0x6f, 0x6b, 0x69, |
- 0x65, 0x00, 0x40, 0x04, |
- 0x6e, 0x61, 0x6d, 0x65, |
- 0x05, 0x76, 0x61, 0x6c, |
- 0x75, 0x65, |
+ 0x00, 0x10, 0x01, 0x00, // HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x07, 0x66, 0x6f, |
+ 0x6f, 0x3d, 0x62, 0x61, 0x72, 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x08, 0x62, 0x61, |
+ 0x7a, 0x3d, 0x62, 0x69, 0x6e, 0x67, 0x40, 0x06, 0x43, 0x00, 0x12, |
+ 0x09, 0x04, // CONTINUATION: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00, 0x40, 0x04, 0x6e, 0x61, 0x6d, |
+ 0x65, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3751,9 +3354,9 @@ TEST_P(SpdyFramerTest, ReadHeadersWithContinuation) { |
EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); |
EXPECT_EQ(0, visitor.zero_length_data_frame_count_); |
- EXPECT_THAT(visitor.headers_, ElementsAre( |
- Pair("Cookie", "foo=bar; baz=bing; "), |
- Pair("name", "value"))); |
+ EXPECT_THAT(visitor.headers_, |
+ ElementsAre(Pair("Cookie", "foo=bar; baz=bing; "), |
+ Pair("name", "value"))); |
} |
TEST_P(SpdyFramerTest, ReadHeadersWithContinuationAndFin) { |
@@ -3762,28 +3365,17 @@ TEST_P(SpdyFramerTest, ReadHeadersWithContinuationAndFin) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x10, 0x01, 0x01, // HEADERS: FIN |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
- |
- 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x08, 0x62, 0x61, 0x7a, |
- 0x3d, 0x62, 0x69, 0x6e, |
- 0x67, 0x40, 0x06, 0x43, |
- |
- 0x00, 0x12, 0x09, 0x04, // CONTINUATION: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x6f, 0x6f, 0x6b, 0x69, |
- 0x65, 0x00, 0x40, 0x04, |
- 0x6e, 0x61, 0x6d, 0x65, |
- 0x05, 0x76, 0x61, 0x6c, |
- 0x75, 0x65, |
+ 0x00, 0x10, 0x01, 0x01, // HEADERS: FIN |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x07, 0x66, 0x6f, |
+ 0x6f, 0x3d, 0x62, 0x61, 0x72, 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x08, 0x62, 0x61, |
+ 0x7a, 0x3d, 0x62, 0x69, 0x6e, 0x67, 0x40, 0x06, 0x43, 0x00, 0x12, |
+ 0x09, 0x04, // CONTINUATION: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00, 0x40, 0x04, 0x6e, 0x61, 0x6d, |
+ 0x65, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3797,9 +3389,9 @@ TEST_P(SpdyFramerTest, ReadHeadersWithContinuationAndFin) { |
EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); |
EXPECT_EQ(1, visitor.zero_length_data_frame_count_); |
- EXPECT_THAT(visitor.headers_, ElementsAre( |
- Pair("Cookie", "foo=bar; baz=bing; "), |
- Pair("name", "value"))); |
+ EXPECT_THAT(visitor.headers_, |
+ ElementsAre(Pair("Cookie", "foo=bar; baz=bing; "), |
+ Pair("name", "value"))); |
} |
TEST_P(SpdyFramerTest, ReadPushPromiseWithContinuation) { |
@@ -3808,29 +3400,18 @@ TEST_P(SpdyFramerTest, ReadPushPromiseWithContinuation) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x14, 0x05, 0x00, // PUSH_PROMISE |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x00, 0x00, 0x00, 0x2A, // Promised stream 42 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
- |
- 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x08, 0x62, 0x61, 0x7a, |
- 0x3d, 0x62, 0x69, 0x6e, |
- 0x67, 0x40, 0x06, 0x43, |
- |
- 0x00, 0x12, 0x09, 0x04, // CONTINUATION: END_HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x6f, 0x6f, 0x6b, 0x69, |
- 0x65, 0x00, 0x40, 0x04, |
- 0x6e, 0x61, 0x6d, 0x65, |
- 0x05, 0x76, 0x61, 0x6c, |
- 0x75, 0x65, |
+ 0x00, 0x14, 0x05, 0x00, // PUSH_PROMISE |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x00, 0x00, 0x00, 0x2A, // Promised stream 42 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x07, 0x66, 0x6f, |
+ 0x6f, 0x3d, 0x62, 0x61, 0x72, 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x08, 0x62, 0x61, |
+ 0x7a, 0x3d, 0x62, 0x69, 0x6e, 0x67, 0x40, 0x06, 0x43, 0x00, 0x12, |
+ 0x09, 0x04, // CONTINUATION: END_HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00, 0x40, 0x04, 0x6e, 0x61, 0x6d, |
+ 0x65, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3844,9 +3425,9 @@ TEST_P(SpdyFramerTest, ReadPushPromiseWithContinuation) { |
EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); |
EXPECT_EQ(0, visitor.zero_length_data_frame_count_); |
- EXPECT_THAT(visitor.headers_, ElementsAre( |
- Pair("Cookie", "foo=bar; baz=bing; "), |
- Pair("name", "value"))); |
+ EXPECT_THAT(visitor.headers_, |
+ ElementsAre(Pair("Cookie", "foo=bar; baz=bing; "), |
+ Pair("name", "value"))); |
} |
TEST_P(SpdyFramerTest, ReadContinuationWithWrongStreamId) { |
@@ -3855,20 +3436,13 @@ TEST_P(SpdyFramerTest, ReadContinuationWithWrongStreamId) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x10, 0x01, 0x00, // HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
- |
- 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
- 0x00, 0x00, 0x00, 0x02, // Stream 2 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x08, 0x62, 0x61, 0x7a, |
- 0x3d, 0x62, 0x69, 0x6e, |
- 0x67, 0x40, 0x06, 0x43, |
+ 0x00, 0x10, 0x01, 0x00, // HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x07, 0x66, 0x6f, |
+ 0x6f, 0x3d, 0x62, 0x61, 0x72, 0x00, 0x14, 0x09, 0x00, // CONTINUATION |
+ 0x00, 0x00, 0x00, 0x02, // Stream 2 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x08, 0x62, 0x61, |
+ 0x7a, 0x3d, 0x62, 0x69, 0x6e, 0x67, 0x40, 0x06, 0x43, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3891,12 +3465,10 @@ TEST_P(SpdyFramerTest, ReadContinuationOutOfOrder) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x10, 0x09, 0x00, // CONTINUATION |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
+ 0x00, 0x10, 0x09, 0x00, // CONTINUATION |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, |
+ 0x07, 0x66, 0x6f, 0x6f, 0x3d, 0x62, 0x61, 0x72, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3905,8 +3477,7 @@ TEST_P(SpdyFramerTest, ReadContinuationOutOfOrder) { |
visitor.SimulateInFramer(kInput, sizeof(kInput)); |
EXPECT_EQ(1, visitor.error_count_); |
- EXPECT_EQ(SpdyFramer::SPDY_UNEXPECTED_FRAME, |
- visitor.framer_.error_code()) |
+ EXPECT_EQ(SpdyFramer::SPDY_UNEXPECTED_FRAME, visitor.framer_.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
EXPECT_EQ(0, visitor.continuation_count_); |
EXPECT_EQ(0u, visitor.header_buffer_length_); |
@@ -3918,16 +3489,12 @@ TEST_P(SpdyFramerTest, ExpectContinuationReceiveData) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x10, 0x01, 0x00, // HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
- |
- 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1 |
- 0x00, 0x00, 0x00, 0x04, |
- 0xde, 0xad, 0xbe, 0xef, |
+ 0x00, 0x10, 0x01, 0x00, // HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x07, 0x66, 0x6f, |
+ 0x6f, 0x3d, 0x62, 0x61, 0x72, 0x00, 0x00, 0x00, 0x01, // DATA on Stream |
+ // #1 |
+ 0x00, 0x00, 0x00, 0x04, 0xde, 0xad, 0xbe, 0xef, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3936,8 +3503,7 @@ TEST_P(SpdyFramerTest, ExpectContinuationReceiveData) { |
visitor.SimulateInFramer(kInput, sizeof(kInput)); |
EXPECT_EQ(1, visitor.error_count_); |
- EXPECT_EQ(SpdyFramer::SPDY_UNEXPECTED_FRAME, |
- visitor.framer_.error_code()) |
+ EXPECT_EQ(SpdyFramer::SPDY_UNEXPECTED_FRAME, visitor.framer_.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
EXPECT_EQ(1, visitor.headers_frame_count_); |
EXPECT_EQ(0, visitor.continuation_count_); |
@@ -3951,20 +3517,14 @@ TEST_P(SpdyFramerTest, ExpectContinuationReceiveControlFrame) { |
} |
const unsigned char kInput[] = { |
- 0x00, 0x10, 0x01, 0x00, // HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x07, 0x66, 0x6f, 0x6f, |
- 0x3d, 0x62, 0x61, 0x72, |
- |
- 0x00, 0x14, 0x08, 0x00, // HEADERS |
- 0x00, 0x00, 0x00, 0x01, // Stream 1 |
- 0x40, 0x06, 0x43, 0x6f, // (Note this is a valid continued encoding). |
- 0x6f, 0x6b, 0x69, 0x65, |
- 0x08, 0x62, 0x61, 0x7a, |
- 0x3d, 0x62, 0x69, 0x6e, |
- 0x67, 0x40, 0x06, 0x43, |
+ 0x00, 0x10, 0x01, 0x00, // HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x07, 0x66, |
+ 0x6f, 0x6f, 0x3d, 0x62, 0x61, 0x72, 0x00, 0x14, 0x08, 0x00, // HEADERS |
+ 0x00, 0x00, 0x00, 0x01, // Stream 1 |
+ 0x40, 0x06, 0x43, 0x6f, // (Note this is a valid continued encoding). |
+ 0x6f, 0x6b, 0x69, 0x65, 0x08, 0x62, 0x61, 0x7a, 0x3d, 0x62, |
+ 0x69, 0x6e, 0x67, 0x40, 0x06, 0x43, |
}; |
SpdyFramer framer(spdy_version_); |
@@ -3973,8 +3533,7 @@ TEST_P(SpdyFramerTest, ExpectContinuationReceiveControlFrame) { |
visitor.SimulateInFramer(kInput, sizeof(kInput)); |
EXPECT_EQ(1, visitor.error_count_); |
- EXPECT_EQ(SpdyFramer::SPDY_UNEXPECTED_FRAME, |
- visitor.framer_.error_code()) |
+ EXPECT_EQ(SpdyFramer::SPDY_UNEXPECTED_FRAME, visitor.framer_.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
EXPECT_EQ(1, visitor.headers_frame_count_); |
EXPECT_EQ(0, visitor.continuation_count_); |
@@ -3998,10 +3557,8 @@ TEST_P(SpdyFramerTest, ReadGarbageWithValidLength) { |
} |
SpdyFramer framer(spdy_version_); |
const unsigned char kFrameData[] = { |
- 0x00, 0x10, 0xff, 0xff, |
- 0xff, 0xff, 0xff, 0xff, |
- 0xff, 0xff, 0xff, 0xff, |
- 0xff, 0xff, 0xff, 0xff, |
+ 0x00, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, |
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
@@ -4016,8 +3573,7 @@ TEST_P(SpdyFramerTest, ReadGarbageWithValidVersion) { |
} |
SpdyFramer framer(spdy_version_); |
const unsigned char kFrameData[] = { |
- 0x80, spdy_version_ch_, 0xff, 0xff, |
- 0xff, 0xff, 0xff, 0xff, |
+ 0x80, spdy_version_ch_, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, |
}; |
TestSpdyVisitor visitor(spdy_version_); |
visitor.use_compression_ = false; |
@@ -4058,62 +3614,60 @@ TEST_P(SpdyFramerTest, SizesTest) { |
} |
TEST_P(SpdyFramerTest, StateToStringTest) { |
- EXPECT_STREQ("ERROR", |
- SpdyFramer::StateToString(SpdyFramer::SPDY_ERROR)); |
+ EXPECT_STREQ("ERROR", SpdyFramer::StateToString(SpdyFramer::SPDY_ERROR)); |
EXPECT_STREQ("AUTO_RESET", |
SpdyFramer::StateToString(SpdyFramer::SPDY_AUTO_RESET)); |
- EXPECT_STREQ("RESET", |
- SpdyFramer::StateToString(SpdyFramer::SPDY_RESET)); |
- EXPECT_STREQ("READING_COMMON_HEADER", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_READING_COMMON_HEADER)); |
- EXPECT_STREQ("CONTROL_FRAME_PAYLOAD", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_CONTROL_FRAME_PAYLOAD)); |
- EXPECT_STREQ("IGNORE_REMAINING_PAYLOAD", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_IGNORE_REMAINING_PAYLOAD)); |
- EXPECT_STREQ("FORWARD_STREAM_FRAME", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_FORWARD_STREAM_FRAME)); |
+ EXPECT_STREQ("RESET", SpdyFramer::StateToString(SpdyFramer::SPDY_RESET)); |
+ EXPECT_STREQ( |
+ "READING_COMMON_HEADER", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_READING_COMMON_HEADER)); |
+ EXPECT_STREQ( |
+ "CONTROL_FRAME_PAYLOAD", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_CONTROL_FRAME_PAYLOAD)); |
+ EXPECT_STREQ( |
+ "IGNORE_REMAINING_PAYLOAD", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_IGNORE_REMAINING_PAYLOAD)); |
+ EXPECT_STREQ( |
+ "FORWARD_STREAM_FRAME", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_FORWARD_STREAM_FRAME)); |
EXPECT_STREQ("SPDY_CONTROL_FRAME_BEFORE_HEADER_BLOCK", |
SpdyFramer::StateToString( |
SpdyFramer::SPDY_CONTROL_FRAME_BEFORE_HEADER_BLOCK)); |
- EXPECT_STREQ("SPDY_CONTROL_FRAME_HEADER_BLOCK", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_CONTROL_FRAME_HEADER_BLOCK)); |
- EXPECT_STREQ("SPDY_SETTINGS_FRAME_PAYLOAD", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_SETTINGS_FRAME_PAYLOAD)); |
- EXPECT_STREQ("UNKNOWN_STATE", |
- SpdyFramer::StateToString( |
- SpdyFramer::SPDY_SETTINGS_FRAME_PAYLOAD + 1)); |
+ EXPECT_STREQ( |
+ "SPDY_CONTROL_FRAME_HEADER_BLOCK", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_CONTROL_FRAME_HEADER_BLOCK)); |
+ EXPECT_STREQ( |
+ "SPDY_SETTINGS_FRAME_PAYLOAD", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_SETTINGS_FRAME_PAYLOAD)); |
+ EXPECT_STREQ( |
+ "UNKNOWN_STATE", |
+ SpdyFramer::StateToString(SpdyFramer::SPDY_SETTINGS_FRAME_PAYLOAD + 1)); |
} |
TEST_P(SpdyFramerTest, ErrorCodeToStringTest) { |
EXPECT_STREQ("NO_ERROR", |
SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_NO_ERROR)); |
- EXPECT_STREQ("INVALID_CONTROL_FRAME", |
- SpdyFramer::ErrorCodeToString( |
- SpdyFramer::SPDY_INVALID_CONTROL_FRAME)); |
+ EXPECT_STREQ( |
+ "INVALID_CONTROL_FRAME", |
+ SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_INVALID_CONTROL_FRAME)); |
EXPECT_STREQ("CONTROL_PAYLOAD_TOO_LARGE", |
SpdyFramer::ErrorCodeToString( |
SpdyFramer::SPDY_CONTROL_PAYLOAD_TOO_LARGE)); |
- EXPECT_STREQ("ZLIB_INIT_FAILURE", |
- SpdyFramer::ErrorCodeToString( |
- SpdyFramer::SPDY_ZLIB_INIT_FAILURE)); |
- EXPECT_STREQ("UNSUPPORTED_VERSION", |
- SpdyFramer::ErrorCodeToString( |
- SpdyFramer::SPDY_UNSUPPORTED_VERSION)); |
- EXPECT_STREQ("DECOMPRESS_FAILURE", |
- SpdyFramer::ErrorCodeToString( |
- SpdyFramer::SPDY_DECOMPRESS_FAILURE)); |
- EXPECT_STREQ("COMPRESS_FAILURE", |
- SpdyFramer::ErrorCodeToString( |
- SpdyFramer::SPDY_COMPRESS_FAILURE)); |
- EXPECT_STREQ("SPDY_INVALID_DATA_FRAME_FLAGS", |
- SpdyFramer::ErrorCodeToString( |
- SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS)); |
+ EXPECT_STREQ( |
+ "ZLIB_INIT_FAILURE", |
+ SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_ZLIB_INIT_FAILURE)); |
+ EXPECT_STREQ( |
+ "UNSUPPORTED_VERSION", |
+ SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_UNSUPPORTED_VERSION)); |
+ EXPECT_STREQ( |
+ "DECOMPRESS_FAILURE", |
+ SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_DECOMPRESS_FAILURE)); |
+ EXPECT_STREQ( |
+ "COMPRESS_FAILURE", |
+ SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_COMPRESS_FAILURE)); |
+ EXPECT_STREQ( |
+ "SPDY_INVALID_DATA_FRAME_FLAGS", |
+ SpdyFramer::ErrorCodeToString(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS)); |
EXPECT_STREQ("SPDY_INVALID_CONTROL_FRAME_FLAGS", |
SpdyFramer::ErrorCodeToString( |
SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS)); |
@@ -4122,8 +3676,7 @@ TEST_P(SpdyFramerTest, ErrorCodeToStringTest) { |
} |
TEST_P(SpdyFramerTest, StatusCodeToStringTest) { |
- EXPECT_STREQ("INVALID", |
- SpdyFramer::StatusCodeToString(RST_STREAM_INVALID)); |
+ EXPECT_STREQ("INVALID", SpdyFramer::StatusCodeToString(RST_STREAM_INVALID)); |
EXPECT_STREQ("PROTOCOL_ERROR", |
SpdyFramer::StatusCodeToString(RST_STREAM_PROTOCOL_ERROR)); |
EXPECT_STREQ("INVALID_STREAM", |
@@ -4132,43 +3685,28 @@ TEST_P(SpdyFramerTest, StatusCodeToStringTest) { |
SpdyFramer::StatusCodeToString(RST_STREAM_REFUSED_STREAM)); |
EXPECT_STREQ("UNSUPPORTED_VERSION", |
SpdyFramer::StatusCodeToString(RST_STREAM_UNSUPPORTED_VERSION)); |
- EXPECT_STREQ("CANCEL", |
- SpdyFramer::StatusCodeToString(RST_STREAM_CANCEL)); |
+ EXPECT_STREQ("CANCEL", SpdyFramer::StatusCodeToString(RST_STREAM_CANCEL)); |
EXPECT_STREQ("INTERNAL_ERROR", |
SpdyFramer::StatusCodeToString(RST_STREAM_INTERNAL_ERROR)); |
EXPECT_STREQ("FLOW_CONTROL_ERROR", |
SpdyFramer::StatusCodeToString(RST_STREAM_FLOW_CONTROL_ERROR)); |
- EXPECT_STREQ("UNKNOWN_STATUS", |
- SpdyFramer::StatusCodeToString(-1)); |
+ EXPECT_STREQ("UNKNOWN_STATUS", SpdyFramer::StatusCodeToString(-1)); |
} |
TEST_P(SpdyFramerTest, FrameTypeToStringTest) { |
- EXPECT_STREQ("DATA", |
- SpdyFramer::FrameTypeToString(DATA)); |
- EXPECT_STREQ("SYN_STREAM", |
- SpdyFramer::FrameTypeToString(SYN_STREAM)); |
- EXPECT_STREQ("SYN_REPLY", |
- SpdyFramer::FrameTypeToString(SYN_REPLY)); |
- EXPECT_STREQ("RST_STREAM", |
- SpdyFramer::FrameTypeToString(RST_STREAM)); |
- EXPECT_STREQ("SETTINGS", |
- SpdyFramer::FrameTypeToString(SETTINGS)); |
- EXPECT_STREQ("NOOP", |
- SpdyFramer::FrameTypeToString(NOOP)); |
- EXPECT_STREQ("PING", |
- SpdyFramer::FrameTypeToString(PING)); |
- EXPECT_STREQ("GOAWAY", |
- SpdyFramer::FrameTypeToString(GOAWAY)); |
- EXPECT_STREQ("HEADERS", |
- SpdyFramer::FrameTypeToString(HEADERS)); |
- EXPECT_STREQ("WINDOW_UPDATE", |
- SpdyFramer::FrameTypeToString(WINDOW_UPDATE)); |
- EXPECT_STREQ("PUSH_PROMISE", |
- SpdyFramer::FrameTypeToString(PUSH_PROMISE)); |
- EXPECT_STREQ("CREDENTIAL", |
- SpdyFramer::FrameTypeToString(CREDENTIAL)); |
- EXPECT_STREQ("CONTINUATION", |
- SpdyFramer::FrameTypeToString(CONTINUATION)); |
+ EXPECT_STREQ("DATA", SpdyFramer::FrameTypeToString(DATA)); |
+ EXPECT_STREQ("SYN_STREAM", SpdyFramer::FrameTypeToString(SYN_STREAM)); |
+ EXPECT_STREQ("SYN_REPLY", SpdyFramer::FrameTypeToString(SYN_REPLY)); |
+ EXPECT_STREQ("RST_STREAM", SpdyFramer::FrameTypeToString(RST_STREAM)); |
+ EXPECT_STREQ("SETTINGS", SpdyFramer::FrameTypeToString(SETTINGS)); |
+ EXPECT_STREQ("NOOP", SpdyFramer::FrameTypeToString(NOOP)); |
+ EXPECT_STREQ("PING", SpdyFramer::FrameTypeToString(PING)); |
+ EXPECT_STREQ("GOAWAY", SpdyFramer::FrameTypeToString(GOAWAY)); |
+ EXPECT_STREQ("HEADERS", SpdyFramer::FrameTypeToString(HEADERS)); |
+ EXPECT_STREQ("WINDOW_UPDATE", SpdyFramer::FrameTypeToString(WINDOW_UPDATE)); |
+ EXPECT_STREQ("PUSH_PROMISE", SpdyFramer::FrameTypeToString(PUSH_PROMISE)); |
+ EXPECT_STREQ("CREDENTIAL", SpdyFramer::FrameTypeToString(CREDENTIAL)); |
+ EXPECT_STREQ("CONTINUATION", SpdyFramer::FrameTypeToString(CONTINUATION)); |
} |
TEST_P(SpdyFramerTest, CatchProbableHttpResponse) { |
@@ -4231,8 +3769,7 @@ TEST_P(SpdyFramerTest, DataFrameFlagsV2V3) { |
framer.ProcessInput(frame->data(), frame->size()); |
if (flags & ~DATA_FLAG_FIN) { |
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
- EXPECT_EQ(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS, |
- framer.error_code()) |
+ EXPECT_EQ(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS, framer.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else { |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
@@ -4248,7 +3785,7 @@ TEST_P(SpdyFramerTest, DataFrameFlagsV4) { |
} |
uint8 valid_data_flags = DATA_FLAG_FIN | DATA_FLAG_END_SEGMENT | |
- DATA_FLAG_PAD_LOW | DATA_FLAG_PAD_HIGH; |
+ DATA_FLAG_PAD_LOW | DATA_FLAG_PAD_HIGH; |
for (int flags = 0; flags < 256; ++flags) { |
SCOPED_TRACE(testing::Message() << "Flags " << flags); |
@@ -4279,10 +3816,9 @@ TEST_P(SpdyFramerTest, DataFrameFlagsV4) { |
framer.ProcessInput(frame->data(), frame->size()); |
if ((flags & ~valid_data_flags) || (flags & DATA_FLAG_PAD_LOW) || |
(flags & DATA_FLAG_PAD_HIGH)) { |
- EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
- EXPECT_EQ(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS, |
- framer.error_code()) |
- << SpdyFramer::ErrorCodeToString(framer.error_code()); |
+ EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
+ EXPECT_EQ(SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS, framer.error_code()) |
+ << SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else { |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |
@@ -4319,23 +3855,26 @@ TEST_P(SpdyFramerTest, SynStreamFrameFlags) { |
flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) { |
EXPECT_CALL(visitor, OnError(_)); |
} else if (IsSpdy4() && |
- flags & ~(CONTROL_FLAG_FIN | |
- HEADERS_FLAG_PRIORITY | |
+ flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY | |
HEADERS_FLAG_END_HEADERS)) { |
EXPECT_CALL(visitor, OnError(_)); |
} else { |
EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(8, SYN_STREAM, _)); |
if (IsSpdy4()) { |
- EXPECT_CALL(visitor, OnSynStream(8, 0, 1, flags & CONTROL_FLAG_FIN, |
- false)); |
+ EXPECT_CALL(visitor, |
+ OnSynStream(8, 0, 1, flags & CONTROL_FLAG_FIN, false)); |
} else { |
- EXPECT_CALL(visitor, OnSynStream(8, 3, 1, flags & CONTROL_FLAG_FIN, |
- flags & CONTROL_FLAG_UNIDIRECTIONAL)); |
+ EXPECT_CALL(visitor, |
+ OnSynStream(8, |
+ 3, |
+ 1, |
+ flags & CONTROL_FLAG_FIN, |
+ flags & CONTROL_FLAG_UNIDIRECTIONAL)); |
} |
EXPECT_CALL(visitor, OnControlFrameHeaderData(8, _, _)) |
.WillRepeatedly(testing::Return(true)); |
- if (flags & DATA_FLAG_FIN && (!IsSpdy4() || |
- flags & HEADERS_FLAG_END_HEADERS)) { |
+ if (flags & DATA_FLAG_FIN && |
+ (!IsSpdy4() || flags & HEADERS_FLAG_END_HEADERS)) { |
EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); |
} else { |
// Do not close the stream if we are expecting a CONTINUATION frame. |
@@ -4351,9 +3890,8 @@ TEST_P(SpdyFramerTest, SynStreamFrameFlags) { |
framer.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else if (IsSpdy4() && |
- flags & ~(CONTROL_FLAG_FIN | |
- HEADERS_FLAG_PRIORITY | |
- HEADERS_FLAG_END_HEADERS)) { |
+ flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY | |
+ HEADERS_FLAG_END_HEADERS)) { |
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS, |
framer.error_code()) |
@@ -4441,7 +3979,9 @@ TEST_P(SpdyFramerTest, RstStreamFrameFlags) { |
} |
TEST_P(SpdyFramerTest, SettingsFrameFlagsOldFormat) { |
- if (spdy_version_ > SPDY3) { return; } |
+ if (spdy_version_ > SPDY3) { |
+ return; |
+ } |
for (int flags = 0; flags < 256; ++flags) { |
SCOPED_TRACE(testing::Message() << "Flags " << flags); |
@@ -4450,20 +3990,20 @@ TEST_P(SpdyFramerTest, SettingsFrameFlagsOldFormat) { |
framer.set_visitor(&visitor); |
SpdySettingsIR settings_ir; |
- settings_ir.AddSetting(SETTINGS_UPLOAD_BANDWIDTH, |
- false, |
- false, |
- 54321); |
+ settings_ir.AddSetting(SETTINGS_UPLOAD_BANDWIDTH, false, false, 54321); |
scoped_ptr<SpdyFrame> frame(framer.SerializeSettings(settings_ir)); |
SetFrameFlags(frame.get(), flags, spdy_version_); |
if (flags & ~SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS) { |
EXPECT_CALL(visitor, OnError(_)); |
} else { |
- EXPECT_CALL(visitor, OnSettings( |
- flags & SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS)); |
- EXPECT_CALL(visitor, OnSetting(SETTINGS_UPLOAD_BANDWIDTH, |
- SETTINGS_FLAG_NONE, 54321)); |
+ EXPECT_CALL( |
+ visitor, |
+ OnSettings(flags & |
+ SETTINGS_FLAG_CLEAR_PREVIOUSLY_PERSISTED_SETTINGS)); |
+ EXPECT_CALL( |
+ visitor, |
+ OnSetting(SETTINGS_UPLOAD_BANDWIDTH, SETTINGS_FLAG_NONE, 54321)); |
EXPECT_CALL(visitor, OnSettingsEnd()); |
} |
@@ -4482,7 +4022,9 @@ TEST_P(SpdyFramerTest, SettingsFrameFlagsOldFormat) { |
} |
TEST_P(SpdyFramerTest, SettingsFrameFlags) { |
- if (spdy_version_ <= SPDY3) { return; } |
+ if (spdy_version_ <= SPDY3) { |
+ return; |
+ } |
for (int flags = 0; flags < 256; ++flags) { |
SCOPED_TRACE(testing::Message() << "Flags " << flags); |
@@ -4512,8 +4054,7 @@ TEST_P(SpdyFramerTest, SettingsFrameFlags) { |
} else if (flags & SETTINGS_FLAG_ACK) { |
// The frame is invalid because ACK frames should have no payload. |
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
- EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, |
- framer.error_code()) |
+ EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, framer.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else { |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
@@ -4574,18 +4115,18 @@ TEST_P(SpdyFramerTest, HeadersFrameFlags) { |
if (!IsSpdy4() && flags & ~CONTROL_FLAG_FIN) { |
EXPECT_CALL(visitor, OnError(_)); |
- } else if (IsSpdy4() && flags & ~(CONTROL_FLAG_FIN | |
- HEADERS_FLAG_END_HEADERS)) { |
+ } else if (IsSpdy4() && |
+ flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_END_HEADERS)) { |
EXPECT_CALL(visitor, OnError(_)); |
} else { |
- EXPECT_CALL(visitor, OnHeaders(57, |
- flags & CONTROL_FLAG_FIN, |
- (flags & HEADERS_FLAG_END_HEADERS) || |
- !IsSpdy4())); |
+ EXPECT_CALL(visitor, |
+ OnHeaders(57, |
+ flags & CONTROL_FLAG_FIN, |
+ (flags & HEADERS_FLAG_END_HEADERS) || !IsSpdy4())); |
EXPECT_CALL(visitor, OnControlFrameHeaderData(57, _, _)) |
.WillRepeatedly(testing::Return(true)); |
- if (flags & DATA_FLAG_FIN && (!IsSpdy4() || |
- flags & HEADERS_FLAG_END_HEADERS)) { |
+ if (flags & DATA_FLAG_FIN && |
+ (!IsSpdy4() || flags & HEADERS_FLAG_END_HEADERS)) { |
EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); |
} else { |
// Do not close the stream if we are expecting a CONTINUATION frame. |
@@ -4599,8 +4140,9 @@ TEST_P(SpdyFramerTest, HeadersFrameFlags) { |
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 | |
- HEADERS_FLAG_END_HEADERS)) { |
+ } else if (IsSpdy4() && |
+ flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY | |
+ HEADERS_FLAG_END_HEADERS)) { |
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS, |
framer.error_code()) |
@@ -4628,8 +4170,7 @@ TEST_P(SpdyFramerTest, PingFrameFlags) { |
scoped_ptr<SpdyFrame> frame(framer.SerializePing(SpdyPingIR(42))); |
SetFrameFlags(frame.get(), flags, spdy_version_); |
- if (spdy_version_ > SPDY3 && |
- flags == PING_FLAG_ACK) { |
+ if (spdy_version_ > SPDY3 && flags == PING_FLAG_ACK) { |
EXPECT_CALL(visitor, OnPing(42, true)); |
} else if (flags == 0) { |
EXPECT_CALL(visitor, OnPing(42, false)); |
@@ -4638,8 +4179,7 @@ TEST_P(SpdyFramerTest, PingFrameFlags) { |
} |
framer.ProcessInput(frame->data(), frame->size()); |
- if ((spdy_version_ > SPDY3 && flags == PING_FLAG_ACK) || |
- flags == 0) { |
+ if ((spdy_version_ > SPDY3 && flags == PING_FLAG_ACK) || flags == 0) { |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |
<< SpdyFramer::ErrorCodeToString(framer.error_code()); |
@@ -4660,8 +4200,8 @@ TEST_P(SpdyFramerTest, WindowUpdateFrameFlags) { |
SpdyFramer framer(spdy_version_); |
framer.set_visitor(&visitor); |
- scoped_ptr<SpdyFrame> frame(framer.SerializeWindowUpdate( |
- SpdyWindowUpdateIR(4, 1024))); |
+ scoped_ptr<SpdyFrame> frame( |
+ framer.SerializeWindowUpdate(SpdyWindowUpdateIR(4, 1024))); |
SetFrameFlags(frame.get(), flags, spdy_version_); |
if (flags != 0) { |
@@ -4703,15 +4243,16 @@ TEST_P(SpdyFramerTest, PushPromiseFrameFlags) { |
SpdyPushPromiseIR push_promise(42, 57); |
push_promise.SetHeader("foo", "bar"); |
scoped_ptr<SpdySerializedFrame> frame( |
- framer.SerializePushPromise(push_promise)); |
+ framer.SerializePushPromise(push_promise)); |
SetFrameFlags(frame.get(), flags, spdy_version_); |
if (flags & ~(PUSH_PROMISE_FLAG_END_PUSH_PROMISE)) { |
EXPECT_CALL(visitor, OnError(_)); |
} else { |
EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(42, PUSH_PROMISE, _)); |
- EXPECT_CALL(visitor, OnPushPromise(42, 57, |
- flags & PUSH_PROMISE_FLAG_END_PUSH_PROMISE)); |
+ EXPECT_CALL( |
+ visitor, |
+ OnPushPromise(42, 57, flags & PUSH_PROMISE_FLAG_END_PUSH_PROMISE)); |
EXPECT_CALL(visitor, OnControlFrameHeaderData(42, _, _)) |
.WillRepeatedly(testing::Return(true)); |
} |
@@ -4748,7 +4289,7 @@ TEST_P(SpdyFramerTest, ContinuationFrameFlags) { |
EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(42, HEADERS, _)); |
EXPECT_CALL(visitor, OnHeaders(42, 0, false)); |
EXPECT_CALL(visitor, OnControlFrameHeaderData(42, _, _)) |
- .WillRepeatedly(testing::Return(true)); |
+ .WillRepeatedly(testing::Return(true)); |
EXPECT_CALL(debug_visitor, OnSendCompressedFrame(42, CONTINUATION, _, _)); |
SpdyHeadersIR headers_ir(42); |
@@ -4759,15 +4300,15 @@ TEST_P(SpdyFramerTest, ContinuationFrameFlags) { |
SpdyContinuationIR continuation(42); |
continuation.SetHeader("foo", "bar"); |
scoped_ptr<SpdySerializedFrame> frame( |
- framer.SerializeContinuation(continuation)); |
+ framer.SerializeContinuation(continuation)); |
SetFrameFlags(frame.get(), flags, spdy_version_); |
if (flags & ~(HEADERS_FLAG_END_HEADERS)) { |
EXPECT_CALL(visitor, OnError(_)); |
} else { |
EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(42, CONTINUATION, _)); |
- EXPECT_CALL(visitor, OnContinuation(42, |
- flags & HEADERS_FLAG_END_HEADERS)); |
+ EXPECT_CALL(visitor, |
+ OnContinuation(42, flags & HEADERS_FLAG_END_HEADERS)); |
EXPECT_CALL(visitor, OnControlFrameHeaderData(42, _, _)) |
.WillRepeatedly(testing::Return(true)); |
} |
@@ -4832,28 +4373,20 @@ TEST_P(SpdyFramerTest, RstStreamStatusBounds) { |
const unsigned char kRstStreamStatusTooLow = 0x00; |
const unsigned char kRstStreamStatusTooHigh = 0xff; |
const unsigned char kV3RstStreamInvalid[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, kRstStreamStatusTooLow |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x03, 0x00, 0x00, |
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, kRstStreamStatusTooLow}; |
const unsigned char kV4RstStreamInvalid[] = { |
- 0x00, 0x04, 0x03, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, kRstStreamStatusTooLow |
- }; |
+ 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, kRstStreamStatusTooLow}; |
const unsigned char kV3RstStreamNumStatusCodes[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x03, |
- 0x00, 0x00, 0x00, 0x08, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, kRstStreamStatusTooHigh |
- }; |
+ 0x80, spdy_version_ch_, 0x00, 0x03, 0x00, 0x00, |
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, kRstStreamStatusTooHigh}; |
const unsigned char kV4RstStreamNumStatusCodes[] = { |
- 0x00, 0x04, 0x03, 0x00, |
- 0x00, 0x00, 0x00, 0x01, |
- 0x00, 0x00, 0x00, kRstStreamStatusTooHigh |
- }; |
+ 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, |
+ 0x00, 0x01, 0x00, 0x00, 0x00, kRstStreamStatusTooHigh}; |
testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |
SpdyFramer framer(spdy_version_); |
@@ -4865,17 +4398,16 @@ TEST_P(SpdyFramerTest, RstStreamStatusBounds) { |
arraysize(kV4RstStreamInvalid)); |
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, framer.error_code()) |
- << SpdyFramer::ErrorCodeToString(framer.error_code()); |
+ << SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else { |
EXPECT_CALL(visitor, OnRstStream(1, RST_STREAM_INVALID)); |
framer.ProcessInput(reinterpret_cast<const char*>(kV3RstStreamInvalid), |
arraysize(kV3RstStreamInvalid)); |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |
- << SpdyFramer::ErrorCodeToString(framer.error_code()); |
+ << SpdyFramer::ErrorCodeToString(framer.error_code()); |
} |
- |
framer.Reset(); |
if (IsSpdy4()) { |
@@ -4885,7 +4417,7 @@ TEST_P(SpdyFramerTest, RstStreamStatusBounds) { |
arraysize(kV4RstStreamNumStatusCodes)); |
EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, framer.error_code()) |
- << SpdyFramer::ErrorCodeToString(framer.error_code()); |
+ << SpdyFramer::ErrorCodeToString(framer.error_code()); |
} else { |
EXPECT_CALL(visitor, OnRstStream(1, RST_STREAM_INVALID)); |
framer.ProcessInput( |
@@ -4893,28 +4425,23 @@ TEST_P(SpdyFramerTest, RstStreamStatusBounds) { |
arraysize(kV3RstStreamNumStatusCodes)); |
EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |
EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |
- << SpdyFramer::ErrorCodeToString(framer.error_code()); |
+ << SpdyFramer::ErrorCodeToString(framer.error_code()); |
} |
} |
// Tests handling of a GOAWAY frame with out-of-bounds stream ID. |
TEST_P(SpdyFramerTest, GoAwayStreamIdBounds) { |
const unsigned char kV2FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x04, |
- 0xff, 0xff, 0xff, 0xff, |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, |
+ 0x00, 0x04, 0xff, 0xff, 0xff, 0xff, |
}; |
const unsigned char kV3FrameData[] = { |
- 0x80, spdy_version_ch_, 0x00, 0x07, |
- 0x00, 0x00, 0x00, 0x08, |
- 0xff, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x00, |
+ 0x80, spdy_version_ch_, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, |
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, |
}; |
const unsigned char kV4FrameData[] = { |
- 0x00, 0x08, 0x07, 0x00, |
- 0x00, 0x00, 0x00, 0x00, |
- 0xff, 0xff, 0xff, 0xff, |
- 0x00, 0x00, 0x00, 0x00, |
+ 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, |
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, |
}; |
testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |