OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |