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

Unified Diff: net/quic/quic_headers_stream_test.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_headers_stream.cc ('k') | net/quic/quic_http_stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_headers_stream_test.cc
diff --git a/net/quic/quic_headers_stream_test.cc b/net/quic/quic_headers_stream_test.cc
deleted file mode 100644
index 9d684ac4c76f38bf2563442e731af513a43d4092..0000000000000000000000000000000000000000
--- a/net/quic/quic_headers_stream_test.cc
+++ /dev/null
@@ -1,467 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/quic/quic_headers_stream.h"
-
-#include "net/quic/quic_utils.h"
-#include "net/quic/spdy_utils.h"
-#include "net/quic/test_tools/quic_connection_peer.h"
-#include "net/quic/test_tools/quic_session_peer.h"
-#include "net/quic/test_tools/quic_test_utils.h"
-#include "net/quic/test_tools/reliable_quic_stream_peer.h"
-#include "net/spdy/spdy_protocol.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using base::StringPiece;
-using std::ostream;
-using std::string;
-using std::vector;
-using testing::Invoke;
-using testing::StrictMock;
-using testing::WithArgs;
-using testing::_;
-
-namespace net {
-namespace test {
-namespace {
-
-class MockVisitor : public SpdyFramerVisitorInterface {
- public:
- MOCK_METHOD1(OnError, void(SpdyFramer* framer));
- MOCK_METHOD3(OnDataFrameHeader, void(SpdyStreamId stream_id,
- size_t length,
- bool fin));
- MOCK_METHOD4(OnStreamFrameData, void(SpdyStreamId stream_id,
- const char* data,
- size_t len,
- bool fin));
- MOCK_METHOD3(OnControlFrameHeaderData, bool(SpdyStreamId stream_id,
- const char* header_data,
- size_t len));
- MOCK_METHOD5(OnSynStream, void(SpdyStreamId stream_id,
- SpdyStreamId associated_stream_id,
- SpdyPriority priority,
- bool fin,
- bool unidirectional));
- MOCK_METHOD2(OnSynReply, void(SpdyStreamId stream_id, bool fin));
- MOCK_METHOD2(OnRstStream, void(SpdyStreamId stream_id,
- SpdyRstStreamStatus status));
- MOCK_METHOD1(OnSettings, void(bool clear_persisted));
- MOCK_METHOD3(OnSetting, void(SpdySettingsIds id, uint8 flags, uint32 value));
- MOCK_METHOD0(OnSettingsAck, void());
- MOCK_METHOD0(OnSettingsEnd, void());
- MOCK_METHOD2(OnPing, void(SpdyPingId unique_id, bool is_ack));
- MOCK_METHOD2(OnGoAway, void(SpdyStreamId last_accepted_stream_id,
- SpdyGoAwayStatus status));
- MOCK_METHOD5(OnHeaders, void(SpdyStreamId stream_id, bool has_priority,
- SpdyPriority priority, bool fin, bool end));
- MOCK_METHOD2(OnWindowUpdate, void(SpdyStreamId stream_id,
- uint32 delta_window_size));
- MOCK_METHOD2(OnCredentialFrameData, bool(const char* credential_data,
- size_t len));
- MOCK_METHOD1(OnBlocked, void(SpdyStreamId stream_id));
- MOCK_METHOD3(OnPushPromise, void(SpdyStreamId stream_id,
- SpdyStreamId promised_stream_id,
- bool end));
- MOCK_METHOD2(OnContinuation, void(SpdyStreamId stream_id, bool end));
- MOCK_METHOD6(OnAltSvc, void(SpdyStreamId stream_id,
- uint32 max_age,
- uint16 port,
- StringPiece protocol_id,
- StringPiece host,
- StringPiece origin));
- MOCK_METHOD2(OnUnknownFrame, bool(SpdyStreamId stream_id, int frame_type));
-};
-
-// Run all tests with each version, and client or server
-struct TestParams {
- TestParams(QuicVersion version, bool is_server)
- : version(version), is_server(is_server) {}
-
- friend ostream& operator<<(ostream& os, const TestParams& p) {
- os << "{ version: " << QuicVersionToString(p.version);
- os << ", is_server: " << p.is_server << " }";
- return os;
- }
-
- QuicVersion version;
- bool is_server;
-};
-
-// Constructs various test permutations.
-vector<TestParams> GetTestParams() {
- vector<TestParams> params;
- QuicVersionVector all_supported_versions = QuicSupportedVersions();
- for (const QuicVersion version : all_supported_versions) {
- params.push_back(TestParams(version, false));
- params.push_back(TestParams(version, true));
- }
- return params;
-}
-
-class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> {
- public:
- QuicHeadersStreamTest()
- : connection_(new StrictMock<MockConnection>(is_server(), GetVersion())),
- session_(connection_),
- headers_stream_(QuicSessionPeer::GetHeadersStream(&session_)),
- body_("hello world"),
- framer_(version() > QUIC_VERSION_23 ? SPDY4 : SPDY3) {
- headers_[":version"] = "HTTP/1.1";
- headers_[":status"] = "200 Ok";
- headers_["content-length"] = "11";
- framer_.set_visitor(&visitor_);
- EXPECT_EQ(version(), session_.connection()->version());
- EXPECT_TRUE(headers_stream_ != nullptr);
- VLOG(1) << GetParam();
- }
-
- QuicConsumedData SaveIov(const IOVector& data) {
- const iovec* iov = data.iovec();
- int count = data.Capacity();
- for (int i = 0 ; i < count; ++i) {
- saved_data_.append(static_cast<char*>(iov[i].iov_base), iov[i].iov_len);
- }
- return QuicConsumedData(saved_data_.length(), false);
- }
-
- bool SaveHeaderData(const char* data, int len) {
- saved_header_data_.append(data, len);
- return true;
- }
-
- void SaveHeaderDataStringPiece(StringPiece data) {
- saved_header_data_.append(data.data(), data.length());
- }
-
- void WriteHeadersAndExpectSynStream(QuicStreamId stream_id,
- bool fin,
- QuicPriority priority) {
- WriteHeadersAndCheckData(stream_id, fin, priority, SYN_STREAM);
- }
-
- void WriteHeadersAndExpectSynReply(QuicStreamId stream_id,
- bool fin) {
- WriteHeadersAndCheckData(stream_id, fin, 0, SYN_REPLY);
- }
-
- void WriteHeadersAndCheckData(QuicStreamId stream_id,
- bool fin,
- QuicPriority priority,
- SpdyFrameType type) {
- // Write the headers and capture the outgoing data
- EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, _, false, _, nullptr))
- .WillOnce(WithArgs<1>(Invoke(this, &QuicHeadersStreamTest::SaveIov)));
- headers_stream_->WriteHeaders(stream_id, headers_, fin, priority, nullptr);
-
- // Parse the outgoing data and check that it matches was was written.
- if (type == SYN_STREAM) {
- if (version() > QUIC_VERSION_23) {
- EXPECT_CALL(visitor_, OnHeaders(stream_id, kHasPriority, priority, fin,
- kFrameComplete));
- } else {
- EXPECT_CALL(visitor_,
- OnSynStream(stream_id, kNoAssociatedStream,
- /*priority=*/0, fin, kNotUnidirectional));
- }
- } else {
- if (version() > QUIC_VERSION_23) {
- EXPECT_CALL(visitor_, OnHeaders(stream_id, !kHasPriority,
- /*priority=*/0, fin, kFrameComplete));
- } else {
- EXPECT_CALL(visitor_, OnSynReply(stream_id, fin));
- }
- }
- EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _))
- .WillRepeatedly(WithArgs<1, 2>(
- Invoke(this, &QuicHeadersStreamTest::SaveHeaderData)));
- if (fin) {
- EXPECT_CALL(visitor_, OnStreamFrameData(stream_id, nullptr, 0, true));
- }
- framer_.ProcessInput(saved_data_.data(), saved_data_.length());
- EXPECT_FALSE(framer_.HasError())
- << SpdyFramer::ErrorCodeToString(framer_.error_code());
-
- CheckHeaders();
- saved_data_.clear();
- }
-
- void CheckHeaders() {
- SpdyHeaderBlock headers;
- EXPECT_EQ(saved_header_data_.length(),
- framer_.ParseHeaderBlockInBuffer(saved_header_data_.data(),
- saved_header_data_.length(),
- &headers));
- EXPECT_EQ(headers_, headers);
- saved_header_data_.clear();
- }
-
- bool is_server() { return GetParam().is_server; }
-
- QuicVersion version() { return GetParam().version; }
-
- QuicVersionVector GetVersion() {
- QuicVersionVector versions;
- versions.push_back(version());
- return versions;
- }
-
- void CloseConnection() {
- QuicConnectionPeer::CloseConnection(connection_);
- }
-
- static const bool kFrameComplete = true;
- static const bool kHasPriority = true;
- static const bool kNotUnidirectional = false;
- static const bool kNoAssociatedStream = false;
-
- StrictMock<MockConnection>* connection_;
- StrictMock<MockSession> session_;
- QuicHeadersStream* headers_stream_;
- SpdyHeaderBlock headers_;
- string body_;
- string saved_data_;
- string saved_header_data_;
- SpdyFramer framer_;
- StrictMock<MockVisitor> visitor_;
-};
-
-INSTANTIATE_TEST_CASE_P(Tests,
- QuicHeadersStreamTest,
- ::testing::ValuesIn(GetTestParams()));
-
-TEST_P(QuicHeadersStreamTest, StreamId) {
- EXPECT_EQ(3u, headers_stream_->id());
-}
-
-TEST_P(QuicHeadersStreamTest, EffectivePriority) {
- EXPECT_EQ(0u, headers_stream_->EffectivePriority());
-}
-
-TEST_P(QuicHeadersStreamTest, WriteHeaders) {
- for (QuicStreamId stream_id = kClientDataStreamId1;
- stream_id < kClientDataStreamId3; stream_id += 2) {
- for (int count = 0; count < 2; ++count) {
- bool fin = (count == 0);
- if (is_server()) {
- WriteHeadersAndExpectSynReply(stream_id, fin);
- } else {
- for (QuicPriority priority = 0; priority < 7; ++priority) {
- // TODO(rch): implement priorities correctly.
- WriteHeadersAndExpectSynStream(stream_id, fin, 0);
- }
- }
- }
- }
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessRawData) {
- for (QuicStreamId stream_id = kClientDataStreamId1;
- stream_id < kClientDataStreamId3; stream_id += 2) {
- for (int count = 0; count < 2; ++count) {
- bool fin = (count == 0);
- for (QuicPriority priority = 0; priority < 7; ++priority) {
- // Replace with "WriteHeadersAndSaveData"
- scoped_ptr<SpdySerializedFrame> frame;
- if (is_server()) {
- if (version() > QUIC_VERSION_23) {
- SpdyHeadersIR headers_frame(stream_id);
- headers_frame.set_name_value_block(headers_);
- headers_frame.set_fin(fin);
- headers_frame.set_has_priority(true);
- frame.reset(framer_.SerializeFrame(headers_frame));
- } else {
- SpdySynStreamIR syn_stream(stream_id);
- syn_stream.set_name_value_block(headers_);
- syn_stream.set_fin(fin);
- frame.reset(framer_.SerializeSynStream(syn_stream));
- }
- EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
- } else {
- if (version() > QUIC_VERSION_23) {
- SpdyHeadersIR headers_frame(stream_id);
- headers_frame.set_name_value_block(headers_);
- headers_frame.set_fin(fin);
- frame.reset(framer_.SerializeFrame(headers_frame));
- } else {
- SpdySynReplyIR syn_reply(stream_id);
- syn_reply.set_name_value_block(headers_);
- syn_reply.set_fin(fin);
- frame.reset(framer_.SerializeSynReply(syn_reply));
- }
- }
- EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
- .WillRepeatedly(WithArgs<1>(
- Invoke(this,
- &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
- EXPECT_CALL(session_,
- OnStreamHeadersComplete(stream_id, fin, frame->size()));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
- CheckHeaders();
- }
- }
- }
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessLargeRawData) {
- // We want to create a frame that is more than the SPDY Framer's max control
- // frame size, which is 16K, but less than the HPACK decoders max decode
- // buffer size, which is 32K.
- headers_["key0"] = string(1 << 13, '.');
- headers_["key1"] = string(1 << 13, '.');
- headers_["key2"] = string(1 << 13, '.');
- for (QuicStreamId stream_id = kClientDataStreamId1;
- stream_id < kClientDataStreamId3; stream_id += 2) {
- for (int count = 0; count < 2; ++count) {
- bool fin = (count == 0);
- for (QuicPriority priority = 0; priority < 7; ++priority) {
- // Replace with "WriteHeadersAndSaveData"
- scoped_ptr<SpdySerializedFrame> frame;
- if (is_server()) {
- if (version() > QUIC_VERSION_23) {
- SpdyHeadersIR headers_frame(stream_id);
- headers_frame.set_name_value_block(headers_);
- headers_frame.set_fin(fin);
- headers_frame.set_has_priority(true);
- frame.reset(framer_.SerializeFrame(headers_frame));
- } else {
- SpdySynStreamIR syn_stream(stream_id);
- syn_stream.set_name_value_block(headers_);
- syn_stream.set_fin(fin);
- frame.reset(framer_.SerializeSynStream(syn_stream));
- }
- EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
- } else {
- if (version() > QUIC_VERSION_23) {
- SpdyHeadersIR headers_frame(stream_id);
- headers_frame.set_name_value_block(headers_);
- headers_frame.set_fin(fin);
- frame.reset(framer_.SerializeFrame(headers_frame));
- } else {
- SpdySynReplyIR syn_reply(stream_id);
- syn_reply.set_name_value_block(headers_);
- syn_reply.set_fin(fin);
- frame.reset(framer_.SerializeSynReply(syn_reply));
- }
- }
- EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
- .WillRepeatedly(WithArgs<1>(Invoke(
- this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
- EXPECT_CALL(session_,
- OnStreamHeadersComplete(stream_id, fin, frame->size()));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
- CheckHeaders();
- }
- }
- }
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessBadData) {
- const char kBadData[] = "blah blah blah";
- EXPECT_CALL(*connection_, SendConnectionCloseWithDetails(
- QUIC_INVALID_HEADERS_STREAM_DATA, _))
- .Times(::testing::AnyNumber());
- headers_stream_->ProcessRawData(kBadData, strlen(kBadData));
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdyDataFrame) {
- SpdyDataIR data(2, "");
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY DATA frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdyRstStreamFrame) {
- SpdyRstStreamIR data(2, RST_STREAM_PROTOCOL_ERROR, "");
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(
- QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY RST_STREAM frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdySettingsFrame) {
- SpdySettingsIR data;
- if (version() > QUIC_VERSION_23) {
- data.AddSetting(SETTINGS_HEADER_TABLE_SIZE, true, true, 0);
- } else {
- data.AddSetting(SETTINGS_UPLOAD_BANDWIDTH, true, true, 0);
- }
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(
- QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY SETTINGS frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdyPingFrame) {
- SpdyPingIR data(1);
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY PING frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdyGoAwayFrame) {
- SpdyGoAwayIR data(1, GOAWAY_PROTOCOL_ERROR, "go away");
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY GOAWAY frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdyHeadersFrame) {
- if (version() > QUIC_VERSION_23) {
- // HEADERS frames are an error when using SPDY/3, but
- // when using SPDY/4 they're the "normal" way of sending headers
- // so we test their handling in the ProcessRawData test.
- return;
- }
- SpdyHeadersIR data(1);
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY HEADERS frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, ProcessSpdyWindowUpdateFrame) {
- SpdyWindowUpdateIR data(1, 1);
- scoped_ptr<SpdySerializedFrame> frame(framer_.SerializeFrame(data));
- EXPECT_CALL(*connection_,
- SendConnectionCloseWithDetails(
- QUIC_INVALID_HEADERS_STREAM_DATA,
- "SPDY WINDOW_UPDATE frame received."))
- .WillOnce(InvokeWithoutArgs(this,
- &QuicHeadersStreamTest::CloseConnection));
- headers_stream_->ProcessRawData(frame->data(), frame->size());
-}
-
-TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) {
- EXPECT_TRUE(headers_stream_->flow_controller()->IsEnabled());
- EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl(
- headers_stream_));
-}
-
-} // namespace
-} // namespace test
-} // namespace net
« no previous file with comments | « net/quic/quic_headers_stream.cc ('k') | net/quic/quic_http_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698