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

Unified Diff: net/http/http_cache_unittest.cc

Issue 10736066: Adding histograms showing fraction of page load times (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 5 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
Index: net/http/http_cache_unittest.cc
===================================================================
--- net/http/http_cache_unittest.cc (revision 147972)
+++ net/http/http_cache_unittest.cc (working copy)
@@ -24,6 +24,7 @@
#include "net/http/http_response_headers.h"
#include "net/http/http_response_info.h"
#include "net/http/http_transaction.h"
+#include "net/http/http_transaction_delegate.h"
#include "net/http/http_transaction_unittest.h"
#include "net/http/http_util.h"
#include "net/http/mock_http_cache.h"
@@ -59,6 +60,32 @@
//-----------------------------------------------------------------------------
// helpers
+class TestHttpTransactionDelegate : public net::HttpTransactionDelegate {
+ public:
+ TestHttpTransactionDelegate(int num_actions_to_observe)
+ : num_remaining_actions_to_observe_(num_actions_to_observe),
+ action_in_progress_(false){
rvargas (doing something else) 2012/07/26 02:13:43 nit: missing space before {
tburkard 2012/07/26 02:50:54 Done.
+ }
+ virtual ~TestHttpTransactionDelegate() {
+ EXPECT_EQ(num_remaining_actions_to_observe_, 0);
+ EXPECT_EQ(action_in_progress_, false);
+ }
+ virtual void OnCacheActionStart() {
+ EXPECT_EQ(action_in_progress_, false);
+ EXPECT_GT(num_remaining_actions_to_observe_, 0);
+ num_remaining_actions_to_observe_--;
+ action_in_progress_ = true;
+ }
+ virtual void OnCacheActionFinish() {
+ EXPECT_EQ(action_in_progress_, true);
+ action_in_progress_ = false;
+ }
+
+ private:
+ int num_remaining_actions_to_observe_;
+ bool action_in_progress_;
+};
+
void ReadAndVerifyTransaction(net::HttpTransaction* trans,
const MockTransaction& trans_info) {
std::string content;
@@ -69,17 +96,25 @@
EXPECT_EQ(expected, content);
}
-void RunTransactionTestWithRequestAndLog(net::HttpCache* cache,
- const MockTransaction& trans_info,
- const MockHttpRequest& request,
- net::HttpResponseInfo* response_info,
- const net::BoundNetLog& net_log) {
+static const int kNoDelegateTransactionCheck = -1;
+
+void RunTransactionTestWithRequestAndLogAndNumDelegateTransactions(
rvargas (doing something else) 2012/07/26 02:13:43 nit: ...LogAndDelegate(
tburkard 2012/07/26 02:50:54 I'd rather keep it so to disambiguate "RequestLog"
rvargas (doing something else) 2012/07/26 18:47:33 I don't understand what you mean. RunTransactionT
tburkard 2012/07/26 19:12:49 Done.
+ net::HttpCache* cache,
+ const MockTransaction& trans_info,
+ const MockHttpRequest& request,
+ net::HttpResponseInfo* response_info,
+ const net::BoundNetLog& net_log,
+ int num_delegate_transactions) {
rvargas (doing something else) 2012/07/26 02:13:43 num_actions ? if anything, they are not transactio
tburkard 2012/07/26 02:50:54 Done.
net::TestCompletionCallback callback;
// write to the cache
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache->CreateTransaction(&trans);
+ scoped_ptr<TestHttpTransactionDelegate> delegate;
+ if (num_delegate_transactions != kNoDelegateTransactionCheck) {
+ delegate.reset(new TestHttpTransactionDelegate(num_delegate_transactions));
+ }
+ int rv = cache->CreateTransaction(&trans, delegate.get());
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -101,17 +136,28 @@
const MockTransaction& trans_info,
const MockHttpRequest& request,
net::HttpResponseInfo* response_info) {
- RunTransactionTestWithRequestAndLog(cache, trans_info, request,
- response_info, net::BoundNetLog());
+ RunTransactionTestWithRequestAndLogAndNumDelegateTransactions(
+ cache, trans_info, request, response_info, net::BoundNetLog(),
+ kNoDelegateTransactionCheck);
}
void RunTransactionTestWithLog(net::HttpCache* cache,
const MockTransaction& trans_info,
const net::BoundNetLog& log) {
- RunTransactionTestWithRequestAndLog(
- cache, trans_info, MockHttpRequest(trans_info), NULL, log);
+ RunTransactionTestWithRequestAndLogAndNumDelegateTransactions(
+ cache, trans_info, MockHttpRequest(trans_info), NULL, log,
+ kNoDelegateTransactionCheck);
}
+void RunTransactionTestWithNumDelegateTransactions(
+ net::HttpCache* cache,
+ const MockTransaction& trans_info,
+ int num_delegate_transactions) {
+ RunTransactionTestWithRequestAndLogAndNumDelegateTransactions(
+ cache, trans_info, MockHttpRequest(trans_info), NULL, net::BoundNetLog(),
+ num_delegate_transactions);
+}
+
void RunTransactionTest(net::HttpCache* cache,
const MockTransaction& trans_info) {
RunTransactionTestWithLog(cache, trans_info, net::BoundNetLog());
@@ -396,7 +442,7 @@
MockHttpCache cache;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
}
@@ -500,7 +546,7 @@
MockHttpRequest request(kSimpleGET_Transaction);
scoped_ptr<Context> c(new Context());
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -545,7 +591,7 @@
// Now fail to read from the cache.
scoped_ptr<Context> c(new Context());
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
MockHttpRequest request(kSimpleGET_Transaction);
@@ -645,7 +691,7 @@
net::TestCompletionCallback callback;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -871,7 +917,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
EXPECT_EQ(net::LOAD_STATE_IDLE, c->trans->GetLoadState());
@@ -939,7 +985,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
MockHttpRequest* this_request = &request;
@@ -1024,7 +1070,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
MockHttpRequest* this_request = &request;
@@ -1072,7 +1118,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->result = c->trans->Start(
@@ -1119,7 +1165,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->result = c->trans->Start(
@@ -1179,7 +1225,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->result = c->trans->Start(
@@ -1230,7 +1276,7 @@
Context* c = new Context();
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->result = c->trans->Start(
@@ -1260,7 +1306,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->result = c->trans->Start(
@@ -1302,7 +1348,7 @@
net::TestCompletionCallback callback;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = trans->Start(&request, callback.callback(), net::BoundNetLog());
if (rv == net::ERR_IO_PENDING)
@@ -1337,7 +1383,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache->http_cache()->CreateTransaction(&c->trans);
+ c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->result = c->trans->Start(
@@ -1376,7 +1422,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
}
@@ -1422,7 +1468,7 @@
context_list.push_back(new Context());
Context* c = context_list[i];
- c->result = cache.http_cache()->CreateTransaction(&c->trans);
+ c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
}
@@ -1468,7 +1514,7 @@
MockHttpRequest request(kSimpleGET_Transaction);
scoped_ptr<Context> c(new Context());
- c->result = cache->http_cache()->CreateTransaction(&c->trans);
+ c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -1506,7 +1552,7 @@
MockHttpRequest request(kSimpleGET_Transaction);
scoped_ptr<Context> c(new Context());
- c->result = cache->http_cache()->CreateTransaction(&c->trans);
+ c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, c->result);
c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -2192,7 +2238,7 @@
net::TestCompletionCallback callback;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -3253,7 +3299,7 @@
MockHttpRequest request(kRangeGET_TransactionOK);
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3292,7 +3338,7 @@
request.load_flags |= net::LOAD_VALIDATE_CACHE;
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3337,7 +3383,7 @@
request.load_flags |= net::LOAD_VALIDATE_CACHE;
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3364,7 +3410,7 @@
// active entry (no open or create).
c = new Context();
- rv = cache.http_cache()->CreateTransaction(&c->trans);
+ rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3645,7 +3691,7 @@
net::TestCompletionCallback callback;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -3723,7 +3769,7 @@
MockHttpRequest request(kSimpleGET_Transaction);
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3753,7 +3799,7 @@
MockHttpRequest request(kSimpleGET_Transaction);
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3796,7 +3842,7 @@
MockHttpRequest request(transaction);
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3839,7 +3885,7 @@
MockHttpRequest request(transaction);
scoped_ptr<Context> c(new Context());
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -3899,7 +3945,7 @@
MockHttpRequest request(transaction);
scoped_ptr<Context> c(new Context());
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
@@ -4043,7 +4089,7 @@
MockHttpRequest request(transaction);
Context* c = new Context();
- int rv = cache.http_cache()->CreateTransaction(&c->trans);
+ int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL);
EXPECT_EQ(net::OK, rv);
// Queue another request to this transaction. We have to start this request
@@ -4051,7 +4097,8 @@
// otherwise it will just create a new entry without being queued to the first
// request.
Context* pending = new Context();
- EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&pending->trans));
+ EXPECT_EQ(net::OK,
+ cache.http_cache()->CreateTransaction(&pending->trans, NULL));
rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog());
EXPECT_EQ(net::ERR_IO_PENDING,
@@ -4135,7 +4182,7 @@
"rg: 50-59 rg: 60-69 rg: 70-79 ";
scoped_ptr<Context> c(new Context);
- EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans));
+ EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans, NULL));
MockHttpRequest request(transaction);
int rv = c->trans->Start(
@@ -4207,7 +4254,7 @@
MockHttpRequest request(transaction);
Context* c = new Context();
- EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans));
+ EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans, NULL));
int rv = c->trans->Start(
&request, c->callback.callback(), net::BoundNetLog());
@@ -4335,7 +4382,7 @@
// write to the cache
{
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -4363,7 +4410,7 @@
// read from the cache
{
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -4488,7 +4535,7 @@
net::TestCompletionCallback callback;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
ASSERT_TRUE(trans.get());
@@ -4503,7 +4550,7 @@
MockHttpCache* cache = new MockHttpCache;
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache->http_cache()->CreateTransaction(&trans);
+ int rv = cache->http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
delete cache;
@@ -4741,7 +4788,7 @@
{
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
MockHttpRequest request(kSimpleGET_Transaction);
@@ -4775,7 +4822,7 @@
{
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = trans->Start(&request, callback.callback(), net::BoundNetLog());
@@ -4813,7 +4860,7 @@
{
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
// Force a response that can be resumed.
@@ -4870,7 +4917,7 @@
{
// Now make a regular request.
scoped_ptr<net::HttpTransaction> trans;
- int rv = cache.http_cache()->CreateTransaction(&trans);
+ int rv = cache.http_cache()->CreateTransaction(&trans, NULL);
EXPECT_EQ(net::OK, rv);
rv = trans->Start(&request, callback.callback(), net::BoundNetLog());
@@ -4949,3 +4996,20 @@
EXPECT_TRUE(truncated);
entry->Close();
}
+
+TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit_TransactionDelegate) {
+ MockHttpCache cache;
+
+ // write to the cache
rvargas (doing something else) 2012/07/26 02:13:43 nit: Starts with uppercase and ends with period. S
tburkard 2012/07/26 02:50:54 Done.
+ RunTransactionTestWithNumDelegateTransactions(cache.http_cache(),
+ kSimpleGET_Transaction,
+ 8);
+
+ // force this transaction to read from the cache
+ MockTransaction transaction(kSimpleGET_Transaction);
+ transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE;
+
+ RunTransactionTestWithNumDelegateTransactions(cache.http_cache(),
+ kSimpleGET_Transaction,
+ 5);
+}

Powered by Google App Engine
This is Rietveld 408576698