summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 22:27:44 +0000
committerrch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 22:27:44 +0000
commit1fe6371fe8fb4347694648e9461630614454b692 (patch)
treeb884799111dda0d0617414e9716dc254efe8d1fb /net
parentf9cf2a6fc302ea614db95b6a9f0c688d84c104a6 (diff)
downloadchromium_src-1fe6371fe8fb4347694648e9461630614454b692.zip
chromium_src-1fe6371fe8fb4347694648e9461630614454b692.tar.gz
chromium_src-1fe6371fe8fb4347694648e9461630614454b692.tar.bz2
Cleanup of QuicInMemoryCache to sync with internal version.
Review URL: https://codereview.chromium.org/24596008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225588 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/net.gyp3
-rw-r--r--net/tools/flip_server/balsa_visitor_interface.h1
-rw-r--r--net/tools/flip_server/noop_balsa_visitor.h60
-rw-r--r--net/tools/quic/end_to_end_test.cc5
-rw-r--r--net/tools/quic/quic_in_memory_cache.cc56
-rw-r--r--net/tools/quic/quic_in_memory_cache.h29
-rw-r--r--net/tools/quic/quic_in_memory_cache_test.cc3
-rw-r--r--net/tools/quic/quic_reliable_server_stream_test.cc3
-rw-r--r--net/tools/quic/test_tools/quic_in_memory_cache_peer.cc20
-rw-r--r--net/tools/quic/test_tools/quic_in_memory_cache_peer.h27
10 files changed, 150 insertions, 57 deletions
diff --git a/net/net.gyp b/net/net.gyp
index 3f1d793..7f6a7fc 100644
--- a/net/net.gyp
+++ b/net/net.gyp
@@ -1939,6 +1939,8 @@
'tools/quic/test_tools/quic_client_peer.h',
'tools/quic/test_tools/quic_epoll_connection_helper_peer.cc',
'tools/quic/test_tools/quic_epoll_connection_helper_peer.h',
+ 'tools/quic/test_tools/quic_in_memory_cache_peer.h',
+ 'tools/quic/test_tools/quic_in_memory_cache_peer.cc',
'tools/quic/test_tools/quic_test_client.cc',
'tools/quic/test_tools/quic_test_client.h',
'tools/quic/test_tools/quic_test_utils.cc',
@@ -2665,6 +2667,7 @@
'tools/flip_server/epoll_server.h',
'tools/flip_server/http_message_constants.cc',
'tools/flip_server/http_message_constants.h',
+ 'tools/flip_server/noop_balsa_visitor.h',
'tools/flip_server/split.h',
'tools/flip_server/split.cc',
],
diff --git a/net/tools/flip_server/balsa_visitor_interface.h b/net/tools/flip_server/balsa_visitor_interface.h
index 75283ac..2542723 100644
--- a/net/tools/flip_server/balsa_visitor_interface.h
+++ b/net/tools/flip_server/balsa_visitor_interface.h
@@ -178,4 +178,3 @@ class BalsaVisitorInterface {
} // namespace net
#endif // NET_TOOLS_FLIP_SERVER_BALSA_VISITOR_INTERFACE_H_
-
diff --git a/net/tools/flip_server/noop_balsa_visitor.h b/net/tools/flip_server/noop_balsa_visitor.h
new file mode 100644
index 0000000..04f4aa6
--- /dev/null
+++ b/net/tools/flip_server/noop_balsa_visitor.h
@@ -0,0 +1,60 @@
+// 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.
+//
+// Provides empty BalsaVisitorInterface overrides for convenience.
+// Intended to be used as a base class for BalsaVisitorInterface subclasses that
+// only need to override a small number of methods.
+
+#ifndef NET_TOOLS_FLIP_SERVER_NOOP_BALSA_VISITOR_H_
+#define NET_TOOLS_FLIP_SERVER_NOOP_BALSA_VISITOR_H_
+
+#include "net/tools/flip_server/balsa_visitor_interface.h"
+
+namespace net {
+
+// See file comment above.
+class NoOpBalsaVisitor : public BalsaVisitorInterface {
+ public:
+ NoOpBalsaVisitor() { }
+ virtual ~NoOpBalsaVisitor() { }
+
+ virtual void ProcessBodyInput(const char* input, size_t size) OVERRIDE { }
+ virtual void ProcessBodyData(const char* input, size_t size) OVERRIDE { }
+ virtual void ProcessHeaderInput(const char* input, size_t size) OVERRIDE { }
+ virtual void ProcessTrailerInput(const char* input, size_t size) OVERRIDE { }
+ virtual void ProcessHeaders(const BalsaHeaders& headers) OVERRIDE { }
+
+ virtual void ProcessRequestFirstLine(const char* line_input,
+ size_t line_length,
+ const char* method_input,
+ size_t method_length,
+ const char* request_uri_input,
+ size_t request_uri_length,
+ const char* version_input,
+ size_t version_length) OVERRIDE { }
+ virtual void ProcessResponseFirstLine(const char* line_input,
+ size_t line_length,
+ const char* version_input,
+ size_t version_length,
+ const char* status_input,
+ size_t status_length,
+ const char* reason_input,
+ size_t reason_length) OVERRIDE { }
+ virtual void ProcessChunkLength(size_t chunk_length) OVERRIDE { }
+ virtual void ProcessChunkExtensions(const char* input, size_t size) OVERRIDE {
+ }
+ virtual void HeaderDone() OVERRIDE { }
+ virtual void MessageDone() OVERRIDE { }
+ virtual void HandleHeaderError(BalsaFrame* framer) OVERRIDE { }
+ virtual void HandleHeaderWarning(BalsaFrame* framer) OVERRIDE { }
+ virtual void HandleChunkingError(BalsaFrame* framer) OVERRIDE { }
+ virtual void HandleBodyError(BalsaFrame* framer) OVERRIDE { }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(NoOpBalsaVisitor);
+};
+
+} // namespace net
+
+#endif // NET_TOOLS_FLIP_SERVER_NOOP_BALSA_VISITOR_H_
diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc
index e47d1d5..bc08806 100644
--- a/net/tools/quic/end_to_end_test.cc
+++ b/net/tools/quic/end_to_end_test.cc
@@ -25,6 +25,7 @@
#include "net/tools/quic/test_tools/http_message_test_utils.h"
#include "net/tools/quic/test_tools/quic_client_peer.h"
#include "net/tools/quic/test_tools/quic_epoll_connection_helper_peer.h"
+#include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h"
#include "net/tools/quic/test_tools/quic_test_client.h"
#include "net/tools/quic/test_tools/server_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -60,7 +61,7 @@ void GenerateBody(string* body, int length) {
class EndToEndTest : public ::testing::TestWithParam<QuicVersion> {
public:
static void SetUpTestCase() {
- QuicInMemoryCache::GetInstance()->ResetForTests();
+ QuicInMemoryCachePeer::ResetForTests();
}
protected:
@@ -131,7 +132,7 @@ class EndToEndTest : public ::testing::TestWithParam<QuicVersion> {
StringPiece response_code,
StringPiece response_detail,
StringPiece body) {
- QuicInMemoryCache::GetInstance()->AddOrVerifyResponse(
+ QuicInMemoryCache::GetInstance()->AddSimpleResponse(
method, path, version, response_code, response_detail, body);
}
diff --git a/net/tools/quic/quic_in_memory_cache.cc b/net/tools/quic/quic_in_memory_cache.cc
index 8e97f55..843fa9e 100644
--- a/net/tools/quic/quic_in_memory_cache.cc
+++ b/net/tools/quic/quic_in_memory_cache.cc
@@ -8,6 +8,7 @@
#include "base/files/file_enumerator.h"
#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
+#include "net/tools/flip_server/balsa_headers.h"
using base::FilePath;
using base::StringPiece;
@@ -20,20 +21,17 @@ using std::string;
namespace net {
namespace tools {
-std::string FLAGS_quic_in_memory_cache_dir = "/tmp/quic-data";
+std::string FLAGS_quic_in_memory_cache_dir = "";
namespace {
// BalsaVisitor implementation (glue) which caches response bodies.
-class CachingBalsaVisitor : public BalsaVisitorInterface {
+class CachingBalsaVisitor : public NoOpBalsaVisitor {
public:
CachingBalsaVisitor() : done_framing_(false) {}
virtual void ProcessBodyData(const char* input, size_t size) OVERRIDE {
AppendToBody(input, size);
}
- virtual void ProcessTrailers(const BalsaHeaders& trailer) {
- LOG(DFATAL) << "Trailers not supported.";
- }
virtual void MessageDone() OVERRIDE {
done_framing_ = true;
}
@@ -43,8 +41,6 @@ class CachingBalsaVisitor : public BalsaVisitorInterface {
virtual void HandleHeaderWarning(BalsaFrame* framer) OVERRIDE {
UnhandledError();
}
- virtual void HandleTrailerError(BalsaFrame* framer) { UnhandledError(); }
- virtual void HandleTrailerWarning(BalsaFrame* framer) { UnhandledError(); }
virtual void HandleChunkingError(BalsaFrame* framer) OVERRIDE {
UnhandledError();
}
@@ -54,20 +50,6 @@ class CachingBalsaVisitor : public BalsaVisitorInterface {
void UnhandledError() {
LOG(DFATAL) << "Unhandled error framing HTTP.";
}
- virtual void ProcessBodyInput(const char*, size_t) OVERRIDE {}
- virtual void ProcessHeaderInput(const char*, size_t) OVERRIDE {}
- virtual void ProcessTrailerInput(const char*, size_t) OVERRIDE {}
- virtual void ProcessHeaders(const net::BalsaHeaders&) OVERRIDE {}
- virtual void ProcessRequestFirstLine(
- const char*, size_t, const char*, size_t,
- const char*, size_t, const char*, size_t) OVERRIDE {}
- virtual void ProcessResponseFirstLine(
- const char*, size_t, const char*,
- size_t, const char*, size_t, const char*, size_t) OVERRIDE {}
- virtual void ProcessChunkLength(size_t) OVERRIDE {}
- virtual void ProcessChunkExtensions(const char*, size_t) OVERRIDE {}
- virtual void HeaderDone() OVERRIDE {}
-
void AppendToBody(const char* input, size_t size) {
body_.append(input, size);
}
@@ -81,6 +63,7 @@ class CachingBalsaVisitor : public BalsaVisitorInterface {
} // namespace
+// static
QuicInMemoryCache* QuicInMemoryCache::GetInstance() {
return Singleton<QuicInMemoryCache>::get();
}
@@ -94,12 +77,12 @@ const QuicInMemoryCache::Response* QuicInMemoryCache::GetResponse(
return it->second;
}
-void QuicInMemoryCache::AddOrVerifyResponse(StringPiece method,
- StringPiece path,
- StringPiece version,
- StringPiece response_code,
- StringPiece response_detail,
- StringPiece body) {
+void QuicInMemoryCache::AddSimpleResponse(StringPiece method,
+ StringPiece path,
+ StringPiece version,
+ StringPiece response_code,
+ StringPiece response_detail,
+ StringPiece body) {
BalsaHeaders request_headers, response_headers;
request_headers.SetRequestFirstlineFromStringPieces(method,
path,
@@ -110,18 +93,7 @@ void QuicInMemoryCache::AddOrVerifyResponse(StringPiece method,
response_headers.AppendHeader("content-length",
base::IntToString(body.length()));
- // Check if response already exists and matches.
- const QuicInMemoryCache::Response* cached_response =
- GetResponse(request_headers);
- if (cached_response == NULL) {
- AddResponse(request_headers, response_headers, body);
- return;
- }
- string cached_response_headers_str, response_headers_str;
- cached_response->headers().DumpToString(&cached_response_headers_str);
- response_headers.DumpToString(&response_headers_str);
- CHECK_EQ(cached_response_headers_str, response_headers_str);
- CHECK_EQ(cached_response->body(), body);
+ AddResponse(request_headers, response_headers, body);
}
void QuicInMemoryCache::AddResponse(const BalsaHeaders& request_headers,
@@ -137,12 +109,12 @@ void QuicInMemoryCache::AddResponse(const BalsaHeaders& request_headers,
responses_[GetKey(request_headers)] = new_response;
}
-void QuicInMemoryCache::ResetForTests() {
- STLDeleteValues(&responses_);
+QuicInMemoryCache::QuicInMemoryCache() {
Initialize();
}
-QuicInMemoryCache::QuicInMemoryCache() {
+void QuicInMemoryCache::ResetForTests() {
+ STLDeleteValues(&responses_);
Initialize();
}
diff --git a/net/tools/quic/quic_in_memory_cache.h b/net/tools/quic/quic_in_memory_cache.h
index 94f524a7..43b692e 100644
--- a/net/tools/quic/quic_in_memory_cache.h
+++ b/net/tools/quic/quic_in_memory_cache.h
@@ -12,12 +12,17 @@
#include "base/strings/string_piece.h"
#include "net/tools/flip_server/balsa_frame.h"
#include "net/tools/flip_server/balsa_headers.h"
+#include "net/tools/flip_server/noop_balsa_visitor.h"
template <typename T> struct DefaultSingletonTraits;
namespace net {
namespace tools {
+namespace test {
+class QuicInMemoryCachePeer;
+} // namespace
+
extern std::string FLAGS_quic_in_memory_cache_dir;
class QuicServer;
@@ -51,6 +56,8 @@ class QuicInMemoryCache {
DISALLOW_COPY_AND_ASSIGN(Response);
};
+
+ // Returns the singleton instance of the cache.
static QuicInMemoryCache* GetInstance();
// Retrieve a response from this cache for a given request.
@@ -58,30 +65,32 @@ class QuicInMemoryCache {
// Currently, responses are selected based on request URI only.
const Response* GetResponse(const BalsaHeaders& request_headers) const;
- // Adds a response to the cache if no matching entry exists.
- // Otherwise it verifies that the existing entry matches.
- void AddOrVerifyResponse(base::StringPiece method,
- base::StringPiece path,
- base::StringPiece version,
- base::StringPiece response_code,
- base::StringPiece response_detail,
- base::StringPiece body);
+ // Adds a simple response to the cache. The response headers will
+ // only contain the "content-length" header with the lenght of |body|.
+ void AddSimpleResponse(base::StringPiece method,
+ base::StringPiece path,
+ base::StringPiece version,
+ base::StringPiece response_code,
+ base::StringPiece response_detail,
+ base::StringPiece body);
// Add a response to the cache.
void AddResponse(const BalsaHeaders& request_headers,
const BalsaHeaders& response_headers,
base::StringPiece response_body);
- void ResetForTests();
-
private:
typedef base::hash_map<std::string, Response*> ResponseMap;
friend struct DefaultSingletonTraits<QuicInMemoryCache>;
+ friend class test::QuicInMemoryCachePeer;
QuicInMemoryCache();
~QuicInMemoryCache();
+ void ResetForTests();
+
void Initialize();
+
std::string GetKey(const BalsaHeaders& response_headers) const;
// Cached responses.
diff --git a/net/tools/quic/quic_in_memory_cache_test.cc b/net/tools/quic/quic_in_memory_cache_test.cc
index 065ecc3..a31a986 100644
--- a/net/tools/quic/quic_in_memory_cache_test.cc
+++ b/net/tools/quic/quic_in_memory_cache_test.cc
@@ -11,6 +11,7 @@
#include "base/strings/string_piece.h"
#include "net/tools/flip_server/balsa_headers.h"
#include "net/tools/quic/quic_in_memory_cache.h"
+#include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::IntToString;
@@ -39,7 +40,7 @@ class QuicInMemoryCacheTest : public ::testing::Test {
}
virtual void SetUp() {
- QuicInMemoryCache::GetInstance()->ResetForTests();
+ QuicInMemoryCachePeer::ResetForTests();
}
// This method was copied from end_to_end_test.cc in this directory.
diff --git a/net/tools/quic/quic_reliable_server_stream_test.cc b/net/tools/quic/quic_reliable_server_stream_test.cc
index 53533a3..9de67fa 100644
--- a/net/tools/quic/quic_reliable_server_stream_test.cc
+++ b/net/tools/quic/quic_reliable_server_stream_test.cc
@@ -12,6 +12,7 @@
#include "net/tools/quic/quic_in_memory_cache.h"
#include "net/tools/quic/quic_spdy_server_stream.h"
#include "net/tools/quic/spdy_utils.h"
+#include "net/tools/quic/test_tools/quic_in_memory_cache_peer.h"
#include "net/tools/quic/test_tools/quic_test_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -80,7 +81,7 @@ class QuicReliableServerStreamTest : public ::testing::Test {
}
static void SetUpTestCase() {
- QuicInMemoryCache::GetInstance()->ResetForTests();
+ QuicInMemoryCachePeer::ResetForTests();
}
virtual void SetUp() {
diff --git a/net/tools/quic/test_tools/quic_in_memory_cache_peer.cc b/net/tools/quic/test_tools/quic_in_memory_cache_peer.cc
new file mode 100644
index 0000000..feb506e
--- /dev/null
+++ b/net/tools/quic/test_tools/quic_in_memory_cache_peer.cc
@@ -0,0 +1,20 @@
+// 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/tools/quic/test_tools/quic_in_memory_cache_peer.h"
+
+#include "net/tools/quic/quic_in_memory_cache.h"
+
+namespace net {
+namespace tools {
+namespace test {
+
+// static
+void QuicInMemoryCachePeer::ResetForTests() {
+ QuicInMemoryCache::GetInstance()->ResetForTests();
+}
+
+} // namespace test
+} // namespace tools
+} // namespace net
diff --git a/net/tools/quic/test_tools/quic_in_memory_cache_peer.h b/net/tools/quic/test_tools/quic_in_memory_cache_peer.h
new file mode 100644
index 0000000..b5996bd
--- /dev/null
+++ b/net/tools/quic/test_tools/quic_in_memory_cache_peer.h
@@ -0,0 +1,27 @@
+// 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.
+
+#ifndef NET_TOOLS_QUIC_TEST_TOOLS_QUIC_IN_MEMORY_CACHE_PEER_H_
+#define NET_TOOLS_QUIC_TEST_TOOLS_QUIC_IN_MEMORY_CACHE_PEER_H_
+
+#include "net/tools/quic/quic_in_memory_cache.h"
+
+namespace net {
+namespace tools {
+namespace test {
+
+class QuicInMemoryCachePeer {
+ public:
+ // Resets the singleton QuicInMemoryCache to a fresh state.
+ static void ResetForTests();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(QuicInMemoryCachePeer);
+};
+
+} // namespace test
+} // namespace tools
+} // namespace net
+
+#endif // NET_TOOLS_QUIC_TEST_TOOLS_QUIC_IN_MEMORY_CACHE_PEER_H_