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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/passive_log_collector.h" 5 #include "chrome/browser/net/passive_log_collector.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 11
12 namespace { 12 namespace {
13 13
14 typedef PassiveLogCollector::RequestTracker RequestTracker; 14 typedef PassiveLogCollector::RequestTracker RequestTracker;
15 typedef PassiveLogCollector::RequestInfoList RequestInfoList; 15 typedef PassiveLogCollector::RequestInfoList RequestInfoList;
16 typedef net::NetLog NetLog;
16 17
17 const net::NetLog::SourceType kSourceType = net::NetLog::SOURCE_NONE; 18 const NetLog::SourceType kSourceType = NetLog::SOURCE_NONE;
18 19
19 PassiveLogCollector::Entry MakeStartLogEntryWithURL(int source_id, 20 PassiveLogCollector::Entry MakeStartLogEntryWithURL(int source_id,
20 const std::string& url) { 21 const std::string& url) {
21 return PassiveLogCollector::Entry( 22 return PassiveLogCollector::Entry(
22 0, 23 0,
23 net::NetLog::TYPE_URL_REQUEST_START, 24 NetLog::TYPE_URL_REQUEST_START,
24 base::TimeTicks(), 25 base::TimeTicks(),
25 net::NetLog::Source(kSourceType, source_id), 26 NetLog::Source(kSourceType, source_id),
26 net::NetLog::PHASE_BEGIN, 27 NetLog::PHASE_BEGIN,
27 new net::NetLogStringParameter(url)); 28 new net::NetLogStringParameter(url));
28 } 29 }
29 30
30 PassiveLogCollector::Entry MakeStartLogEntry(int source_id) { 31 PassiveLogCollector::Entry MakeStartLogEntry(int source_id) {
31 return MakeStartLogEntryWithURL(source_id, 32 return MakeStartLogEntryWithURL(source_id,
32 StringPrintf("http://req%d", source_id)); 33 StringPrintf("http://req%d", source_id));
33 } 34 }
34 35
35 PassiveLogCollector::Entry MakeEndLogEntry(int source_id) { 36 PassiveLogCollector::Entry MakeEndLogEntry(int source_id) {
36 return PassiveLogCollector::Entry( 37 return PassiveLogCollector::Entry(
37 0, 38 0,
38 net::NetLog::TYPE_REQUEST_ALIVE, 39 NetLog::TYPE_REQUEST_ALIVE,
39 base::TimeTicks(), 40 base::TimeTicks(),
40 net::NetLog::Source(kSourceType, source_id), 41 NetLog::Source(kSourceType, source_id),
41 net::NetLog::PHASE_END, 42 NetLog::PHASE_END,
42 NULL); 43 NULL);
43 } 44 }
44 45
46 void AddStartURLRequestEntries(PassiveLogCollector* collector, uint32 id) {
47 collector->OnAddEntry(NetLog::TYPE_REQUEST_ALIVE, base::TimeTicks(),
48 NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
49 NetLog::PHASE_BEGIN, NULL);
50 collector->OnAddEntry(NetLog::TYPE_URL_REQUEST_START, base::TimeTicks(),
51 NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
52 NetLog::PHASE_BEGIN, new net::NetLogStringParameter(
53 StringPrintf("http://req%d", id)));
54 }
55
56 void AddEndURLRequestEntries(PassiveLogCollector* collector, uint32 id) {
57 collector->OnAddEntry(NetLog::TYPE_REQUEST_ALIVE, base::TimeTicks(),
58 NetLog::Source(NetLog::SOURCE_URL_REQUEST, id),
59 NetLog::PHASE_END, NULL);
60 }
61
45 static const int kMaxNumLoadLogEntries = 1; 62 static const int kMaxNumLoadLogEntries = 1;
46 63
64 } // namespace
65
47 TEST(RequestTrackerTest, BasicBounded) { 66 TEST(RequestTrackerTest, BasicBounded) {
48 RequestTracker tracker(NULL); 67 RequestTracker tracker(NULL, NULL);
49 EXPECT_FALSE(tracker.IsUnbounded()); 68 EXPECT_FALSE(tracker.is_unbounded());
50 EXPECT_EQ(0u, tracker.GetLiveRequests().size()); 69 EXPECT_EQ(0u, tracker.GetLiveRequests().size());
51 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size()); 70 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
52 71
53 tracker.OnAddEntry(MakeStartLogEntry(1)); 72 tracker.OnAddEntry(MakeStartLogEntry(1));
54 tracker.OnAddEntry(MakeStartLogEntry(2)); 73 tracker.OnAddEntry(MakeStartLogEntry(2));
55 tracker.OnAddEntry(MakeStartLogEntry(3)); 74 tracker.OnAddEntry(MakeStartLogEntry(3));
56 tracker.OnAddEntry(MakeStartLogEntry(4)); 75 tracker.OnAddEntry(MakeStartLogEntry(4));
57 tracker.OnAddEntry(MakeStartLogEntry(5)); 76 tracker.OnAddEntry(MakeStartLogEntry(5));
58 77
59 RequestInfoList live_reqs = tracker.GetLiveRequests(); 78 RequestInfoList live_reqs = tracker.GetLiveRequests();
(...skipping 12 matching lines...) Expand all
72 ASSERT_EQ(3u, tracker.GetRecentlyDeceased().size()); 91 ASSERT_EQ(3u, tracker.GetRecentlyDeceased().size());
73 92
74 live_reqs = tracker.GetLiveRequests(); 93 live_reqs = tracker.GetLiveRequests();
75 94
76 ASSERT_EQ(2u, live_reqs.size()); 95 ASSERT_EQ(2u, live_reqs.size());
77 EXPECT_EQ("http://req2", live_reqs[0].url); 96 EXPECT_EQ("http://req2", live_reqs[0].url);
78 EXPECT_EQ("http://req4", live_reqs[1].url); 97 EXPECT_EQ("http://req4", live_reqs[1].url);
79 } 98 }
80 99
81 TEST(RequestTrackerTest, GraveyardBounded) { 100 TEST(RequestTrackerTest, GraveyardBounded) {
82 RequestTracker tracker(NULL); 101 RequestTracker tracker(NULL, NULL);
83 EXPECT_FALSE(tracker.IsUnbounded()); 102 EXPECT_FALSE(tracker.is_unbounded());
84 EXPECT_EQ(0u, tracker.GetLiveRequests().size()); 103 EXPECT_EQ(0u, tracker.GetLiveRequests().size());
85 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size()); 104 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
86 105
87 // Add twice as many requests as will fit in the graveyard. 106 // Add twice as many requests as will fit in the graveyard.
88 for (size_t i = 0; i < RequestTracker::kMaxGraveyardSize * 2; ++i) { 107 for (size_t i = 0; i < RequestTracker::kMaxGraveyardSize * 2; ++i) {
89 tracker.OnAddEntry(MakeStartLogEntry(i)); 108 tracker.OnAddEntry(MakeStartLogEntry(i));
90 tracker.OnAddEntry(MakeEndLogEntry(i)); 109 tracker.OnAddEntry(MakeEndLogEntry(i));
91 } 110 }
92 111
93 // Check that only the last |kMaxGraveyardSize| requests are in-memory. 112 // Check that only the last |kMaxGraveyardSize| requests are in-memory.
94 113
95 RequestInfoList recent_reqs = tracker.GetRecentlyDeceased(); 114 RequestInfoList recent_reqs = tracker.GetRecentlyDeceased();
96 115
97 ASSERT_EQ(RequestTracker::kMaxGraveyardSize, recent_reqs.size()); 116 ASSERT_EQ(RequestTracker::kMaxGraveyardSize, recent_reqs.size());
98 117
99 for (size_t i = 0; i < RequestTracker::kMaxGraveyardSize; ++i) { 118 for (size_t i = 0; i < RequestTracker::kMaxGraveyardSize; ++i) {
100 size_t req_number = i + RequestTracker::kMaxGraveyardSize; 119 size_t req_number = i + RequestTracker::kMaxGraveyardSize;
101 std::string url = StringPrintf("http://req%" PRIuS, req_number); 120 std::string url = StringPrintf("http://req%" PRIuS, req_number);
102 EXPECT_EQ(url, recent_reqs[i].url); 121 EXPECT_EQ(url, recent_reqs[i].url);
103 } 122 }
104 } 123 }
105 124
106 TEST(RequestTrackerTest, GraveyardUnbounded) { 125 TEST(RequestTrackerTest, GraveyardUnbounded) {
107 RequestTracker tracker(NULL); 126 RequestTracker tracker(NULL, NULL);
108 EXPECT_FALSE(tracker.IsUnbounded()); 127 EXPECT_FALSE(tracker.is_unbounded());
109 EXPECT_EQ(0u, tracker.GetLiveRequests().size()); 128 EXPECT_EQ(0u, tracker.GetLiveRequests().size());
110 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size()); 129 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
111 130
112 tracker.SetUnbounded(true); 131 tracker.SetUnbounded(true);
113 132
114 EXPECT_TRUE(tracker.IsUnbounded()); 133 EXPECT_TRUE(tracker.is_unbounded());
115 134
116 // Add twice as many requests as would fit in the bounded graveyard. 135 // Add twice as many requests as would fit in the bounded graveyard.
117 136
118 size_t kMaxSize = RequestTracker::kMaxGraveyardSize * 2; 137 size_t kMaxSize = RequestTracker::kMaxGraveyardSize * 2;
119 for (size_t i = 0; i < kMaxSize; ++i) { 138 for (size_t i = 0; i < kMaxSize; ++i) {
120 tracker.OnAddEntry(MakeStartLogEntry(i)); 139 tracker.OnAddEntry(MakeStartLogEntry(i));
121 tracker.OnAddEntry(MakeEndLogEntry(i)); 140 tracker.OnAddEntry(MakeEndLogEntry(i));
122 } 141 }
123 142
124 // Check that all of them got saved. 143 // Check that all of them got saved.
125 144
126 RequestInfoList recent_reqs = tracker.GetRecentlyDeceased(); 145 RequestInfoList recent_reqs = tracker.GetRecentlyDeceased();
127 146
128 ASSERT_EQ(kMaxSize, recent_reqs.size()); 147 ASSERT_EQ(kMaxSize, recent_reqs.size());
129 148
130 for (size_t i = 0; i < kMaxSize; ++i) { 149 for (size_t i = 0; i < kMaxSize; ++i) {
131 std::string url = StringPrintf("http://req%" PRIuS, i); 150 std::string url = StringPrintf("http://req%" PRIuS, i);
132 EXPECT_EQ(url, recent_reqs[i].url); 151 EXPECT_EQ(url, recent_reqs[i].url);
133 } 152 }
134 } 153 }
135 154
136 // Check that we exclude "chrome://" URLs from being saved into the recent 155 // Check that we exclude "chrome://" URLs from being saved into the recent
137 // requests list (graveyard). 156 // requests list (graveyard).
138 TEST(RequestTrackerTest, GraveyardIsFiltered) { 157 TEST(RequestTrackerTest, GraveyardIsFiltered) {
139 RequestTracker tracker(NULL); 158 RequestTracker tracker(NULL, NULL);
140 EXPECT_FALSE(tracker.IsUnbounded()); 159 EXPECT_FALSE(tracker.is_unbounded());
141 160
142 // This will be excluded. 161 // This will be excluded.
143 std::string url1 = "chrome://dontcare/"; 162 std::string url1 = "chrome://dontcare/";
144 tracker.OnAddEntry(MakeStartLogEntryWithURL(1, url1)); 163 tracker.OnAddEntry(MakeStartLogEntryWithURL(1, url1));
145 tracker.OnAddEntry(MakeEndLogEntry(1)); 164 tracker.OnAddEntry(MakeEndLogEntry(1));
146 165
147 // This will be be added to graveyard. 166 // This will be be added to graveyard.
148 std::string url2 = "chrome2://dontcare/"; 167 std::string url2 = "chrome2://dontcare/";
149 tracker.OnAddEntry(MakeStartLogEntryWithURL(2, url2)); 168 tracker.OnAddEntry(MakeStartLogEntryWithURL(2, url2));
150 tracker.OnAddEntry(MakeEndLogEntry(2)); 169 tracker.OnAddEntry(MakeEndLogEntry(2));
151 170
152 // This will be be added to graveyard. 171 // This will be be added to graveyard.
153 std::string url3 = "http://foo/"; 172 std::string url3 = "http://foo/";
154 tracker.OnAddEntry(MakeStartLogEntryWithURL(3, url3)); 173 tracker.OnAddEntry(MakeStartLogEntryWithURL(3, url3));
155 tracker.OnAddEntry(MakeEndLogEntry(3)); 174 tracker.OnAddEntry(MakeEndLogEntry(3));
156 175
157 ASSERT_EQ(2u, tracker.GetRecentlyDeceased().size()); 176 ASSERT_EQ(2u, tracker.GetRecentlyDeceased().size());
158 EXPECT_EQ(url2, tracker.GetRecentlyDeceased()[0].url); 177 EXPECT_EQ(url2, tracker.GetRecentlyDeceased()[0].url);
159 EXPECT_EQ(url3, tracker.GetRecentlyDeceased()[1].url); 178 EXPECT_EQ(url3, tracker.GetRecentlyDeceased()[1].url);
160 } 179 }
161 180
162 // Convert an unbounded tracker back to being bounded. 181 // Convert an unbounded tracker back to being bounded.
163 TEST(RequestTrackerTest, ConvertUnboundedToBounded) { 182 TEST(RequestTrackerTest, ConvertUnboundedToBounded) {
164 RequestTracker tracker(NULL); 183 RequestTracker tracker(NULL, NULL);
165 EXPECT_FALSE(tracker.IsUnbounded()); 184 EXPECT_FALSE(tracker.is_unbounded());
166 EXPECT_EQ(0u, tracker.GetLiveRequests().size()); 185 EXPECT_EQ(0u, tracker.GetLiveRequests().size());
167 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size()); 186 EXPECT_EQ(0u, tracker.GetRecentlyDeceased().size());
168 187
169 tracker.SetUnbounded(true); 188 tracker.SetUnbounded(true);
170 EXPECT_TRUE(tracker.IsUnbounded()); 189 EXPECT_TRUE(tracker.is_unbounded());
171 190
172 // Add twice as many requests as would fit in the bounded graveyard. 191 // Add twice as many requests as would fit in the bounded graveyard.
173 192
174 size_t kMaxSize = RequestTracker::kMaxGraveyardSize * 2; 193 size_t kMaxSize = RequestTracker::kMaxGraveyardSize * 2;
175 for (size_t i = 0; i < kMaxSize; ++i) { 194 for (size_t i = 0; i < kMaxSize; ++i) {
176 tracker.OnAddEntry(MakeStartLogEntry(i)); 195 tracker.OnAddEntry(MakeStartLogEntry(i));
177 tracker.OnAddEntry(MakeEndLogEntry(i)); 196 tracker.OnAddEntry(MakeEndLogEntry(i));
178 } 197 }
179 198
180 // Check that all of them got saved. 199 // Check that all of them got saved.
181 ASSERT_EQ(kMaxSize, tracker.GetRecentlyDeceased().size()); 200 ASSERT_EQ(kMaxSize, tracker.GetRecentlyDeceased().size());
182 201
183 // Now make the tracker bounded, and add more entries to its graveyard. 202 // Now make the tracker bounded, and add more entries to its graveyard.
184 tracker.SetUnbounded(false); 203 tracker.SetUnbounded(false);
185 204
186 kMaxSize = RequestTracker::kMaxGraveyardSize; 205 kMaxSize = RequestTracker::kMaxGraveyardSize;
187 for (size_t i = kMaxSize; i < 2 * kMaxSize; ++i) { 206 for (size_t i = kMaxSize; i < 2 * kMaxSize; ++i) {
188 tracker.OnAddEntry(MakeStartLogEntry(i)); 207 tracker.OnAddEntry(MakeStartLogEntry(i));
189 tracker.OnAddEntry(MakeEndLogEntry(i)); 208 tracker.OnAddEntry(MakeEndLogEntry(i));
190 } 209 }
191 210
192 // We should only have kMaxGraveyardSize entries now. 211 // We should only have kMaxGraveyardSize entries now.
193 ASSERT_EQ(kMaxSize, tracker.GetRecentlyDeceased().size()); 212 ASSERT_EQ(kMaxSize, tracker.GetRecentlyDeceased().size());
194 } 213 }
195 214
196 } // namespace 215 TEST(PassiveLogCollectorTest, BasicConnectJobAssociation) {
216 PassiveLogCollector log;
217
218 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
219 EXPECT_EQ(0u, requests.size());
220
221 AddStartURLRequestEntries(&log, 10);
222 AddStartURLRequestEntries(&log, 20);
223
224 requests = log.url_request_tracker()->GetLiveRequests();
225 EXPECT_EQ(2u, requests.size());
226
227 EXPECT_EQ(10u, requests[0].source_id);
228 EXPECT_EQ(2u, requests[0].entries.size());
229 EXPECT_EQ(20u, requests[1].source_id);
230 EXPECT_EQ(2u, requests[1].entries.size());
231
232 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
233 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
234 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
235 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
236 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
237 NetLog::PHASE_BEGIN, NULL);
238
239 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
240 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
241 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
242 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
243 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
244 NetLog::PHASE_BEGIN, NULL);
245 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
246 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
247 NetLog::PHASE_END, NULL);
248
249 requests = log.url_request_tracker()->GetLiveRequests();
250 EXPECT_EQ(2u, requests.size());
251
252 EXPECT_EQ(4u, requests[0].entries.size());
253 EXPECT_EQ(5u, requests[1].entries.size());
254
255 AddEndURLRequestEntries(&log, 10);
256 AddEndURLRequestEntries(&log, 20);
257
258 requests = log.url_request_tracker()->GetLiveRequests();
259 EXPECT_EQ(0u, requests.size());
260
261 requests = log.url_request_tracker()->GetRecentlyDeceased();
262 EXPECT_EQ(2u, requests.size());
263 EXPECT_EQ(5u, requests[0].entries.size());
264 EXPECT_EQ(6u, requests[1].entries.size());
265 }
266
267 TEST(PassiveLogCollectorTest, BasicSocketAssociation) {
268 PassiveLogCollector log;
269
270 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
271 EXPECT_EQ(0u, requests.size());
272
273 AddStartURLRequestEntries(&log, 10);
274 AddStartURLRequestEntries(&log, 20);
275
276 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
277 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
278 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
279 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
280 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
281 NetLog::PHASE_BEGIN, NULL);
282 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
283 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
284 NetLog::PHASE_END, NULL);
285
286 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
287 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
288 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
289 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
290 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
291 NetLog::PHASE_BEGIN, NULL);
292 log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
293 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
294 NetLog::PHASE_NONE, NULL);
295 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
296 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
297 NetLog::PHASE_END, NULL);
298
299 requests = log.url_request_tracker()->GetLiveRequests();
300 EXPECT_EQ(2u, requests.size());
301
302 EXPECT_EQ(5u, requests[0].entries.size());
303 EXPECT_EQ(6u, requests[1].entries.size());
304
305 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
306 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
307 NetLog::PHASE_END, new net::NetLogIntegerParameter(11));
308 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
309 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
310 NetLog::PHASE_END, new net::NetLogIntegerParameter(21));
311
312 requests = log.url_request_tracker()->GetLiveRequests();
313 EXPECT_EQ(2u, requests.size());
314
315 EXPECT_EQ(6u, requests[0].entries.size());
316 EXPECT_EQ(7u, requests[1].entries.size());
317
318 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
319 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
320 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
321 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
322 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
323 NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
324
325 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
326 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
327 NetLog::PHASE_NONE, NULL);
328 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
329 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
330 NetLog::PHASE_BEGIN, NULL);
331 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
332 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
333 NetLog::PHASE_END, NULL);
334
335 requests = log.url_request_tracker()->GetLiveRequests();
336 EXPECT_EQ(2u, requests.size());
337
338 EXPECT_EQ(8u, requests[0].entries.size());
339 EXPECT_EQ(10u, requests[1].entries.size());
340
341 AddEndURLRequestEntries(&log, 10);
342 AddEndURLRequestEntries(&log, 20);
343
344 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
345 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
346 NetLog::PHASE_NONE, NULL);
347 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
348 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
349 NetLog::PHASE_NONE, NULL);
350
351 requests = log.url_request_tracker()->GetLiveRequests();
352 EXPECT_EQ(0u, requests.size());
353
354 requests = log.url_request_tracker()->GetRecentlyDeceased();
355 EXPECT_EQ(2u, requests.size());
356 EXPECT_EQ(9u, requests[0].entries.size());
357 EXPECT_EQ(11u, requests[1].entries.size());
358 }
359
360 TEST(PassiveLogCollectorTest, IdleSocketAssociation) {
361 PassiveLogCollector log;
362
363 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
364 EXPECT_EQ(0u, requests.size());
365
366 AddStartURLRequestEntries(&log, 10);
367 AddStartURLRequestEntries(&log, 20);
368 log.OnAddEntry(NetLog::TYPE_INIT_PROXY_RESOLVER , base::TimeTicks(),
369 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
370 NetLog::PHASE_NONE, NULL);
371
372 requests = log.url_request_tracker()->GetLiveRequests();
373 EXPECT_EQ(2u, requests.size());
374
375 EXPECT_EQ(2u, requests[0].entries.size());
376 EXPECT_EQ(3u, requests[1].entries.size());
377
378 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
379 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
380 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
381 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
382 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
383 NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
384
385 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
386 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
387 NetLog::PHASE_NONE, NULL);
388 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
389 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
390 NetLog::PHASE_BEGIN, NULL);
391 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
392 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
393 NetLog::PHASE_END, NULL);
394
395 requests = log.url_request_tracker()->GetLiveRequests();
396 EXPECT_EQ(2u, requests.size());
397
398 EXPECT_EQ(4u, requests[0].entries.size());
399 EXPECT_EQ(6u, requests[1].entries.size());
400
401 AddEndURLRequestEntries(&log, 10);
402 AddEndURLRequestEntries(&log, 20);
403
404 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
405 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
406 NetLog::PHASE_NONE, NULL);
407 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
408 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
409 NetLog::PHASE_NONE, NULL);
410
411 requests = log.url_request_tracker()->GetLiveRequests();
412 EXPECT_EQ(0u, requests.size());
413
414 requests = log.url_request_tracker()->GetRecentlyDeceased();
415 EXPECT_EQ(2u, requests.size());
416 EXPECT_EQ(5u, requests[0].entries.size());
417 EXPECT_EQ(7u, requests[1].entries.size());
418 }
419
420 TEST(PassiveLogCollectorTest, IdleAssociateAfterConnectJobStarted) {
421 PassiveLogCollector log;
422
423 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
424 EXPECT_EQ(0u, requests.size());
425
426 AddStartURLRequestEntries(&log, 10);
427 AddStartURLRequestEntries(&log, 20);
428
429 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
430 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
431 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
432 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
433 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
434 NetLog::PHASE_BEGIN, NULL);
435 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
436 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
437 NetLog::PHASE_END, NULL);
438
439 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
440 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
441 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
442 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
443 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
444 NetLog::PHASE_BEGIN, NULL);
445 log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
446 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
447 NetLog::PHASE_NONE, NULL);
448 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
449 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
450 NetLog::PHASE_END, NULL);
451
452 requests = log.url_request_tracker()->GetLiveRequests();
453 EXPECT_EQ(2u, requests.size());
454
455 EXPECT_EQ(5u, requests[0].entries.size());
456 EXPECT_EQ(6u, requests[1].entries.size());
457
458 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
459 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
460 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
461 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
462 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
463 NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
464
465 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
466 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
467 NetLog::PHASE_NONE, NULL);
468 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
469 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
470 NetLog::PHASE_BEGIN, NULL);
471 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
472 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
473 NetLog::PHASE_END, NULL);
474
475 requests = log.url_request_tracker()->GetLiveRequests();
476 EXPECT_EQ(2u, requests.size());
477
478 EXPECT_EQ(5u, requests[0].entries.size());
479 EXPECT_EQ(6u, requests[1].entries.size());
480
481 AddEndURLRequestEntries(&log, 10);
482 AddEndURLRequestEntries(&log, 20);
483
484 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
485 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
486 NetLog::PHASE_NONE, NULL);
487 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
488 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
489 NetLog::PHASE_NONE, NULL);
490
491 requests = log.url_request_tracker()->GetLiveRequests();
492 EXPECT_EQ(0u, requests.size());
493
494 requests = log.url_request_tracker()->GetRecentlyDeceased();
495 EXPECT_EQ(2u, requests.size());
496 EXPECT_EQ(6u, requests[0].entries.size());
497 EXPECT_EQ(7u, requests[1].entries.size());
498 }
499
500 TEST(PassiveLogCollectorTest, LateBindDifferentConnectJob) {
501 PassiveLogCollector log;
502
503 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
504 EXPECT_EQ(0u, requests.size());
505
506 AddStartURLRequestEntries(&log, 10);
507 AddStartURLRequestEntries(&log, 20);
508
509 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
510 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
511 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
512 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
513 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
514 NetLog::PHASE_BEGIN, NULL);
515 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
516 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
517 NetLog::PHASE_END, NULL);
518
519 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
520 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
521 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(21));
522 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
523 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
524 NetLog::PHASE_BEGIN, NULL);
525 log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
526 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
527 NetLog::PHASE_NONE, NULL);
528 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
529 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
530 NetLog::PHASE_END, NULL);
531
532 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
533 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
534 NetLog::PHASE_BEGIN, NULL);
535 log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
536 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
537 NetLog::PHASE_BEGIN, NULL);
538 log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
539 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
540 NetLog::PHASE_END, NULL);
541 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
542 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 31),
543 NetLog::PHASE_END, NULL);
544
545 requests = log.url_request_tracker()->GetLiveRequests();
546 EXPECT_EQ(2u, requests.size());
547
548 EXPECT_EQ(5u, requests[0].entries.size());
549 EXPECT_EQ(6u, requests[1].entries.size());
550
551 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
552 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
553 NetLog::PHASE_END, new net::NetLogIntegerParameter(21));
554 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
555 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
556 NetLog::PHASE_END, new net::NetLogIntegerParameter(31));
557
558 requests = log.url_request_tracker()->GetLiveRequests();
559 EXPECT_EQ(2u, requests.size());
560
561 EXPECT_EQ(7u, requests[0].entries.size());
562 EXPECT_EQ(8u, requests[1].entries.size());
563
564 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
565 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
566 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
567 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
568 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
569 NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
570
571 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
572 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
573 NetLog::PHASE_NONE, NULL);
574 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
575 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
576 NetLog::PHASE_BEGIN, NULL);
577 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
578 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
579 NetLog::PHASE_END, NULL);
580
581 requests = log.url_request_tracker()->GetLiveRequests();
582 EXPECT_EQ(2u, requests.size());
583
584 EXPECT_EQ(9u, requests[0].entries.size());
585 EXPECT_EQ(11u, requests[1].entries.size());
586
587 AddEndURLRequestEntries(&log, 10);
588 AddEndURLRequestEntries(&log, 20);
589
590 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
591 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
592 NetLog::PHASE_NONE, NULL);
593 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
594 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
595 NetLog::PHASE_NONE, NULL);
596
597 requests = log.url_request_tracker()->GetLiveRequests();
598 EXPECT_EQ(0u, requests.size());
599
600 requests = log.url_request_tracker()->GetRecentlyDeceased();
601 EXPECT_EQ(2u, requests.size());
602 EXPECT_EQ(10u, requests[0].entries.size());
603 EXPECT_EQ(12u, requests[1].entries.size());
604 }
605
606 TEST(PassiveLogCollectorTest, LateBindPendingConnectJob) {
607 PassiveLogCollector log;
608
609 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
610 EXPECT_EQ(0u, requests.size());
611
612 AddStartURLRequestEntries(&log, 10);
613 AddStartURLRequestEntries(&log, 20);
614
615 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
616 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
617 NetLog::PHASE_BEGIN, NULL);
618 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
619 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
620 NetLog::PHASE_END, NULL);
621
622 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
623 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
624 NetLog::PHASE_BEGIN, NULL);
625 log.OnAddEntry(NetLog::TYPE_TCP_CONNECT , base::TimeTicks(),
626 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
627 NetLog::PHASE_NONE, NULL);
628 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
629 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 21),
630 NetLog::PHASE_END, NULL);
631
632 requests = log.url_request_tracker()->GetLiveRequests();
633 EXPECT_EQ(2u, requests.size());
634
635 EXPECT_EQ(2u, requests[0].entries.size());
636 EXPECT_EQ(2u, requests[1].entries.size());
637
638 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
639 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
640 NetLog::PHASE_END, new net::NetLogIntegerParameter(11));
641 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
642 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
643 NetLog::PHASE_END, new net::NetLogIntegerParameter(21));
644
645 requests = log.url_request_tracker()->GetLiveRequests();
646 EXPECT_EQ(2u, requests.size());
647
648 EXPECT_EQ(5u, requests[0].entries.size());
649 EXPECT_EQ(6u, requests[1].entries.size());
650
651 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
652 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
653 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
654 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
655 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
656 NetLog::PHASE_END, new net::NetLogIntegerParameter(25));
657
658 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
659 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
660 NetLog::PHASE_NONE, NULL);
661 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
662 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
663 NetLog::PHASE_BEGIN, NULL);
664 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
665 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
666 NetLog::PHASE_END, NULL);
667
668 requests = log.url_request_tracker()->GetLiveRequests();
669 EXPECT_EQ(2u, requests.size());
670
671 EXPECT_EQ(7u, requests[0].entries.size());
672 EXPECT_EQ(9u, requests[1].entries.size());
673
674 AddEndURLRequestEntries(&log, 10);
675 AddEndURLRequestEntries(&log, 20);
676
677 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
678 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
679 NetLog::PHASE_NONE, NULL);
680 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
681 NetLog::Source(NetLog::SOURCE_SOCKET, 25),
682 NetLog::PHASE_NONE, NULL);
683
684 requests = log.url_request_tracker()->GetLiveRequests();
685 EXPECT_EQ(0u, requests.size());
686
687 requests = log.url_request_tracker()->GetRecentlyDeceased();
688 EXPECT_EQ(2u, requests.size());
689 EXPECT_EQ(8u, requests[0].entries.size());
690 EXPECT_EQ(10u, requests[1].entries.size());
691 }
692
693 TEST(PassiveLogCollectorTest, ReconnectToIdleSocket) {
694 PassiveLogCollector log;
695
696 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
697 EXPECT_EQ(0u, requests.size());
698
699 AddStartURLRequestEntries(&log, 10);
700
701 // Initial socket.
702 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
703 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
704 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
705 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
706 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
707 NetLog::PHASE_NONE, NULL);
708
709 requests = log.url_request_tracker()->GetLiveRequests();
710 EXPECT_EQ(1u, requests.size());
711 EXPECT_EQ(4u, requests[0].entries.size());
712
713 // Reconnect.
714 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
715 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
716 NetLog::PHASE_END, new net::NetLogIntegerParameter(17));
717 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
718 NetLog::Source(NetLog::SOURCE_SOCKET, 17),
719 NetLog::PHASE_NONE, NULL);
720
721 requests = log.url_request_tracker()->GetLiveRequests();
722 EXPECT_EQ(1u, requests.size());
723 EXPECT_EQ(6u, requests[0].entries.size());
724
725 AddEndURLRequestEntries(&log, 10);
726
727 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
728 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
729 NetLog::PHASE_NONE, NULL);
730
731 requests = log.url_request_tracker()->GetLiveRequests();
732 EXPECT_EQ(0u, requests.size());
733
734 requests = log.url_request_tracker()->GetRecentlyDeceased();
735 EXPECT_EQ(1u, requests.size());
736 EXPECT_EQ(7u, requests[0].entries.size());
737 }
738
739 TEST(PassiveLogCollectorTest, ReconnectToLateBoundSocket) {
740 PassiveLogCollector log;
741
742 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
743 EXPECT_EQ(0u, requests.size());
744
745 AddStartURLRequestEntries(&log, 10);
746
747 // Initial socket.
748 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
749 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
750 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
751 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
752 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
753 NetLog::PHASE_NONE, NULL);
754
755 requests = log.url_request_tracker()->GetLiveRequests();
756 EXPECT_EQ(1u, requests.size());
757 EXPECT_EQ(4u, requests[0].entries.size());
758
759 // Now reconnect.
760 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
761 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
762 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
763 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
764 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
765 NetLog::PHASE_BEGIN, NULL);
766
767 requests = log.url_request_tracker()->GetLiveRequests();
768 EXPECT_EQ(1u, requests.size());
769 EXPECT_EQ(6u, requests[0].entries.size());
770
771 // But we get late bound to an idle socket.
772 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
773 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
774 NetLog::PHASE_END, new net::NetLogIntegerParameter(17));
775 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
776 NetLog::Source(NetLog::SOURCE_SOCKET, 17),
777 NetLog::PHASE_NONE, NULL);
778
779 requests = log.url_request_tracker()->GetLiveRequests();
780 EXPECT_EQ(1u, requests.size());
781 EXPECT_EQ(7u, requests[0].entries.size());
782
783 AddEndURLRequestEntries(&log, 10);
784
785 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
786 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
787 NetLog::PHASE_NONE, NULL);
788
789 requests = log.url_request_tracker()->GetLiveRequests();
790 EXPECT_EQ(0u, requests.size());
791
792 requests = log.url_request_tracker()->GetRecentlyDeceased();
793 EXPECT_EQ(1u, requests.size());
794 EXPECT_EQ(8u, requests[0].entries.size());
795 }
796
797 TEST(PassiveLogCollectorTest, ReconnectToLateBoundConnectJob) {
798 PassiveLogCollector log;
799
800 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
801 EXPECT_EQ(0u, requests.size());
802
803 AddStartURLRequestEntries(&log, 10);
804
805 // Initial socket.
806 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
807 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
808 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
809 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
810 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
811 NetLog::PHASE_NONE, NULL);
812
813 requests = log.url_request_tracker()->GetLiveRequests();
814 EXPECT_EQ(1u, requests.size());
815 EXPECT_EQ(4u, requests[0].entries.size());
816
817 // Now reconnect.
818 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
819 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
820 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
821 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
822 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
823 NetLog::PHASE_BEGIN, NULL);
824
825 requests = log.url_request_tracker()->GetLiveRequests();
826 EXPECT_EQ(1u, requests.size());
827 EXPECT_EQ(6u, requests[0].entries.size());
828
829 // But we get late bound to a different ConnectJob.
830 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
831 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 12),
832 NetLog::PHASE_BEGIN, NULL);
833 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
834 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 12),
835 NetLog::PHASE_END, NULL);
836 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
837 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
838 NetLog::PHASE_END, new net::NetLogIntegerParameter(12));
839
840 requests = log.url_request_tracker()->GetLiveRequests();
841 EXPECT_EQ(1u, requests.size());
842 EXPECT_EQ(8u, requests[0].entries.size());
843
844 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
845 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
846 NetLog::PHASE_END, new net::NetLogIntegerParameter(17));
847 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
848 NetLog::Source(NetLog::SOURCE_SOCKET, 17),
849 NetLog::PHASE_NONE, NULL);
850
851 requests = log.url_request_tracker()->GetLiveRequests();
852 EXPECT_EQ(1u, requests.size());
853 EXPECT_EQ(10u, requests[0].entries.size());
854
855 AddEndURLRequestEntries(&log, 10);
856
857 log.OnAddEntry(NetLog::TYPE_TCP_SOCKET_DONE , base::TimeTicks(),
858 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
859 NetLog::PHASE_NONE, NULL);
860
861 requests = log.url_request_tracker()->GetLiveRequests();
862 EXPECT_EQ(0u, requests.size());
863
864 requests = log.url_request_tracker()->GetRecentlyDeceased();
865 EXPECT_EQ(1u, requests.size());
866 EXPECT_EQ(11u, requests[0].entries.size());
867 }
868
869 TEST(PassiveLogCollectorTest, LostConnectJob) {
870 PassiveLogCollector log;
871
872 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
873 EXPECT_EQ(0u, requests.size());
874
875 AddStartURLRequestEntries(&log, 10);
876
877 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
878 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
879 NetLog::PHASE_BEGIN, new net::NetLogIntegerParameter(11));
880 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
881 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
882 NetLog::PHASE_BEGIN, NULL);
883 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
884 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
885 NetLog::PHASE_NONE, NULL);
886 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB , base::TimeTicks(),
887 NetLog::Source(NetLog::SOURCE_CONNECT_JOB, 11),
888 NetLog::PHASE_END, NULL);
889
890 requests = log.url_request_tracker()->GetLiveRequests();
891 EXPECT_EQ(1u, requests.size());
892 EXPECT_EQ(6u, requests[0].entries.size());
893
894 log.connect_job_tracker_.Clear();
895
896 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_CONNECT_JOB_ID , base::TimeTicks(),
897 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
898 NetLog::PHASE_END, new net::NetLogIntegerParameter(11));
899
900 requests = log.url_request_tracker()->GetLiveRequests();
901 EXPECT_EQ(1u, requests.size());
902 EXPECT_EQ(5u, requests[0].entries.size());
903 }
904
905 TEST(PassiveLogCollectorTest, LostSocket) {
906 PassiveLogCollector log;
907
908 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
909 EXPECT_EQ(0u, requests.size());
910
911 AddStartURLRequestEntries(&log, 10);
912
913 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
914 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
915 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
916 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
917 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
918 NetLog::PHASE_BEGIN, NULL);
919 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
920 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
921 NetLog::PHASE_END, NULL);
922 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
923 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
924 NetLog::PHASE_BEGIN, NULL);
925 log.OnAddEntry(NetLog::TYPE_SSL_CONNECT , base::TimeTicks(),
926 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
927 NetLog::PHASE_END, NULL);
928
929 requests = log.url_request_tracker()->GetLiveRequests();
930 EXPECT_EQ(1u, requests.size());
931 EXPECT_EQ(7u, requests[0].entries.size());
932
933 log.socket_tracker_.Clear();
934
935 requests = log.url_request_tracker()->GetLiveRequests();
936 EXPECT_EQ(1u, requests.size());
937 EXPECT_EQ(4u, requests[0].entries.size());
938 }
939
940 TEST(PassiveLogCollectorTest, AccumulateRxTxData) {
941 PassiveLogCollector log;
942
943 RequestInfoList requests = log.url_request_tracker()->GetLiveRequests();
944 EXPECT_EQ(0u, requests.size());
945
946 AddStartURLRequestEntries(&log, 10);
947
948 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
949 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 10),
950 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
951 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
952 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
953 NetLog::PHASE_NONE, NULL);
954
955 requests = log.url_request_tracker()->GetLiveRequests();
956 EXPECT_EQ(1u, requests.size());
957 EXPECT_EQ(4u, requests[0].entries.size());
958
959 log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_SENT , base::TimeTicks(),
960 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
961 NetLog::PHASE_END, new net::NetLogIntegerParameter(1));
962 requests = log.url_request_tracker()->GetLiveRequests();
963 EXPECT_EQ(1u, requests.size());
964 EXPECT_EQ(5u, requests[0].entries.size());
965 EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
966 EXPECT_EQ("Tx/Rx: 1/0 [1/0 total on socket] (Bytes)",
967 requests[0].entries[4].extra_parameters->ToString());
968
969 log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_RECEIVED , base::TimeTicks(),
970 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
971 NetLog::PHASE_END, new net::NetLogIntegerParameter(2));
972 requests = log.url_request_tracker()->GetLiveRequests();
973 EXPECT_EQ(1u, requests.size());
974 EXPECT_EQ(5u, requests[0].entries.size());
975 EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
976 EXPECT_EQ("Tx/Rx: 1/2 [1/2 total on socket] (Bytes)",
977 requests[0].entries[4].extra_parameters->ToString());
978
979 AddEndURLRequestEntries(&log, 10);
980 requests = log.url_request_tracker()->GetLiveRequests();
981 EXPECT_EQ(0u, requests.size());
982 requests = log.url_request_tracker()->GetRecentlyDeceased();
983 EXPECT_EQ(1u, requests.size());
984 EXPECT_EQ(6u, requests[0].entries.size());
985 EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
986 EXPECT_EQ("Tx/Rx: 1/2 [1/2 total on socket] (Bytes)",
987 requests[0].entries[4].extra_parameters->ToString());
988
989 AddStartURLRequestEntries(&log, 20);
990
991 log.OnAddEntry(NetLog::TYPE_SOCKET_POOL_SOCKET_ID , base::TimeTicks(),
992 NetLog::Source(NetLog::SOURCE_URL_REQUEST, 20),
993 NetLog::PHASE_END, new net::NetLogIntegerParameter(15));
994 log.OnAddEntry(NetLog::TYPE_SOCKS_CONNECT , base::TimeTicks(),
995 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
996 NetLog::PHASE_NONE, NULL);
997
998 requests = log.url_request_tracker()->GetLiveRequests();
999 EXPECT_EQ(1u, requests.size());
1000 EXPECT_EQ(4u, requests[0].entries.size());
1001
1002 log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_SENT , base::TimeTicks(),
1003 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
1004 NetLog::PHASE_END, new net::NetLogIntegerParameter(4));
1005 log.OnAddEntry(NetLog::TYPE_SOCKET_BYTES_RECEIVED , base::TimeTicks(),
1006 NetLog::Source(NetLog::SOURCE_SOCKET, 15),
1007 NetLog::PHASE_END, new net::NetLogIntegerParameter(8));
1008 requests = log.url_request_tracker()->GetLiveRequests();
1009 EXPECT_EQ(1u, requests.size());
1010 EXPECT_EQ(5u, requests[0].entries.size());
1011 EXPECT_EQ(NetLog::TYPE_TODO_STRING, requests[0].entries[4].type);
1012 EXPECT_EQ("Tx/Rx: 4/8 [5/10 total on socket] (Bytes)",
1013 requests[0].entries[4].extra_parameters->ToString());
1014
1015 AddEndURLRequestEntries(&log, 20);
1016 requests = log.url_request_tracker()->GetLiveRequests();
1017 EXPECT_EQ(0u, requests.size());
1018 requests = log.url_request_tracker()->GetRecentlyDeceased();
1019 EXPECT_EQ(2u, requests.size());
1020 EXPECT_EQ(6u, requests[0].entries.size());
1021 EXPECT_EQ(6u, requests[1].entries.size());
1022 }
OLDNEW
« 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