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

Side by Side Diff: components/domain_reliability/monitor_unittest.cc

Issue 2261103002: Use modified URLRequest::Read() and delegate methods in components/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@URLRequestRead
Patch Set: componets Created 4 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/domain_reliability/monitor.h" 5 #include "components/domain_reliability/monitor.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 pref_task_runner_, 63 pref_task_runner_,
64 network_task_runner_, 64 network_task_runner_,
65 std::unique_ptr<MockableTime>(time_)) { 65 std::unique_ptr<MockableTime>(time_)) {
66 monitor_.MoveToNetworkThread(); 66 monitor_.MoveToNetworkThread();
67 monitor_.InitURLRequestContext(url_request_context_getter_); 67 monitor_.InitURLRequestContext(url_request_context_getter_);
68 monitor_.SetDiscardUploads(false); 68 monitor_.SetDiscardUploads(false);
69 } 69 }
70 70
71 static RequestInfo MakeRequestInfo() { 71 static RequestInfo MakeRequestInfo() {
72 RequestInfo request; 72 RequestInfo request;
73 request.status = net::URLRequestStatus(); 73 request.net_error = net::OK;
74 request.response_info.socket_address = 74 request.response_info.socket_address =
75 net::HostPortPair::FromString("12.34.56.78:80"); 75 net::HostPortPair::FromString("12.34.56.78:80");
76 request.response_info.headers = MakeHttpResponseHeaders( 76 request.response_info.headers = MakeHttpResponseHeaders(
77 "HTTP/1.1 200 OK\n\n"); 77 "HTTP/1.1 200 OK\n\n");
78 request.response_info.was_cached = false; 78 request.response_info.was_cached = false;
79 request.response_info.network_accessed = true; 79 request.response_info.network_accessed = true;
80 request.response_info.was_fetched_via_proxy = false; 80 request.response_info.was_fetched_via_proxy = false;
81 request.load_flags = 0; 81 request.load_flags = 0;
82 request.upload_depth = 0; 82 request.upload_depth = 0;
83 return request; 83 return request;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 OnRequestLegComplete(request); 120 OnRequestLegComplete(request);
121 121
122 EXPECT_EQ(0u, CountQueuedBeacons(context)); 122 EXPECT_EQ(0u, CountQueuedBeacons(context));
123 } 123 }
124 124
125 TEST_F(DomainReliabilityMonitorTest, NetworkFailure) { 125 TEST_F(DomainReliabilityMonitorTest, NetworkFailure) {
126 DomainReliabilityContext* context = CreateAndAddContext(); 126 DomainReliabilityContext* context = CreateAndAddContext();
127 127
128 RequestInfo request = MakeRequestInfo(); 128 RequestInfo request = MakeRequestInfo();
129 request.url = GURL("http://example/"); 129 request.url = GURL("http://example/");
130 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 130 request.net_error = net::ERR_CONNECTION_RESET;
131 request.response_info.headers = nullptr; 131 request.response_info.headers = nullptr;
132 OnRequestLegComplete(request); 132 OnRequestLegComplete(request);
133 133
134 EXPECT_EQ(1u, CountQueuedBeacons(context)); 134 EXPECT_EQ(1u, CountQueuedBeacons(context));
135 } 135 }
136 136
137 TEST_F(DomainReliabilityMonitorTest, GoAwayWithPortMigrationDetected) { 137 TEST_F(DomainReliabilityMonitorTest, GoAwayWithPortMigrationDetected) {
138 DomainReliabilityContext* context = CreateAndAddContext(); 138 DomainReliabilityContext* context = CreateAndAddContext();
139 139
140 RequestInfo request = MakeRequestInfo(); 140 RequestInfo request = MakeRequestInfo();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 181
182 EXPECT_EQ(0u, CountQueuedBeacons(context)); 182 EXPECT_EQ(0u, CountQueuedBeacons(context));
183 } 183 }
184 184
185 // Make sure the monitor does not log a network-local error. 185 // Make sure the monitor does not log a network-local error.
186 TEST_F(DomainReliabilityMonitorTest, LocalError) { 186 TEST_F(DomainReliabilityMonitorTest, LocalError) {
187 DomainReliabilityContext* context = CreateAndAddContext(); 187 DomainReliabilityContext* context = CreateAndAddContext();
188 188
189 RequestInfo request = MakeRequestInfo(); 189 RequestInfo request = MakeRequestInfo();
190 request.url = GURL("http://example/"); 190 request.url = GURL("http://example/");
191 request.status = 191 request.net_error = net::ERR_PROXY_CONNECTION_FAILED;
192 net::URLRequestStatus::FromError(net::ERR_PROXY_CONNECTION_FAILED);
193 OnRequestLegComplete(request); 192 OnRequestLegComplete(request);
194 193
195 EXPECT_EQ(0u, CountQueuedBeacons(context)); 194 EXPECT_EQ(0u, CountQueuedBeacons(context));
196 } 195 }
197 196
198 // Make sure the monitor does not log the proxy's IP if one was used. 197 // Make sure the monitor does not log the proxy's IP if one was used.
199 TEST_F(DomainReliabilityMonitorTest, WasFetchedViaProxy) { 198 TEST_F(DomainReliabilityMonitorTest, WasFetchedViaProxy) {
200 DomainReliabilityContext* context = CreateAndAddContext(); 199 DomainReliabilityContext* context = CreateAndAddContext();
201 200
202 RequestInfo request = MakeRequestInfo(); 201 RequestInfo request = MakeRequestInfo();
203 request.url = GURL("http://example/"); 202 request.url = GURL("http://example/");
204 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 203 request.net_error = net::ERR_CONNECTION_RESET;
205 request.response_info.socket_address = 204 request.response_info.socket_address =
206 net::HostPortPair::FromString("127.0.0.1:3128"); 205 net::HostPortPair::FromString("127.0.0.1:3128");
207 request.response_info.was_fetched_via_proxy = true; 206 request.response_info.was_fetched_via_proxy = true;
208 OnRequestLegComplete(request); 207 OnRequestLegComplete(request);
209 208
210 BeaconVector beacons; 209 BeaconVector beacons;
211 context->GetQueuedBeaconsForTesting(&beacons); 210 context->GetQueuedBeaconsForTesting(&beacons);
212 EXPECT_EQ(1u, beacons.size()); 211 EXPECT_EQ(1u, beacons.size());
213 EXPECT_TRUE(beacons[0]->server_ip.empty()); 212 EXPECT_TRUE(beacons[0]->server_ip.empty());
214 } 213 }
(...skipping 19 matching lines...) Expand all
234 } 233 }
235 234
236 // Make sure the monitor does not log the cached IP returned with a failed 235 // Make sure the monitor does not log the cached IP returned with a failed
237 // cache revalidation request. 236 // cache revalidation request.
238 TEST_F(DomainReliabilityMonitorTest, NoCachedIPFromFailedRevalidationRequest) { 237 TEST_F(DomainReliabilityMonitorTest, NoCachedIPFromFailedRevalidationRequest) {
239 DomainReliabilityContext* context = CreateAndAddContext(); 238 DomainReliabilityContext* context = CreateAndAddContext();
240 239
241 RequestInfo request = MakeRequestInfo(); 240 RequestInfo request = MakeRequestInfo();
242 request.url = GURL("http://example/"); 241 request.url = GURL("http://example/");
243 request.response_info.was_cached = true; 242 request.response_info.was_cached = true;
244 request.status = 243 request.net_error = net::ERR_NAME_RESOLUTION_FAILED;
245 net::URLRequestStatus::FromError(net::ERR_NAME_RESOLUTION_FAILED);
246 OnRequestLegComplete(request); 244 OnRequestLegComplete(request);
247 245
248 BeaconVector beacons; 246 BeaconVector beacons;
249 context->GetQueuedBeaconsForTesting(&beacons); 247 context->GetQueuedBeaconsForTesting(&beacons);
250 EXPECT_EQ(1u, beacons.size()); 248 EXPECT_EQ(1u, beacons.size());
251 EXPECT_TRUE(beacons[0]->server_ip.empty()); 249 EXPECT_TRUE(beacons[0]->server_ip.empty());
252 } 250 }
253 251
254 TEST_F(DomainReliabilityMonitorTest, AtLeastOneBakedInConfig) { 252 TEST_F(DomainReliabilityMonitorTest, AtLeastOneBakedInConfig) {
255 DCHECK(kBakedInJsonConfigs[0] != nullptr); 253 DCHECK(kBakedInJsonConfigs[0] != nullptr);
(...skipping 25 matching lines...) Expand all
281 TEST_F(DomainReliabilityMonitorTest, ClearBeacons) { 279 TEST_F(DomainReliabilityMonitorTest, ClearBeacons) {
282 DomainReliabilityContext* context = CreateAndAddContext(); 280 DomainReliabilityContext* context = CreateAndAddContext();
283 281
284 // Initially the monitor should have just the test context, with no beacons. 282 // Initially the monitor should have just the test context, with no beacons.
285 EXPECT_EQ(1u, monitor_.contexts_size_for_testing()); 283 EXPECT_EQ(1u, monitor_.contexts_size_for_testing());
286 EXPECT_EQ(0u, CountQueuedBeacons(context)); 284 EXPECT_EQ(0u, CountQueuedBeacons(context));
287 285
288 // Add a beacon. 286 // Add a beacon.
289 RequestInfo request = MakeRequestInfo(); 287 RequestInfo request = MakeRequestInfo();
290 request.url = GURL("http://example/"); 288 request.url = GURL("http://example/");
291 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 289 request.net_error = net::ERR_CONNECTION_RESET;
292 OnRequestLegComplete(request); 290 OnRequestLegComplete(request);
293 291
294 // Make sure it was added. 292 // Make sure it was added.
295 EXPECT_EQ(1u, CountQueuedBeacons(context)); 293 EXPECT_EQ(1u, CountQueuedBeacons(context));
296 294
297 monitor_.ClearBrowsingData( 295 monitor_.ClearBrowsingData(
298 CLEAR_BEACONS, base::Callback<bool(const GURL&)>()); 296 CLEAR_BEACONS, base::Callback<bool(const GURL&)>());
299 297
300 // Make sure the beacon was cleared, but not the contexts. 298 // Make sure the beacon was cleared, but not the contexts.
301 EXPECT_EQ(1u, monitor_.contexts_size_for_testing()); 299 EXPECT_EQ(1u, monitor_.contexts_size_for_testing());
302 EXPECT_EQ(0u, CountQueuedBeacons(context)); 300 EXPECT_EQ(0u, CountQueuedBeacons(context));
303 } 301 }
304 302
305 TEST_F(DomainReliabilityMonitorTest, ClearBeaconsWithFilter) { 303 TEST_F(DomainReliabilityMonitorTest, ClearBeaconsWithFilter) {
306 // Create two contexts, each with one beacon. 304 // Create two contexts, each with one beacon.
307 GURL origin1("http://example.com/"); 305 GURL origin1("http://example.com/");
308 GURL origin2("http://example.org/"); 306 GURL origin2("http://example.org/");
309 307
310 DomainReliabilityContext* context1 = 308 DomainReliabilityContext* context1 =
311 CreateAndAddContextForOrigin(origin1, false); 309 CreateAndAddContextForOrigin(origin1, false);
312 RequestInfo request = MakeRequestInfo(); 310 RequestInfo request = MakeRequestInfo();
313 request.url = origin1; 311 request.url = origin1;
314 request.status = 312 request.net_error = net::ERR_CONNECTION_RESET;
315 net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
316 OnRequestLegComplete(request); 313 OnRequestLegComplete(request);
317 314
318 DomainReliabilityContext* context2 = 315 DomainReliabilityContext* context2 =
319 CreateAndAddContextForOrigin(origin2, false); 316 CreateAndAddContextForOrigin(origin2, false);
320 request = MakeRequestInfo(); 317 request = MakeRequestInfo();
321 request.url = origin2; 318 request.url = origin2;
322 request.status = 319 request.net_error = net::ERR_CONNECTION_RESET;
323 net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
324 OnRequestLegComplete(request); 320 OnRequestLegComplete(request);
325 321
326 // Delete the beacons for |origin1|. 322 // Delete the beacons for |origin1|.
327 monitor_.ClearBrowsingData( 323 monitor_.ClearBrowsingData(
328 CLEAR_BEACONS, 324 CLEAR_BEACONS,
329 base::Bind(&GURL::operator==, base::Unretained(&origin1))); 325 base::Bind(&GURL::operator==, base::Unretained(&origin1)));
330 326
331 // Beacons for |context1| were cleared. Beacons for |context2| and 327 // Beacons for |context1| were cleared. Beacons for |context2| and
332 // the contexts themselves were not. 328 // the contexts themselves were not.
333 EXPECT_EQ(2u, monitor_.contexts_size_for_testing()); 329 EXPECT_EQ(2u, monitor_.contexts_size_for_testing());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 // Only one of the contexts should have been deleted. 361 // Only one of the contexts should have been deleted.
366 EXPECT_EQ(1u, monitor_.contexts_size_for_testing()); 362 EXPECT_EQ(1u, monitor_.contexts_size_for_testing());
367 } 363 }
368 364
369 TEST_F(DomainReliabilityMonitorTest, WildcardMatchesSelf) { 365 TEST_F(DomainReliabilityMonitorTest, WildcardMatchesSelf) {
370 DomainReliabilityContext* context = 366 DomainReliabilityContext* context =
371 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true); 367 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true);
372 368
373 RequestInfo request = MakeRequestInfo(); 369 RequestInfo request = MakeRequestInfo();
374 request.url = GURL("http://wildcard/"); 370 request.url = GURL("http://wildcard/");
375 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 371 request.net_error = net::ERR_CONNECTION_RESET;
376 OnRequestLegComplete(request); 372 OnRequestLegComplete(request);
377 373
378 EXPECT_EQ(1u, CountQueuedBeacons(context)); 374 EXPECT_EQ(1u, CountQueuedBeacons(context));
379 } 375 }
380 376
381 TEST_F(DomainReliabilityMonitorTest, WildcardMatchesSubdomain) { 377 TEST_F(DomainReliabilityMonitorTest, WildcardMatchesSubdomain) {
382 DomainReliabilityContext* context = 378 DomainReliabilityContext* context =
383 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true); 379 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true);
384 380
385 RequestInfo request = MakeRequestInfo(); 381 RequestInfo request = MakeRequestInfo();
386 request.url = GURL("http://test.wildcard/"); 382 request.url = GURL("http://test.wildcard/");
387 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 383 request.net_error = net::ERR_CONNECTION_RESET;
388 OnRequestLegComplete(request); 384 OnRequestLegComplete(request);
389 385
390 EXPECT_EQ(1u, CountQueuedBeacons(context)); 386 EXPECT_EQ(1u, CountQueuedBeacons(context));
391 } 387 }
392 388
393 TEST_F(DomainReliabilityMonitorTest, WildcardDoesntMatchSubsubdomain) { 389 TEST_F(DomainReliabilityMonitorTest, WildcardDoesntMatchSubsubdomain) {
394 DomainReliabilityContext* context = 390 DomainReliabilityContext* context =
395 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true); 391 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true);
396 392
397 RequestInfo request = MakeRequestInfo(); 393 RequestInfo request = MakeRequestInfo();
398 request.url = GURL("http://test.test.wildcard/"); 394 request.url = GURL("http://test.test.wildcard/");
399 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 395 request.net_error = net::ERR_CONNECTION_RESET;
400 OnRequestLegComplete(request); 396 OnRequestLegComplete(request);
401 397
402 EXPECT_EQ(0u, CountQueuedBeacons(context)); 398 EXPECT_EQ(0u, CountQueuedBeacons(context));
403 } 399 }
404 400
405 TEST_F(DomainReliabilityMonitorTest, WildcardPrefersSelfToParentWildcard) { 401 TEST_F(DomainReliabilityMonitorTest, WildcardPrefersSelfToParentWildcard) {
406 DomainReliabilityContext* context1 = 402 DomainReliabilityContext* context1 =
407 CreateAndAddContextForOrigin(GURL("https://test.wildcard/"), false); 403 CreateAndAddContextForOrigin(GURL("https://test.wildcard/"), false);
408 DomainReliabilityContext* context2 = 404 DomainReliabilityContext* context2 =
409 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true); 405 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true);
410 406
411 RequestInfo request = MakeRequestInfo(); 407 RequestInfo request = MakeRequestInfo();
412 request.url = GURL("http://test.wildcard/"); 408 request.url = GURL("http://test.wildcard/");
413 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 409 request.net_error = net::ERR_CONNECTION_RESET;
414 OnRequestLegComplete(request); 410 OnRequestLegComplete(request);
415 411
416 EXPECT_EQ(1u, CountQueuedBeacons(context1)); 412 EXPECT_EQ(1u, CountQueuedBeacons(context1));
417 EXPECT_EQ(0u, CountQueuedBeacons(context2)); 413 EXPECT_EQ(0u, CountQueuedBeacons(context2));
418 } 414 }
419 415
420 TEST_F(DomainReliabilityMonitorTest, 416 TEST_F(DomainReliabilityMonitorTest,
421 WildcardPrefersSelfWildcardToParentWildcard) { 417 WildcardPrefersSelfWildcardToParentWildcard) {
422 DomainReliabilityContext* context1 = 418 DomainReliabilityContext* context1 =
423 CreateAndAddContextForOrigin(GURL("https://test.wildcard/"), true); 419 CreateAndAddContextForOrigin(GURL("https://test.wildcard/"), true);
424 DomainReliabilityContext* context2 = 420 DomainReliabilityContext* context2 =
425 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true); 421 CreateAndAddContextForOrigin(GURL("https://wildcard/"), true);
426 422
427 RequestInfo request = MakeRequestInfo(); 423 RequestInfo request = MakeRequestInfo();
428 request.url = GURL("http://test.wildcard/"); 424 request.url = GURL("http://test.wildcard/");
429 request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET); 425 request.net_error = net::ERR_CONNECTION_RESET;
430 OnRequestLegComplete(request); 426 OnRequestLegComplete(request);
431 427
432 EXPECT_EQ(1u, CountQueuedBeacons(context1)); 428 EXPECT_EQ(1u, CountQueuedBeacons(context1));
433 EXPECT_EQ(0u, CountQueuedBeacons(context2)); 429 EXPECT_EQ(0u, CountQueuedBeacons(context2));
434 } 430 }
435 431
436 } // namespace 432 } // namespace
437 433
438 } // namespace domain_reliability 434 } // namespace domain_reliability
OLDNEW
« components/domain_reliability/monitor.cc ('K') | « components/domain_reliability/monitor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698