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

Unified Diff: chrome/browser/net/passive_log_collector_unittest.cc

Issue 1696005: Add net log entries that summarize transmit and receive byte counts. (Closed)
Patch Set: More tests and address comments Created 10 years, 8 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 | « chrome/browser/net/passive_log_collector.cc ('k') | chrome/browser/net/view_net_internals_job_factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/passive_log_collector_unittest.cc
diff --git a/chrome/browser/net/passive_log_collector_unittest.cc b/chrome/browser/net/passive_log_collector_unittest.cc
index ef3d3964f90b023c92d570c561ae99fb21f76c39..40dfc92e69ef26007eba2bd0e6713e7cea71bb7b 100644
--- a/chrome/browser/net/passive_log_collector_unittest.cc
+++ b/chrome/browser/net/passive_log_collector_unittest.cc
@@ -13,17 +13,18 @@ namespace {
typedef PassiveLogCollector::RequestTracker RequestTracker;
typedef PassiveLogCollector::RequestInfoList RequestInfoList;
+typedef net::NetLog NetLog;
-const net::NetLog::SourceType kSourceType = net::NetLog::SOURCE_NONE;
+const NetLog::SourceType kSourceType = NetLog::SOURCE_NONE;
PassiveLogCollector::Entry MakeStartLogEntryWithURL(int source_id,
const std::string& url) {
return PassiveLogCollector::Entry(
0,
- net::NetLog::TYPE_URL_REQUEST_START,
+ NetLog::TYPE_URL_REQUEST_START,
base::TimeTicks(),
- net::NetLog::Source(kSourceType, source_id),
- net::NetLog::PHASE_BEGIN,
+ NetLog::Source(kSourceType, source_id),
+ NetLog::PHASE_BEGIN,
new net::NetLogStringParameter(url));
}
@@ -35,18 +36,36 @@ PassiveLogCollector::Entry MakeStartLogEntry(int source_id) {
PassiveLogCollector::Entry MakeEndLogEntry(int source_id) {
return PassiveLogCollector::Entry(
0,
- net::NetLog::TYPE_REQUEST_ALIVE,
+ NetLog::TYPE_REQUEST_ALIVE,
base::TimeTicks(),
- net::NetLog::Source(kSourceType, source_id),
- net::NetLog::PHASE_END,
+ NetLog::Source(kSourceType, source_id),
+ NetLog::PHASE_END,
NULL);
}
+void AddStartURLRequestEntries(PassiveLogCollector* collector, uint32 id) {
+ collector->OnAddEntry(NetLog::TYPE_REQUEST_ALIVE, base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
+ NetLog::PHASE_BEGIN, NULL);
+ collector->OnAddEntry(NetLog::TYPE_URL_REQUEST_START, base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
+ NetLog::PHASE_BEGIN, new net::NetLogStringParameter(
+ StringPrintf("http://req%d", id)));
+}
+
+void AddEndURLRequestEntries(PassiveLogCollector* collector, uint32 id) {
+ collector->OnAddEntry(NetLog::TYPE_REQUEST_ALIVE, base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
+ NetLog::PHASE_END, NULL);
+}
+
static const int kMaxNumLoadLogEntries = 1;
+} // namespace
+
TEST(RequestTrackerTest, BasicBounded) {
- RequestTracker tracker(NULL);
- EXPECT_FALSE(tracker.IsUnbounded());
+ RequestTracker tracker(NULL, NULL);
+ EXPECT_FALSE(tracker.is_unbounded());
EXPECT_EQ(0u, tracker.GetLiveRequests().size());
EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
@@ -79,8 +98,8 @@ TEST(RequestTrackerTest, BasicBounded) {
}
TEST(RequestTrackerTest, GraveyardBounded) {
- RequestTracker tracker(NULL);
- EXPECT_FALSE(tracker.IsUnbounded());
+ RequestTracker tracker(NULL, NULL);
+ EXPECT_FALSE(tracker.is_unbounded());
EXPECT_EQ(0u, tracker.GetLiveRequests().size());
EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
@@ -104,14 +123,14 @@ TEST(RequestTrackerTest, GraveyardBounded) {
}
TEST(RequestTrackerTest, GraveyardUnbounded) {
- RequestTracker tracker(NULL);
- EXPECT_FALSE(tracker.IsUnbounded());
+ RequestTracker tracker(NULL, NULL);
+ EXPECT_FALSE(tracker.is_unbounded());
EXPECT_EQ(0u, tracker.GetLiveRequests().size());
EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
tracker.SetUnbounded(true);
- EXPECT_TRUE(tracker.IsUnbounded());
+ EXPECT_TRUE(tracker.is_unbounded());
// Add twice as many requests as would fit in the bounded graveyard.
@@ -136,8 +155,8 @@ TEST(RequestTrackerTest, GraveyardUnbounded) {
// Check that we exclude "chrome://" URLs from being saved into the recent
// requests list (graveyard).
TEST(RequestTrackerTest, GraveyardIsFiltered) {
- RequestTracker tracker(NULL);
- EXPECT_FALSE(tracker.IsUnbounded());
+ RequestTracker tracker(NULL, NULL);
+ EXPECT_FALSE(tracker.is_unbounded());
// This will be excluded.
std::string url1 = "chrome://dontcare/";
@@ -161,13 +180,13 @@ TEST(RequestTrackerTest, GraveyardIsFiltered) {
// Convert an unbounded tracker back to being bounded.
TEST(RequestTrackerTest, ConvertUnboundedToBounded) {
- RequestTracker tracker(NULL);
- EXPECT_FALSE(tracker.IsUnbounded());
+ RequestTracker tracker(NULL, NULL);
+ EXPECT_FALSE(tracker.is_unbounded());
EXPECT_EQ(0u, tracker.GetLiveRequests().size());
EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
tracker.SetUnbounded(true);
- EXPECT_TRUE(tracker.IsUnbounded());
+ EXPECT_TRUE(tracker.is_unbounded());
// Add twice as many requests as would fit in the bounded graveyard.
@@ -193,4 +212,811 @@ TEST(RequestTrackerTest, ConvertUnboundedToBounded) {
ASSERT_EQ(kMaxSize, tracker.GetRecentlyDeceased().size());
}
-} // namespace
+TEST(PassiveLogCollectorTest, BasicConnectJobAssociation) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+ AddStartURLRequestEntries(&log, 20);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(10u, requests[0].source_id);
+ EXPECT_EQ(2u, requests[0].entries.size());
+ EXPECT_EQ(20u, requests[1].source_id);
+ EXPECT_EQ(2u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(4u, requests[0].entries.size());
+ EXPECT_EQ(5u, requests[1].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+ AddEndURLRequestEntries(&log, 20);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, BasicSocketAssociation) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+ AddStartURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_END, NULL);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(21));
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(6u, requests[0].entries.size());
+ EXPECT_EQ(7u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
+
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(8u, requests[0].entries.size());
+ EXPECT_EQ(10u, requests[1].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+ AddEndURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(9u, requests[0].entries.size());
+ EXPECT_EQ(11u, requests[1].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, IdleSocketAssociation) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+ AddStartURLRequestEntries(&log, 20);
+ log.OnAddEntry(NetLog::TYPE_INIT_PROXY_RESOLVER , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(2u, requests[0].entries.size());
+ EXPECT_EQ(3u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
+
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(4u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+ AddEndURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(7u, requests[1].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, IdleAssociateAfterConnectJobStarted) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+ AddStartURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_END, NULL);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
+
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+ AddEndURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+ EXPECT_EQ(7u, requests[1].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, LateBindDifferentConnectJob) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+ AddStartURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_END, NULL);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_END, NULL);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
+ NetLog::PHASE_END, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(21));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(31));
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(7u, requests[0].entries.size());
+ EXPECT_EQ(8u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
+
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(9u, requests[0].entries.size());
+ EXPECT_EQ(11u, requests[1].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+ AddEndURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(10u, requests[0].entries.size());
+ EXPECT_EQ(12u, requests[1].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, LateBindPendingConnectJob) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+ AddStartURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_END, NULL);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(2u, requests[0].entries.size());
+ EXPECT_EQ(2u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(21));
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
+
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(2u, requests.size());
+
+ EXPECT_EQ(7u, requests[0].entries.size());
+ EXPECT_EQ(9u, requests[1].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+ AddEndURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 25),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(8u, requests[0].entries.size());
+ EXPECT_EQ(10u, requests[1].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, ReconnectToIdleSocket) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+
+ // Initial socket.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(4u, requests[0].entries.size());
+
+ // Reconnect.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(17));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 17),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(7u, requests[0].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, ReconnectToLateBoundSocket) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+
+ // Initial socket.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(4u, requests[0].entries.size());
+
+ // Now reconnect.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+
+ // But we get late bound to an idle socket.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(17));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 17),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(7u, requests[0].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(8u, requests[0].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, ReconnectToLateBoundConnectJob) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+
+ // Initial socket.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(4u, requests[0].entries.size());
+
+ // Now reconnect.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+
+ // But we get late bound to a different ConnectJob.
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 12),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 12),
+ NetLog::PHASE_END, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(12));
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(8u, requests[0].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(17));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 17),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(10u, requests[0].entries.size());
+
+ AddEndURLRequestEntries(&log, 10);
+
+ log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(11u, requests[0].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, LostConnectJob) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_NONE, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+
+ log.connect_job_tracker_.Clear();
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(11));
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(5u, requests[0].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, LostSocket) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_END, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_BEGIN, NULL);
+ log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_END, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(7u, requests[0].entries.size());
+
+ log.socket_tracker_.Clear();
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(4u, requests[0].entries.size());
+}
+
+TEST(PassiveLogCollectorTest, AccumulateRxTxData) {
+ PassiveLogCollector log;
+
+ RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+
+ AddStartURLRequestEntries(&log, 10);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(4u, requests[0].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_SENT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(1));
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
+ EXPECT_EQ("Tx/Rx: 1/0 [1/0 total on socket] (Bytes)",
+ requests[0].entries[4].extra_parameters->ToString());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_RECEIVED , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(2));
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
+ EXPECT_EQ("Tx/Rx: 1/2 [1/2 total on socket] (Bytes)",
+ requests[0].entries[4].extra_parameters->ToString());
+
+ AddEndURLRequestEntries(&log, 10);
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+ EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
+ EXPECT_EQ("Tx/Rx: 1/2 [1/2 total on socket] (Bytes)",
+ requests[0].entries[4].extra_parameters->ToString());
+
+ AddStartURLRequestEntries(&log, 20);
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
+ log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_NONE, NULL);
+
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(4u, requests[0].entries.size());
+
+ log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_SENT , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(4));
+ log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_RECEIVED , base::TimeTicks(),
+ NetLog::Source(NetLog::SOURCE_SOCKET, 15),
+ NetLog::PHASE_END, new net::NetLogIntegerParameter(8));
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(1u, requests.size());
+ EXPECT_EQ(5u, requests[0].entries.size());
+ EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
+ EXPECT_EQ("Tx/Rx: 4/8 [5/10 total on socket] (Bytes)",
+ requests[0].entries[4].extra_parameters->ToString());
+
+ AddEndURLRequestEntries(&log, 20);
+ requests = log.url_request_tracker()->GetLiveRequests();
+ EXPECT_EQ(0u, requests.size());
+ requests = log.url_request_tracker()->GetRecentlyDeceased();
+ EXPECT_EQ(2u, requests.size());
+ EXPECT_EQ(6u, requests[0].entries.size());
+ EXPECT_EQ(6u, requests[1].entries.size());
+}
« no previous file with comments | « chrome/browser/net/passive_log_collector.cc ('k') | chrome/browser/net/view_net_internals_job_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698