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

Side by Side Diff: components/precache/core/precache_fetcher_unittest.cc

Issue 2037523002: Select precache resources based on field trial experiment group (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/precache/core/precache_fetcher.h" 5 #include "components/precache/core/precache_fetcher.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstring> 9 #include <cstring>
10 #include <memory> 10 #include <memory>
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 const char kManifestFetchFailureURL[] = 52 const char kManifestFetchFailureURL[] =
53 "http://manifest-url-prefix.com/manifest-fetch-failure.com"; 53 "http://manifest-url-prefix.com/manifest-fetch-failure.com";
54 const char kBadManifestURL[] = 54 const char kBadManifestURL[] =
55 "http://manifest-url-prefix.com/bad-manifest.com"; 55 "http://manifest-url-prefix.com/bad-manifest.com";
56 const char kGoodManifestURL[] = 56 const char kGoodManifestURL[] =
57 "http://manifest-url-prefix.com/good-manifest.com"; 57 "http://manifest-url-prefix.com/good-manifest.com";
58 const char kCustomGoodManifestURL[] = 58 const char kCustomGoodManifestURL[] =
59 "http://custom-manifest-url-prefix.com/good-manifest.com"; 59 "http://custom-manifest-url-prefix.com/good-manifest.com";
60 const char kResourceFetchFailureURL[] = "http://resource-fetch-failure.com"; 60 const char kResourceFetchFailureURL[] = "http://resource-fetch-failure.com";
61 const char kGoodResourceURL[] = "http://good-resource.com"; 61 const char kGoodResourceURL[] = "http://good-resource.com";
62 const char kGoodResourceURLA[] = "http://good-resource.com/a";
63 const char kGoodResourceURLB[] = "http://good-resource.com/b";
64 const char kGoodResourceURLC[] = "http://good-resource.com/c";
65 const char kGoodResourceURLD[] = "http://good-resource.com/d";
62 const char kForcedStartingURLManifestURL[] = 66 const char kForcedStartingURLManifestURL[] =
63 "http://manifest-url-prefix.com/forced-starting-url.com"; 67 "http://manifest-url-prefix.com/forced-starting-url.com";
68 const uint32_t kExperimentID = 123;
64 69
65 class TestURLFetcherCallback { 70 class TestURLFetcherCallback {
66 public: 71 public:
67 TestURLFetcherCallback() : total_response_bytes_(0) {} 72 TestURLFetcherCallback() : total_response_bytes_(0) {}
68 73
69 std::unique_ptr<net::FakeURLFetcher> CreateURLFetcher( 74 std::unique_ptr<net::FakeURLFetcher> CreateURLFetcher(
70 const GURL& url, 75 const GURL& url,
71 net::URLFetcherDelegate* delegate, 76 net::URLFetcherDelegate* delegate,
72 const std::string& response_data, 77 const std::string& response_data,
73 net::HttpStatusCode response_code, 78 net::HttpStatusCode response_code,
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 net::URLRequestStatus::FAILED); 389 net::URLRequestStatus::FAILED);
385 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK, 390 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
386 net::URLRequestStatus::SUCCESS); 391 net::URLRequestStatus::SUCCESS);
387 factory_.SetFakeResponse(GURL(kForcedStartingURLManifestURL), 392 factory_.SetFakeResponse(GURL(kForcedStartingURLManifestURL),
388 PrecacheManifest().SerializeAsString(), net::HTTP_OK, 393 PrecacheManifest().SerializeAsString(), net::HTTP_OK,
389 net::URLRequestStatus::SUCCESS); 394 net::URLRequestStatus::SUCCESS);
390 395
391 base::HistogramTester histogram; 396 base::HistogramTester histogram;
392 397
393 { 398 {
394 PrecacheFetcher precache_fetcher(request_context_.get(), 399 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
395 GURL(), std::string(), 400 std::string(), std::move(unfinished_work),
396 std::move(unfinished_work), 401 kExperimentID, &precache_delegate_);
397 &precache_delegate_);
398 precache_fetcher.Start(); 402 precache_fetcher.Start();
399 403
400 loop_.RunUntilIdle(); 404 loop_.RunUntilIdle();
401 405
402 // Destroy the PrecacheFetcher after it has finished, to record metrics. 406 // Destroy the PrecacheFetcher after it has finished, to record metrics.
403 } 407 }
404 408
405 std::multiset<GURL> expected_requested_urls; 409 std::multiset<GURL> expected_requested_urls;
406 expected_requested_urls.insert(GURL(kConfigURL)); 410 expected_requested_urls.insert(GURL(kConfigURL));
407 expected_requested_urls.insert(GURL(kManifestFetchFailureURL)); 411 expected_requested_urls.insert(GURL(kManifestFetchFailureURL));
408 expected_requested_urls.insert(GURL(kBadManifestURL)); 412 expected_requested_urls.insert(GURL(kBadManifestURL));
409 expected_requested_urls.insert(GURL(kGoodManifestURL)); 413 expected_requested_urls.insert(GURL(kGoodManifestURL));
410 expected_requested_urls.insert(GURL(kResourceFetchFailureURL)); 414 expected_requested_urls.insert(GURL(kResourceFetchFailureURL));
411 expected_requested_urls.insert(GURL(kGoodResourceURL)); 415 expected_requested_urls.insert(GURL(kGoodResourceURL));
412 expected_requested_urls.insert(GURL(kForcedStartingURLManifestURL)); 416 expected_requested_urls.insert(GURL(kForcedStartingURLManifestURL));
413 417
414 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 418 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
415 419
416 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 420 EXPECT_TRUE(precache_delegate_.was_on_done_called());
417 421
418 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1); 422 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1);
419 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total", 423 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total",
420 url_callback_.total_response_bytes(), 1); 424 url_callback_.total_response_bytes(), 1);
421 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); 425 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
422 } 426 }
423 427
428 TEST_F(PrecacheFetcherTest, PrecacheResourceSelection) {
429 SetDefaultFlags();
430
431 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
432 new PrecacheUnfinishedWork());
433 unfinished_work->add_top_host()->set_hostname("good-manifest.com");
434 unfinished_work->set_start_time(base::Time::UnixEpoch().ToInternalValue());
435
436 PrecacheConfigurationSettings config;
437
438 PrecacheManifest good_manifest;
439 PrecacheResourceSelection resource_selection;
440 good_manifest.add_resource()->set_url(kGoodResourceURL);
441 good_manifest.add_resource()->set_url(kGoodResourceURLA);
442 good_manifest.add_resource()->set_url(kGoodResourceURLB);
443 good_manifest.add_resource()->set_url(kGoodResourceURLC);
444 good_manifest.add_resource()->set_url(kGoodResourceURLD);
445
446 // Set bits for kGoodResourceURL, kGoodResourceURLB and kGoodResourceURLD.
447 resource_selection.set_bitset(0x15);
twifkak 2016/06/02 22:28:24 How about 0b10101 ?
Raj 2016/06/04 19:09:52 Done.
448 (*good_manifest.mutable_experiments()
449 ->mutable_resources_by_experiment_group())[kExperimentID] =
450 resource_selection;
451
452 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
453 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
454 factory_.SetFakeResponse(GURL(kGoodManifestURL),
455 good_manifest.SerializeAsString(), net::HTTP_OK,
456 net::URLRequestStatus::SUCCESS);
457 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
458 net::URLRequestStatus::SUCCESS);
459 factory_.SetFakeResponse(GURL(kGoodResourceURLB), "good URL B", net::HTTP_OK,
460 net::URLRequestStatus::SUCCESS);
461 factory_.SetFakeResponse(GURL(kGoodResourceURLD), "good URL D", net::HTTP_OK,
462 net::URLRequestStatus::SUCCESS);
463
464 base::HistogramTester histogram;
465
466 {
467 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
468 std::string(), std::move(unfinished_work),
469 kExperimentID, &precache_delegate_);
470 precache_fetcher.Start();
471
472 loop_.RunUntilIdle();
473
474 // Destroy the PrecacheFetcher after it has finished, to record metrics.
475 }
476
477 std::multiset<GURL> expected_requested_urls;
478 expected_requested_urls.insert(GURL(kConfigURL));
479 expected_requested_urls.insert(GURL(kGoodManifestURL));
480 expected_requested_urls.insert(GURL(kGoodResourceURL));
481 expected_requested_urls.insert(GURL(kGoodResourceURLB));
482 expected_requested_urls.insert(GURL(kGoodResourceURLD));
483
484 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
485
486 EXPECT_TRUE(precache_delegate_.was_on_done_called());
487
488 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1);
489 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total",
490 url_callback_.total_response_bytes(), 1);
491 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
492 }
493
424 TEST_F(PrecacheFetcherTest, PrecachePauseResume) { 494 TEST_F(PrecacheFetcherTest, PrecachePauseResume) {
425 SetDefaultFlags(); 495 SetDefaultFlags();
426 496
427 PrecacheConfigurationSettings config; 497 PrecacheConfigurationSettings config;
428 config.set_top_sites_count(3); 498 config.set_top_sites_count(3);
429 499
430 std::unique_ptr<PrecacheUnfinishedWork> initial_work( 500 std::unique_ptr<PrecacheUnfinishedWork> initial_work(
431 new PrecacheUnfinishedWork()); 501 new PrecacheUnfinishedWork());
432 initial_work->add_manifest()->set_url( 502 initial_work->add_manifest()->set_url(
433 "http://manifest-url-prefix.com/manifest1.com"); 503 "http://manifest-url-prefix.com/manifest1.com");
434 initial_work->add_manifest()->set_url( 504 initial_work->add_manifest()->set_url(
435 "http://manifest-url-prefix.com/manifest2.com"); 505 "http://manifest-url-prefix.com/manifest2.com");
436 initial_work->add_resource()->set_url(kGoodResourceURL); 506 initial_work->add_resource()->set_url(kGoodResourceURL);
437 initial_work->set_start_time( 507 initial_work->set_start_time(
438 (base::Time::Now() - base::TimeDelta::FromHours(1)).ToInternalValue()); 508 (base::Time::Now() - base::TimeDelta::FromHours(1)).ToInternalValue());
439 509
440 PrecacheFetcher first_fetcher(request_context_.get(), 510 PrecacheFetcher first_fetcher(request_context_.get(), GURL(), std::string(),
441 GURL(), std::string(), 511 std::move(initial_work), kExperimentID,
442 std::move(initial_work),
443 &precache_delegate_); 512 &precache_delegate_);
444 513
445 loop_.RunUntilIdle(); 514 loop_.RunUntilIdle();
446 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work = 515 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work =
447 first_fetcher.CancelPrecaching(); 516 first_fetcher.CancelPrecaching();
448 517
449 std::multiset<GURL> expected_requested_urls; 518 std::multiset<GURL> expected_requested_urls;
450 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 519 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
451 520
452 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 521 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
453 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 522 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
454 factory_.SetFakeResponse(GURL(kBadManifestURL), "bad protobuf", net::HTTP_OK, 523 factory_.SetFakeResponse(GURL(kBadManifestURL), "bad protobuf", net::HTTP_OK,
455 net::URLRequestStatus::SUCCESS); 524 net::URLRequestStatus::SUCCESS);
456 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest1.com"), 525 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest1.com"),
457 "bad protobuf", net::HTTP_OK, 526 "bad protobuf", net::HTTP_OK,
458 net::URLRequestStatus::SUCCESS); 527 net::URLRequestStatus::SUCCESS);
459 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest2.com"), 528 factory_.SetFakeResponse(GURL("http://manifest-url-prefix.com/manifest2.com"),
460 "bad protobuf", net::HTTP_OK, 529 "bad protobuf", net::HTTP_OK,
461 net::URLRequestStatus::SUCCESS); 530 net::URLRequestStatus::SUCCESS);
462 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK, 531 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
463 net::URLRequestStatus::SUCCESS); 532 net::URLRequestStatus::SUCCESS);
464 // Starting hosts should not be fetched. 533 // Starting hosts should not be fetched.
465 unfinished_work->add_top_host()->set_hostname("bad-manifest.com"); 534 unfinished_work->add_top_host()->set_hostname("bad-manifest.com");
466 PrecacheFetcher second_fetcher(request_context_.get(), 535 PrecacheFetcher second_fetcher(request_context_.get(), GURL(), std::string(),
467 GURL(), std::string(), 536 std::move(unfinished_work), kExperimentID,
468 std::move(unfinished_work),
469 &precache_delegate_); 537 &precache_delegate_);
470 second_fetcher.Start(); 538 second_fetcher.Start();
471 loop_.RunUntilIdle(); 539 loop_.RunUntilIdle();
472 expected_requested_urls.insert(GURL(kConfigURL)); 540 expected_requested_urls.insert(GURL(kConfigURL));
473 expected_requested_urls.insert( 541 expected_requested_urls.insert(
474 GURL("http://manifest-url-prefix.com/manifest1.com")); 542 GURL("http://manifest-url-prefix.com/manifest1.com"));
475 expected_requested_urls.insert( 543 expected_requested_urls.insert(
476 GURL("http://manifest-url-prefix.com/manifest2.com")); 544 GURL("http://manifest-url-prefix.com/manifest2.com"));
477 expected_requested_urls.insert(GURL(kGoodResourceURL)); 545 expected_requested_urls.insert(GURL(kGoodResourceURL));
478 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 546 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
479 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 547 EXPECT_TRUE(precache_delegate_.was_on_done_called());
480 } 548 }
481 549
482 TEST_F(PrecacheFetcherTest, ResumeWithConfigOnly) { 550 TEST_F(PrecacheFetcherTest, ResumeWithConfigOnly) {
483 SetDefaultFlags(); 551 SetDefaultFlags();
484 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work( 552 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
485 new PrecacheUnfinishedWork()); 553 new PrecacheUnfinishedWork());
486 unfinished_work->mutable_config_settings()->add_forced_site( 554 unfinished_work->mutable_config_settings()->add_forced_site(
487 "good-manifest.com"); 555 "good-manifest.com");
488 unfinished_work->set_start_time(base::Time::Now().ToInternalValue()); 556 unfinished_work->set_start_time(base::Time::Now().ToInternalValue());
489 PrecacheManifest good_manifest; 557 PrecacheManifest good_manifest;
490 good_manifest.add_resource()->set_url(kGoodResourceURL); 558 good_manifest.add_resource()->set_url(kGoodResourceURL);
491 559
492 factory_.SetFakeResponse(GURL(kGoodManifestURL), 560 factory_.SetFakeResponse(GURL(kGoodManifestURL),
493 good_manifest.SerializeAsString(), net::HTTP_OK, 561 good_manifest.SerializeAsString(), net::HTTP_OK,
494 net::URLRequestStatus::SUCCESS); 562 net::URLRequestStatus::SUCCESS);
495 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK, 563 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
496 net::URLRequestStatus::SUCCESS); 564 net::URLRequestStatus::SUCCESS);
497 { 565 {
498 PrecacheFetcher precache_fetcher(request_context_.get(), 566 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
499 GURL(), std::string(), 567 std::string(), std::move(unfinished_work),
500 std::move(unfinished_work), 568 kExperimentID, &precache_delegate_);
501 &precache_delegate_);
502 precache_fetcher.Start(); 569 precache_fetcher.Start();
503 570
504 loop_.RunUntilIdle(); 571 loop_.RunUntilIdle();
505 } 572 }
506 573
507 std::multiset<GURL> expected_requested_urls; 574 std::multiset<GURL> expected_requested_urls;
508 expected_requested_urls.insert(GURL(kGoodManifestURL)); 575 expected_requested_urls.insert(GURL(kGoodManifestURL));
509 expected_requested_urls.insert(GURL(kGoodResourceURL)); 576 expected_requested_urls.insert(GURL(kGoodResourceURL));
510 577
511 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 578 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
(...skipping 16 matching lines...) Expand all
528 595
529 factory_.SetFakeResponse(GURL(kCustomConfigURL), config.SerializeAsString(), 596 factory_.SetFakeResponse(GURL(kCustomConfigURL), config.SerializeAsString(),
530 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 597 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
531 factory_.SetFakeResponse(GURL(kCustomGoodManifestURL), 598 factory_.SetFakeResponse(GURL(kCustomGoodManifestURL),
532 good_manifest.SerializeAsString(), net::HTTP_OK, 599 good_manifest.SerializeAsString(), net::HTTP_OK,
533 net::URLRequestStatus::SUCCESS); 600 net::URLRequestStatus::SUCCESS);
534 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK, 601 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK,
535 net::URLRequestStatus::SUCCESS); 602 net::URLRequestStatus::SUCCESS);
536 603
537 PrecacheFetcher precache_fetcher( 604 PrecacheFetcher precache_fetcher(
538 request_context_.get(), GURL(kCustomConfigURL), 605 request_context_.get(), GURL(kCustomConfigURL), kCustomManifestURLPrefix,
539 kCustomManifestURLPrefix, std::move(unfinished_work), 606 std::move(unfinished_work), kExperimentID, &precache_delegate_);
540 &precache_delegate_);
541 precache_fetcher.Start(); 607 precache_fetcher.Start();
542 608
543 loop_.RunUntilIdle(); 609 loop_.RunUntilIdle();
544 610
545 std::multiset<GURL> expected_requested_urls; 611 std::multiset<GURL> expected_requested_urls;
546 expected_requested_urls.insert(GURL(kCustomConfigURL)); 612 expected_requested_urls.insert(GURL(kCustomConfigURL));
547 expected_requested_urls.insert(GURL(kCustomGoodManifestURL)); 613 expected_requested_urls.insert(GURL(kCustomGoodManifestURL));
548 expected_requested_urls.insert(GURL(kGoodResourceURL)); 614 expected_requested_urls.insert(GURL(kGoodResourceURL));
549 615
550 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 616 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
551 617
552 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 618 EXPECT_TRUE(precache_delegate_.was_on_done_called());
553 } 619 }
554 620
555 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) { 621 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) {
556 SetDefaultFlags(); 622 SetDefaultFlags();
557 623
558 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work( 624 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
559 new PrecacheUnfinishedWork()); 625 new PrecacheUnfinishedWork());
560 unfinished_work->add_top_host()->set_hostname("good-manifest.com"); 626 unfinished_work->add_top_host()->set_hostname("good-manifest.com");
561 627
562 factory_.SetFakeResponse(GURL(kConfigURL), "", 628 factory_.SetFakeResponse(GURL(kConfigURL), "",
563 net::HTTP_INTERNAL_SERVER_ERROR, 629 net::HTTP_INTERNAL_SERVER_ERROR,
564 net::URLRequestStatus::FAILED); 630 net::URLRequestStatus::FAILED);
565 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 631 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
566 net::URLRequestStatus::SUCCESS); 632 net::URLRequestStatus::SUCCESS);
567 633
568 PrecacheFetcher precache_fetcher(request_context_.get(), 634 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
569 GURL(), std::string(), 635 std::string(), std::move(unfinished_work),
570 std::move(unfinished_work), 636 kExperimentID, &precache_delegate_);
571 &precache_delegate_);
572 precache_fetcher.Start(); 637 precache_fetcher.Start();
573 638
574 loop_.RunUntilIdle(); 639 loop_.RunUntilIdle();
575 640
576 std::multiset<GURL> expected_requested_urls; 641 std::multiset<GURL> expected_requested_urls;
577 expected_requested_urls.insert(GURL(kConfigURL)); 642 expected_requested_urls.insert(GURL(kConfigURL));
578 expected_requested_urls.insert(GURL(kGoodManifestURL)); 643 expected_requested_urls.insert(GURL(kGoodManifestURL));
579 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 644 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
580 645
581 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 646 EXPECT_TRUE(precache_delegate_.was_on_done_called());
582 } 647 }
583 648
584 TEST_F(PrecacheFetcherTest, BadConfig) { 649 TEST_F(PrecacheFetcherTest, BadConfig) {
585 SetDefaultFlags(); 650 SetDefaultFlags();
586 651
587 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work( 652 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
588 new PrecacheUnfinishedWork()); 653 new PrecacheUnfinishedWork());
589 unfinished_work->add_top_host()->set_hostname("good-manifest.com"); 654 unfinished_work->add_top_host()->set_hostname("good-manifest.com");
590 655
591 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK, 656 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK,
592 net::URLRequestStatus::SUCCESS); 657 net::URLRequestStatus::SUCCESS);
593 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 658 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
594 net::URLRequestStatus::SUCCESS); 659 net::URLRequestStatus::SUCCESS);
595 660
596 PrecacheFetcher precache_fetcher(request_context_.get(), 661 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
597 GURL(), std::string(), 662 std::string(), std::move(unfinished_work),
598 std::move(unfinished_work), 663 kExperimentID, &precache_delegate_);
599 &precache_delegate_);
600 precache_fetcher.Start(); 664 precache_fetcher.Start();
601 665
602 loop_.RunUntilIdle(); 666 loop_.RunUntilIdle();
603 667
604 std::multiset<GURL> expected_requested_urls; 668 std::multiset<GURL> expected_requested_urls;
605 expected_requested_urls.insert(GURL(kConfigURL)); 669 expected_requested_urls.insert(GURL(kConfigURL));
606 expected_requested_urls.insert(GURL(kGoodManifestURL)); 670 expected_requested_urls.insert(GURL(kGoodManifestURL));
607 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 671 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
608 672
609 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 673 EXPECT_TRUE(precache_delegate_.was_on_done_called());
610 } 674 }
611 675
612 TEST_F(PrecacheFetcherTest, Cancel) { 676 TEST_F(PrecacheFetcherTest, Cancel) {
613 SetDefaultFlags(); 677 SetDefaultFlags();
614 678
615 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work( 679 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
616 new PrecacheUnfinishedWork()); 680 new PrecacheUnfinishedWork());
617 unfinished_work->add_top_host()->set_hostname("starting-url.com"); 681 unfinished_work->add_top_host()->set_hostname("starting-url.com");
618 682
619 PrecacheConfigurationSettings config; 683 PrecacheConfigurationSettings config;
620 config.set_top_sites_count(1); 684 config.set_top_sites_count(1);
621 685
622 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 686 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
623 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 687 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
624 688
625 base::HistogramTester histogram; 689 base::HistogramTester histogram;
626 690
627 { 691 {
628 PrecacheFetcher precache_fetcher(request_context_.get(), 692 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
629 GURL(), std::string(), 693 std::string(), std::move(unfinished_work),
630 std::move(unfinished_work), 694 kExperimentID, &precache_delegate_);
631 &precache_delegate_);
632 precache_fetcher.Start(); 695 precache_fetcher.Start();
633 696
634 // Destroy the PrecacheFetcher, to cancel precaching. No metrics 697 // Destroy the PrecacheFetcher, to cancel precaching. No metrics
635 // should be recorded because this should not cause OnDone to be 698 // should be recorded because this should not cause OnDone to be
636 // called on the precache delegate. 699 // called on the precache delegate.
637 } 700 }
638 701
639 loop_.RunUntilIdle(); 702 loop_.RunUntilIdle();
640 703
641 std::multiset<GURL> expected_requested_urls; 704 std::multiset<GURL> expected_requested_urls;
(...skipping 14 matching lines...) Expand all
656 new PrecacheUnfinishedWork()); 719 new PrecacheUnfinishedWork());
657 unfinished_work->add_top_host()->set_hostname("starting-url.com"); 720 unfinished_work->add_top_host()->set_hostname("starting-url.com");
658 721
659 PrecacheConfigurationSettings config; 722 PrecacheConfigurationSettings config;
660 config.set_top_sites_count(0); 723 config.set_top_sites_count(0);
661 724
662 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL), 725 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL),
663 config.SerializeAsString(), net::HTTP_OK, 726 config.SerializeAsString(), net::HTTP_OK,
664 net::URLRequestStatus::SUCCESS); 727 net::URLRequestStatus::SUCCESS);
665 728
666 PrecacheFetcher precache_fetcher(request_context_.get(), 729 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
667 GURL(), std::string(), 730 std::string(), std::move(unfinished_work),
668 std::move(unfinished_work), 731 kExperimentID, &precache_delegate_);
669 &precache_delegate_);
670 precache_fetcher.Start(); 732 precache_fetcher.Start();
671 733
672 loop_.RunUntilIdle(); 734 loop_.RunUntilIdle();
673 735
674 std::multiset<GURL> expected_requested_urls; 736 std::multiset<GURL> expected_requested_urls;
675 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL)); 737 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL));
676 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 738 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
677 739
678 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 740 EXPECT_TRUE(precache_delegate_.was_on_done_called());
679 } 741 }
(...skipping 15 matching lines...) Expand all
695 PrecacheConfigurationSettings config; 757 PrecacheConfigurationSettings config;
696 config.set_top_sites_count(1); 758 config.set_top_sites_count(1);
697 759
698 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX "starting-url.com"); 760 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX "starting-url.com");
699 761
700 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), 762 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
701 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 763 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
702 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(), 764 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(),
703 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 765 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
704 766
705 PrecacheFetcher precache_fetcher(request_context_.get(), 767 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
706 GURL(), std::string(), 768 std::string(), std::move(unfinished_work),
707 std::move(unfinished_work), 769 kExperimentID, &precache_delegate_);
708 &precache_delegate_);
709 precache_fetcher.Start(); 770 precache_fetcher.Start();
710 771
711 loop_.RunUntilIdle(); 772 loop_.RunUntilIdle();
712 773
713 std::multiset<GURL> expected_requested_urls; 774 std::multiset<GURL> expected_requested_urls;
714 expected_requested_urls.insert(GURL(kConfigURL)); 775 expected_requested_urls.insert(GURL(kConfigURL));
715 expected_requested_urls.insert(manifest_url); 776 expected_requested_urls.insert(manifest_url);
716 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 777 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
717 778
718 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 779 EXPECT_TRUE(precache_delegate_.was_on_done_called());
(...skipping 23 matching lines...) Expand all
742 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 803 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
743 factory_.SetFakeResponse(GURL(kGoodManifestURL), 804 factory_.SetFakeResponse(GURL(kGoodManifestURL),
744 good_manifest.SerializeAsString(), net::HTTP_OK, 805 good_manifest.SerializeAsString(), net::HTTP_OK,
745 net::URLRequestStatus::SUCCESS); 806 net::URLRequestStatus::SUCCESS);
746 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good", 807 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good",
747 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 808 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
748 809
749 base::HistogramTester histogram; 810 base::HistogramTester histogram;
750 811
751 { 812 {
752 PrecacheFetcher precache_fetcher(request_context_.get(), 813 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
753 GURL(), std::string(), 814 std::string(), std::move(unfinished_work),
754 std::move(unfinished_work), 815 kExperimentID, &precache_delegate_);
755 &precache_delegate_);
756 precache_fetcher.Start(); 816 precache_fetcher.Start();
757 817
758 loop_.RunUntilIdle(); 818 loop_.RunUntilIdle();
759 819
760 // Destroy the PrecacheFetcher after it has finished, to record metrics. 820 // Destroy the PrecacheFetcher after it has finished, to record metrics.
761 } 821 }
762 822
763 std::multiset<GURL> expected_requested_urls; 823 std::multiset<GURL> expected_requested_urls;
764 expected_requested_urls.insert(GURL(kConfigURL)); 824 expected_requested_urls.insert(GURL(kConfigURL));
765 expected_requested_urls.insert(GURL(kGoodManifestURL)); 825 expected_requested_urls.insert(GURL(kGoodManifestURL));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 } 881 }
822 882
823 factory_.SetFakeResponse(GURL(kGoodManifestURL), 883 factory_.SetFakeResponse(GURL(kGoodManifestURL),
824 good_manifest.SerializeAsString(), net::HTTP_OK, 884 good_manifest.SerializeAsString(), net::HTTP_OK,
825 net::URLRequestStatus::SUCCESS); 885 net::URLRequestStatus::SUCCESS);
826 886
827 base::HistogramTester histogram; 887 base::HistogramTester histogram;
828 888
829 { 889 {
830 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(), 890 PrecacheFetcher precache_fetcher(request_context_.get(), GURL(),
831 std::string(), 891 std::string(), std::move(unfinished_work),
832 std::move(unfinished_work), 892 kExperimentID, &precache_delegate_);
833 &precache_delegate_);
834 precache_fetcher.Start(); 893 precache_fetcher.Start();
835 894
836 loop_.RunUntilIdle(); 895 loop_.RunUntilIdle();
837 } 896 }
838 897
839 // We don't know which will make it and which won't due to the parallelism in 898 // We don't know which will make it and which won't due to the parallelism in
840 // the pool of Fetchers. 899 // the pool of Fetchers.
841 EXPECT_GT(kNumResources, url_callback_.requested_urls().size()); 900 EXPECT_GT(kNumResources, url_callback_.requested_urls().size());
842 901
843 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 902 EXPECT_TRUE(precache_delegate_.was_on_done_called());
844 903
845 // good-manifest.com will not have been completed. 904 // good-manifest.com will not have been completed.
846 EXPECT_THAT(histogram.GetAllSamples("Precache.Fetch.PercentCompleted"), 905 EXPECT_THAT(histogram.GetAllSamples("Precache.Fetch.PercentCompleted"),
847 ElementsAre(base::Bucket(0, 1))); 906 ElementsAre(base::Bucket(0, 1)));
848 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); 907 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
849 } 908 }
850 909
851 } // namespace 910 } // namespace
852 911
853 } // namespace precache 912 } // namespace precache
OLDNEW
« no previous file with comments | « components/precache/core/precache_fetcher.cc ('k') | components/precache/core/proto/precache.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698