diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-25 22:00:43 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-25 22:00:43 +0000 |
commit | 853d89fc29c6eed4aa1fd0fb36d3b319d3264bfa (patch) | |
tree | 5c124d835e6b360f29dc55b5929e7c77f26752b1 | |
parent | 6fd51af56fb4650180e7027d3840da7cb30252f0 (diff) | |
download | chromium_src-853d89fc29c6eed4aa1fd0fb36d3b319d3264bfa.zip chromium_src-853d89fc29c6eed4aa1fd0fb36d3b319d3264bfa.tar.gz chromium_src-853d89fc29c6eed4aa1fd0fb36d3b319d3264bfa.tar.bz2 |
[SPDY] Unfork buffered_spdy_framer_spdy{2,3}_unittest.cc
BUG=226192
R=rch@chromium.org
Review URL: https://codereview.chromium.org/17733002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208562 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | net/net.gyp | 3 | ||||
-rw-r--r-- | net/spdy/buffered_spdy_framer_spdy3_unittest.cc | 275 | ||||
-rw-r--r-- | net/spdy/buffered_spdy_framer_unittest.cc (renamed from net/spdy/buffered_spdy_framer_spdy2_unittest.cc) | 46 | ||||
-rw-r--r-- | net/spdy/spdy_session_pool.h | 16 |
4 files changed, 29 insertions, 311 deletions
diff --git a/net/net.gyp b/net/net.gyp index 861b2f3..3d0f989e 100644 --- a/net/net.gyp +++ b/net/net.gyp @@ -1755,8 +1755,7 @@ 'socket/unix_domain_socket_posix_unittest.cc', 'socket_stream/socket_stream_metrics_unittest.cc', 'socket_stream/socket_stream_unittest.cc', - 'spdy/buffered_spdy_framer_spdy3_unittest.cc', - 'spdy/buffered_spdy_framer_spdy2_unittest.cc', + 'spdy/buffered_spdy_framer_unittest.cc', 'spdy/spdy_credential_builder_unittest.cc', 'spdy/spdy_buffer_unittest.cc', 'spdy/spdy_credential_state_unittest.cc', diff --git a/net/spdy/buffered_spdy_framer_spdy3_unittest.cc b/net/spdy/buffered_spdy_framer_spdy3_unittest.cc deleted file mode 100644 index b9058fc..0000000 --- a/net/spdy/buffered_spdy_framer_spdy3_unittest.cc +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright (c) 2012 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/spdy/buffered_spdy_framer.h" - -#include "net/spdy/spdy_test_util_spdy3.h" -#include "testing/platform_test.h" - -using namespace net::test_spdy3; - -namespace net { - -namespace { - -class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { - public: - TestBufferedSpdyVisitor() - : buffered_spdy_framer_(SPDY3, true), - error_count_(0), - setting_count_(0), - syn_frame_count_(0), - syn_reply_frame_count_(0), - headers_frame_count_(0), - header_stream_id_(-1) { - } - - virtual void OnError(SpdyFramer::SpdyError error_code) OVERRIDE { - LOG(INFO) << "SpdyFramer Error: " << error_code; - error_count_++; - } - - virtual void OnStreamError(SpdyStreamId stream_id, - const std::string& description) OVERRIDE { - LOG(INFO) << "SpdyFramer Error on stream: " << stream_id << " " - << description; - error_count_++; - } - - virtual void OnSynStream(SpdyStreamId stream_id, - SpdyStreamId associated_stream_id, - SpdyPriority priority, - uint8 credential_slot, - bool fin, - bool unidirectional, - const SpdyHeaderBlock& headers) OVERRIDE { - header_stream_id_ = stream_id; - EXPECT_NE(header_stream_id_, SpdyFramer::kInvalidStream); - syn_frame_count_++; - headers_ = headers; - } - - virtual void OnSynReply(SpdyStreamId stream_id, - bool fin, - const SpdyHeaderBlock& headers) OVERRIDE { - header_stream_id_ = stream_id; - EXPECT_NE(header_stream_id_, SpdyFramer::kInvalidStream); - syn_reply_frame_count_++; - headers_ = headers; - } - - virtual void OnHeaders(SpdyStreamId stream_id, - bool fin, - const SpdyHeaderBlock& headers) OVERRIDE { - header_stream_id_ = stream_id; - EXPECT_NE(header_stream_id_, SpdyFramer::kInvalidStream); - headers_frame_count_++; - headers_ = headers; - } - - virtual void OnStreamFrameData(SpdyStreamId stream_id, - const char* data, - size_t len, - bool fin) OVERRIDE { - LOG(FATAL) << "Unexpected OnStreamFrameData call."; - } - - virtual void OnSettings(bool clear_persisted) OVERRIDE {} - - virtual void OnSetting(SpdySettingsIds id, - uint8 flags, - uint32 value) OVERRIDE { - setting_count_++; - } - - virtual void OnPing(uint32 unique_id) OVERRIDE {} - - virtual void OnRstStream(SpdyStreamId stream_id, - SpdyRstStreamStatus status) OVERRIDE {} - - virtual void OnGoAway(SpdyStreamId last_accepted_stream_id, - SpdyGoAwayStatus status) OVERRIDE { - } - - virtual void OnSynStreamCompressed( - size_t uncompressed_size, - size_t compressed_size) OVERRIDE { - } - - bool OnCredentialFrameData(const char*, size_t) { - LOG(FATAL) << "Unexpected OnCredentialFrameData call."; - return false; - } - - void OnDataFrameHeader(const SpdyFrame* frame) { - LOG(FATAL) << "Unexpected OnDataFrameHeader call."; - } - - void OnRstStream(const SpdyFrame& frame) {} - void OnGoAway(const SpdyFrame& frame) {} - void OnPing(const SpdyFrame& frame) {} - virtual void OnWindowUpdate(SpdyStreamId stream_id, - uint32 delta_window_size) OVERRIDE { - } - void OnCredential(const SpdyFrame& frame) {} - - // Convenience function which runs a framer simulation with particular input. - void SimulateInFramer(const unsigned char* input, size_t size) { - buffered_spdy_framer_.set_visitor(this); - size_t input_remaining = size; - const char* input_ptr = reinterpret_cast<const char*>(input); - while (input_remaining > 0 && - buffered_spdy_framer_.error_code() == SpdyFramer::SPDY_NO_ERROR) { - // To make the tests more interesting, we feed random (amd small) chunks - // into the framer. This simulates getting strange-sized reads from - // the socket. - const size_t kMaxReadSize = 32; - size_t bytes_read = - (rand() % std::min(input_remaining, kMaxReadSize)) + 1; - size_t bytes_processed = - buffered_spdy_framer_.ProcessInput(input_ptr, bytes_read); - input_remaining -= bytes_processed; - input_ptr += bytes_processed; - } - } - - BufferedSpdyFramer buffered_spdy_framer_; - - // Counters from the visitor callbacks. - int error_count_; - int setting_count_; - int syn_frame_count_; - int syn_reply_frame_count_; - int headers_frame_count_; - - // Header block streaming state: - SpdyStreamId header_stream_id_; - - // Headers from OnSyn, OnSynReply and OnHeaders for verification. - SpdyHeaderBlock headers_; -}; - -} // namespace - -class BufferedSpdyFramerSpdy3Test : public PlatformTest { - protected: - // Returns true if the two header blocks have equivalent content. - bool CompareHeaderBlocks(const SpdyHeaderBlock* expected, - const SpdyHeaderBlock* actual) { - if (expected->size() != actual->size()) { - LOG(ERROR) << "Expected " << expected->size() << " headers; actually got " - << actual->size() << "."; - return false; - } - for (SpdyHeaderBlock::const_iterator it = expected->begin(); - it != expected->end(); - ++it) { - SpdyHeaderBlock::const_iterator it2 = actual->find(it->first); - if (it2 == actual->end()) { - LOG(ERROR) << "Expected header name '" << it->first << "'."; - return false; - } - if (it->second.compare(it2->second) != 0) { - LOG(ERROR) << "Expected header named '" << it->first - << "' to have a value of '" << it->second - << "'. The actual value received was '" << it2->second - << "'."; - return false; - } - } - return true; - } -}; - -TEST_F(BufferedSpdyFramerSpdy3Test, OnSetting) { - SpdyFramer framer(SPDY3); - framer.set_enable_compression(false); - SettingsMap settings; - settings[SETTINGS_UPLOAD_BANDWIDTH] = - SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 0x00000002); - settings[SETTINGS_DOWNLOAD_BANDWIDTH] = - SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 0x00000003); - - scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); - TestBufferedSpdyVisitor visitor; - - visitor.SimulateInFramer( - reinterpret_cast<unsigned char*>(control_frame->data()), - control_frame->size()); - EXPECT_EQ(0, visitor.error_count_); - EXPECT_EQ(2, visitor.setting_count_); -} - -TEST_F(BufferedSpdyFramerSpdy3Test, ReadSynStreamHeaderBlock) { - SpdyHeaderBlock headers; - headers["aa"] = "vv"; - headers["bb"] = "ww"; - BufferedSpdyFramer framer(SPDY3, true); - scoped_ptr<SpdyFrame> control_frame( - framer.CreateSynStream(1, // stream_id - 0, // associated_stream_id - 1, // priority - 0, // credential_slot - CONTROL_FLAG_NONE, - true, // compress - &headers)); - EXPECT_TRUE(control_frame.get() != NULL); - - TestBufferedSpdyVisitor visitor; - visitor.SimulateInFramer( - reinterpret_cast<unsigned char*>(control_frame.get()->data()), - control_frame.get()->size()); - EXPECT_EQ(0, visitor.error_count_); - EXPECT_EQ(1, visitor.syn_frame_count_); - EXPECT_EQ(0, visitor.syn_reply_frame_count_); - EXPECT_EQ(0, visitor.headers_frame_count_); - EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); -} - -TEST_F(BufferedSpdyFramerSpdy3Test, ReadSynReplyHeaderBlock) { - SpdyHeaderBlock headers; - headers["alpha"] = "beta"; - headers["gamma"] = "delta"; - BufferedSpdyFramer framer(SPDY3, true); - scoped_ptr<SpdyFrame> control_frame( - framer.CreateSynReply(1, // stream_id - CONTROL_FLAG_NONE, - true, // compress - &headers)); - EXPECT_TRUE(control_frame.get() != NULL); - - TestBufferedSpdyVisitor visitor; - visitor.SimulateInFramer( - reinterpret_cast<unsigned char*>(control_frame.get()->data()), - control_frame.get()->size()); - EXPECT_EQ(0, visitor.error_count_); - EXPECT_EQ(0, visitor.syn_frame_count_); - EXPECT_EQ(1, visitor.syn_reply_frame_count_); - EXPECT_EQ(0, visitor.headers_frame_count_); - EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); -} - -TEST_F(BufferedSpdyFramerSpdy3Test, ReadHeadersHeaderBlock) { - SpdyHeaderBlock headers; - headers["alpha"] = "beta"; - headers["gamma"] = "delta"; - BufferedSpdyFramer framer(SPDY3, true); - scoped_ptr<SpdyFrame> control_frame( - framer.CreateHeaders(1, // stream_id - CONTROL_FLAG_NONE, - true, // compress - &headers)); - EXPECT_TRUE(control_frame.get() != NULL); - - TestBufferedSpdyVisitor visitor; - visitor.SimulateInFramer( - reinterpret_cast<unsigned char*>(control_frame.get()->data()), - control_frame.get()->size()); - EXPECT_EQ(0, visitor.error_count_); - EXPECT_EQ(0, visitor.syn_frame_count_); - EXPECT_EQ(0, visitor.syn_reply_frame_count_); - EXPECT_EQ(1, visitor.headers_frame_count_); - EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); -} -} // namespace net diff --git a/net/spdy/buffered_spdy_framer_spdy2_unittest.cc b/net/spdy/buffered_spdy_framer_unittest.cc index 3248f7e..921072f 100644 --- a/net/spdy/buffered_spdy_framer_spdy2_unittest.cc +++ b/net/spdy/buffered_spdy_framer_unittest.cc @@ -4,19 +4,17 @@ #include "net/spdy/buffered_spdy_framer.h" -#include "net/spdy/spdy_test_util_spdy2.h" +#include "net/spdy/spdy_test_util_common.h" #include "testing/platform_test.h" -using namespace net::test_spdy2; - namespace net { namespace { class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { public: - TestBufferedSpdyVisitor() - : buffered_spdy_framer_(SPDY2, true), + explicit TestBufferedSpdyVisitor(SpdyMajorVersion spdy_version) + : buffered_spdy_framer_(spdy_version, true), error_count_(0), setting_count_(0), syn_frame_count_(0), @@ -154,7 +152,9 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { } // namespace -class BufferedSpdyFramerSpdy2Test : public PlatformTest { +class BufferedSpdyFramerTest + : public PlatformTest, + public ::testing::WithParamInterface<NextProto> { protected: // Returns true if the two header blocks have equivalent content. bool CompareHeaderBlocks(const SpdyHeaderBlock* expected, @@ -182,10 +182,19 @@ class BufferedSpdyFramerSpdy2Test : public PlatformTest { } return true; } + + SpdyMajorVersion spdy_version() { + return SpdyVersionFromNextProto(GetParam()); + } }; -TEST_F(BufferedSpdyFramerSpdy2Test, OnSetting) { - SpdyFramer framer(SPDY2); +INSTANTIATE_TEST_CASE_P( + NextProto, + BufferedSpdyFramerTest, + testing::Values(kProtoSPDY2, kProtoSPDY3, kProtoSPDY31, kProtoSPDY4a2)); + +TEST_P(BufferedSpdyFramerTest, OnSetting) { + SpdyFramer framer(spdy_version()); SettingsMap settings; settings[SETTINGS_UPLOAD_BANDWIDTH] = SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 0x00000002); @@ -193,7 +202,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, OnSetting) { SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 0x00000003); scoped_ptr<SpdyFrame> control_frame(framer.CreateSettings(settings)); - TestBufferedSpdyVisitor visitor; + TestBufferedSpdyVisitor visitor(spdy_version()); visitor.SimulateInFramer( reinterpret_cast<unsigned char*>(control_frame->data()), @@ -202,11 +211,11 @@ TEST_F(BufferedSpdyFramerSpdy2Test, OnSetting) { EXPECT_EQ(2, visitor.setting_count_); } -TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynStreamHeaderBlock) { +TEST_P(BufferedSpdyFramerTest, ReadSynStreamHeaderBlock) { SpdyHeaderBlock headers; headers["aa"] = "vv"; headers["bb"] = "ww"; - BufferedSpdyFramer framer(SPDY2, true); + BufferedSpdyFramer framer(spdy_version(), true); scoped_ptr<SpdyFrame> control_frame( framer.CreateSynStream(1, // stream_id 0, // associated_stream_id @@ -217,7 +226,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynStreamHeaderBlock) { &headers)); EXPECT_TRUE(control_frame.get() != NULL); - TestBufferedSpdyVisitor visitor; + TestBufferedSpdyVisitor visitor(spdy_version()); visitor.SimulateInFramer( reinterpret_cast<unsigned char*>(control_frame.get()->data()), control_frame.get()->size()); @@ -228,11 +237,11 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynStreamHeaderBlock) { EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); } -TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynReplyHeaderBlock) { +TEST_P(BufferedSpdyFramerTest, ReadSynReplyHeaderBlock) { SpdyHeaderBlock headers; headers["alpha"] = "beta"; headers["gamma"] = "delta"; - BufferedSpdyFramer framer(SPDY2, true); + BufferedSpdyFramer framer(spdy_version(), true); scoped_ptr<SpdyFrame> control_frame( framer.CreateSynReply(1, // stream_id CONTROL_FLAG_NONE, @@ -240,7 +249,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynReplyHeaderBlock) { &headers)); EXPECT_TRUE(control_frame.get() != NULL); - TestBufferedSpdyVisitor visitor; + TestBufferedSpdyVisitor visitor(spdy_version()); visitor.SimulateInFramer( reinterpret_cast<unsigned char*>(control_frame.get()->data()), control_frame.get()->size()); @@ -251,11 +260,11 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynReplyHeaderBlock) { EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); } -TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) { +TEST_P(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) { SpdyHeaderBlock headers; headers["alpha"] = "beta"; headers["gamma"] = "delta"; - BufferedSpdyFramer framer(SPDY2, true); + BufferedSpdyFramer framer(spdy_version(), true); scoped_ptr<SpdyFrame> control_frame( framer.CreateHeaders(1, // stream_id CONTROL_FLAG_NONE, @@ -263,7 +272,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) { &headers)); EXPECT_TRUE(control_frame.get() != NULL); - TestBufferedSpdyVisitor visitor; + TestBufferedSpdyVisitor visitor(spdy_version()); visitor.SimulateInFramer( reinterpret_cast<unsigned char*>(control_frame.get()->data()), control_frame.get()->size()); @@ -273,4 +282,5 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) { EXPECT_EQ(1, visitor.headers_frame_count_); EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); } + } // namespace net diff --git a/net/spdy/spdy_session_pool.h b/net/spdy/spdy_session_pool.h index f2e6b84..6744b30 100644 --- a/net/spdy/spdy_session_pool.h +++ b/net/spdy/spdy_session_pool.h @@ -33,14 +33,6 @@ class HostResolver; class HttpServerProperties; class SpdySession; -namespace test_spdy2 { -class SpdySessionPoolPeer; -} // namespace test_spdy - -namespace test_spdy3 { -class SpdySessionPoolPeer; -} // namespace test_spdy - // This is a very simple pool for open SpdySessions. class NET_EXPORT SpdySessionPool : public NetworkChangeNotifier::IPAddressObserver, @@ -140,14 +132,6 @@ class NET_EXPORT SpdySessionPool virtual void OnCertTrustChanged(const X509Certificate* cert) OVERRIDE; private: - friend class SpdySessionPoolPeer; // For testing. - friend class SpdyNetworkTransactionSpdy2Test; // For testing. - friend class SpdyNetworkTransactionSpdy3Test; // For testing. - FRIEND_TEST_ALL_PREFIXES(SpdyNetworkTransactionSpdy2Test, - WindowUpdateOverflow); - FRIEND_TEST_ALL_PREFIXES(SpdyNetworkTransactionSpdy3Test, - WindowUpdateOverflow); - typedef std::list<scoped_refptr<SpdySession> > SpdySessionList; typedef std::map<SpdySessionKey, SpdySessionList*> SpdySessionsMap; typedef std::map<IPEndPoint, SpdySessionKey> SpdyAliasMap; |