diff options
author | twifkak <twifkak@chromium.org> | 2015-08-11 12:27:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-11 19:28:18 +0000 |
commit | 390e0bb073351234bc33ea6551bc4d3dbfd237b9 (patch) | |
tree | 32091ddc218a17f626fe61925608d75a0ca57d94 | |
parent | f61492754fc9ce2234ed05f34483e1f60498f155 (diff) | |
download | chromium_src-390e0bb073351234bc33ea6551bc4d3dbfd237b9.zip chromium_src-390e0bb073351234bc33ea6551bc4d3dbfd237b9.tar.gz chromium_src-390e0bb073351234bc33ea6551bc4d3dbfd237b9.tar.bz2 |
Change precache tests to use HistogramTester.
This allows us to remove a bunch of setup code, makes the tests more
flexible to change in the future, and makes them catch future missing
expectations (by virtue of GetTotalCountsForPrefix).
BUG=
Review URL: https://codereview.chromium.org/1268323005
Cr-Commit-Position: refs/heads/master@{#342866}
-rw-r--r-- | components/precache/content/precache_manager_unittest.cc | 97 | ||||
-rw-r--r-- | components/precache/core/precache_database_unittest.cc | 199 |
2 files changed, 99 insertions, 197 deletions
diff --git a/components/precache/content/precache_manager_unittest.cc b/components/precache/content/precache_manager_unittest.cc index 2011575..84b08fc 100644 --- a/components/precache/content/precache_manager_unittest.cc +++ b/components/precache/content/precache_manager_unittest.cc @@ -14,10 +14,8 @@ #include "base/command_line.h" #include "base/compiler_specific.h" #include "base/location.h" -#include "base/metrics/histogram.h" -#include "base/metrics/histogram_samples.h" -#include "base/metrics/statistics_recorder.h" #include "base/single_thread_task_runner.h" +#include "base/test/histogram_tester.h" #include "base/thread_task_runner_handle.h" #include "components/history/core/browser/history_service.h" #include "components/history/core/browser/history_types.h" @@ -37,38 +35,17 @@ namespace precache { namespace { using ::testing::_; +using ::testing::ContainerEq; +using ::testing::ElementsAre; +using ::testing::IsEmpty; +using ::testing::Pair; using ::testing::SaveArg; -// A map of histogram names to the total sample counts. -typedef std::map<std::string, base::HistogramBase::Count> HistogramCountMap; - const char kConfigURL[] = "http://config-url.com"; const char kManifestURLPrefix[] = "http://manifest-url-prefix.com/"; const char kGoodManifestURL[] = "http://manifest-url-prefix.com/good-manifest.com"; -base::HistogramBase::Count GetHistogramTotalCount(const char* histogram_name) { - base::HistogramBase* histogram = - base::StatisticsRecorder::FindHistogram(histogram_name); - return histogram ? histogram->SnapshotSamples()->TotalCount() : 0; -} - -HistogramCountMap GetHistogramCountMap() { - // Note that the PrecacheManager tests don't care about the ".Cellular" - // histograms. - const char* kHistogramNames[] = { - "Precache.DownloadedPrecacheMotivated", "Precache.DownloadedNonPrecache", - "Precache.Latency.Prefetch", "Precache.Latency.NonPrefetch", - "Precache.Saved"}; - - HistogramCountMap histogram_count_map; - for (size_t i = 0; i < arraysize(kHistogramNames); ++i) { - histogram_count_map[kHistogramNames[i]] = - GetHistogramTotalCount(kHistogramNames[i]); - } - return histogram_count_map; -} - class TestURLFetcherCallback { public: scoped_ptr<net::FakeURLFetcher> CreateURLFetcher( @@ -142,8 +119,6 @@ class PrecacheManagerTest : public testing::Test { protected: void SetUp() override { - base::StatisticsRecorder::Initialize(); - base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( switches::kPrecacheConfigSettingsURL, kConfigURL); base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( @@ -163,6 +138,7 @@ class PrecacheManagerTest : public testing::Test { net::FakeURLFetcherFactory factory_; TestPrecacheCompletionCallback precache_callback_; MockHistoryService history_service_; + base::HistogramTester histograms_; }; TEST_F(PrecacheManagerTest, StartAndFinishPrecaching) { @@ -241,31 +217,31 @@ TEST_F(PrecacheManagerTest, StartAndCancelPrecachingAfterURLsReceived) { EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); } -TEST_F(PrecacheManagerTest, RecordStatsForFetchWithIrrelevantFetches) { - HistogramCountMap expected_histogram_count_map = GetHistogramCountMap(); - +TEST_F(PrecacheManagerTest, RecordStatsForFetchWithSizeZero) { // Fetches with size 0 should be ignored. precache_manager_.RecordStatsForFetch( GURL("http://url.com"), base::TimeDelta(), base::Time(), 0, false); base::MessageLoop::current()->RunUntilIdle(); - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty()); +} +TEST_F(PrecacheManagerTest, RecordStatsForFetchWithNonHTTP) { // Fetches for URLs with schemes other than HTTP or HTTPS should be ignored. precache_manager_.RecordStatsForFetch( GURL("ftp://ftp.com"), base::TimeDelta(), base::Time(), 1000, false); base::MessageLoop::current()->RunUntilIdle(); - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty()); +} +TEST_F(PrecacheManagerTest, RecordStatsForFetchWithEmptyURL) { // Fetches for empty URLs should be ignored. precache_manager_.RecordStatsForFetch(GURL(), base::TimeDelta(), base::Time(), 1000, false); base::MessageLoop::current()->RunUntilIdle(); - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty()); } TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) { - HistogramCountMap expected_histogram_count_map = GetHistogramCountMap(); - EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) .WillOnce(ReturnHosts(history::TopHostsList())); @@ -279,42 +255,42 @@ TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) { // For PrecacheFetcher and RecordURLPrecached. base::MessageLoop::current()->RunUntilIdle(); - expected_histogram_count_map["Precache.DownloadedPrecacheMotivated"]++; - expected_histogram_count_map["Precache.Latency.Prefetch"]++; - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ElementsAre(Pair("Precache.DownloadedPrecacheMotivated", 1), + Pair("Precache.Fetch.PercentCompleted", 1), + Pair("Precache.Fetch.ResponseBytes.Network", 1), + Pair("Precache.Fetch.ResponseBytes.Total", 1), + Pair("Precache.Latency.Prefetch", 1))); } TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTP) { - HistogramCountMap expected_histogram_count_map = GetHistogramCountMap(); - precache_manager_.RecordStatsForFetch(GURL("http://http-url.com"), base::TimeDelta(), base::Time(), 1000, false); base::MessageLoop::current()->RunUntilIdle(); - expected_histogram_count_map["Precache.DownloadedNonPrecache"]++; - expected_histogram_count_map["Precache.Latency.NonPrefetch"]++; - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ElementsAre(Pair("Precache.DownloadedNonPrecache", 1), + Pair("Precache.Latency.NonPrefetch", 1))); } TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTPS) { - HistogramCountMap expected_histogram_count_map = GetHistogramCountMap(); - precache_manager_.RecordStatsForFetch(GURL("https://https-url.com"), base::TimeDelta(), base::Time(), 1000, false); base::MessageLoop::current()->RunUntilIdle(); - expected_histogram_count_map["Precache.DownloadedNonPrecache"]++; - expected_histogram_count_map["Precache.Latency.NonPrefetch"]++; - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ElementsAre(Pair("Precache.DownloadedNonPrecache", 1), + Pair("Precache.Latency.NonPrefetch", 1))); } TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) { + // TODO(twifkak): Split this into multiple tests. + base::HistogramTester::CountsMap expected_histogram_count_map; + // This test has to use Time::Now() because StartPrecaching uses Time::Now(). const base::Time kCurrentTime = base::Time::Now(); - HistogramCountMap expected_histogram_count_map = GetHistogramCountMap(); - EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) .Times(2) .WillRepeatedly(ReturnHosts(history::TopHostsList())); @@ -333,16 +309,23 @@ TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) { GURL("http://yesterday-fetch.com"), base::TimeDelta(), kCurrentTime - base::TimeDelta::FromDays(1), 1000, false); expected_histogram_count_map["Precache.DownloadedPrecacheMotivated"] += 3; + expected_histogram_count_map["Precache.Fetch.PercentCompleted"]++; + expected_histogram_count_map["Precache.Fetch.ResponseBytes.Network"]++; + expected_histogram_count_map["Precache.Fetch.ResponseBytes.Total"]++; expected_histogram_count_map["Precache.Latency.Prefetch"] += 3; precache_manager_.CancelPrecaching(); // For PrecacheFetcher and RecordURLPrecached. base::MessageLoop::current()->RunUntilIdle(); - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ContainerEq(expected_histogram_count_map)); // The expired precache will be deleted during precaching this time. precache_manager_.StartPrecaching(precache_callback_.GetCallback()); EXPECT_TRUE(precache_manager_.IsPrecaching()); + expected_histogram_count_map["Precache.Fetch.PercentCompleted"]++; + expected_histogram_count_map["Precache.Fetch.ResponseBytes.Network"]++; + expected_histogram_count_map["Precache.Fetch.ResponseBytes.Total"]++; precache_manager_.CancelPrecaching(); // For PrecacheFetcher and RecordURLPrecached. @@ -358,7 +341,8 @@ TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) { expected_histogram_count_map["Precache.Latency.NonPrefetch"]++; base::MessageLoop::current()->RunUntilIdle(); - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ContainerEq(expected_histogram_count_map)); // The other precaches should not have expired, so the following fetches from // the cache should count as saved bytes. @@ -372,7 +356,8 @@ TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) { expected_histogram_count_map["Precache.Saved"] += 2; base::MessageLoop::current()->RunUntilIdle(); - EXPECT_EQ(expected_histogram_count_map, GetHistogramCountMap()); + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ContainerEq(expected_histogram_count_map)); } } // namespace diff --git a/components/precache/core/precache_database_unittest.cc b/components/precache/core/precache_database_unittest.cc index e129ef9..cb2ee62 100644 --- a/components/precache/core/precache_database_unittest.cc +++ b/components/precache/core/precache_database_unittest.cc @@ -6,42 +6,29 @@ #include <map> +#include "base/containers/hash_tables.h" #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "base/message_loop/message_loop.h" -#include "base/metrics/histogram.h" -#include "base/metrics/histogram_samples.h" -#include "base/metrics/statistics_recorder.h" +#include "base/metrics/histogram_base.h" +#include "base/test/histogram_tester.h" #include "base/time/time.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" namespace { +using ::testing::ContainerEq; +using ::testing::ElementsAre; +using base::Bucket; + const GURL kURL("http://url.com"); -const base::TimeDelta kLatency = base::TimeDelta::FromMilliseconds(500); +const base::TimeDelta kLatency = base::TimeDelta::FromMilliseconds(5); const base::Time kFetchTime = base::Time() + base::TimeDelta::FromHours(1000); const base::Time kOldFetchTime = kFetchTime - base::TimeDelta::FromDays(1); const int64 kSize = 5000; -const char* kHistogramNames[] = {"Precache.DownloadedPrecacheMotivated", - "Precache.DownloadedNonPrecache", - "Precache.DownloadedNonPrecache.Cellular", - "Precache.Latency.Prefetch", - "Precache.Latency.NonPrefetch", - "Precache.Saved", - "Precache.Saved.Cellular"}; - -scoped_ptr<base::HistogramSamples> GetHistogramSamples( - const char* histogram_name) { - base::HistogramBase* histogram = - base::StatisticsRecorder::FindHistogram(histogram_name); - - EXPECT_NE(static_cast<base::HistogramBase*>(NULL), histogram); - - return histogram->SnapshotSamples().Pass(); -} - std::map<GURL, base::Time> BuildURLTableMap(const GURL& url, const base::Time& precache_time) { std::map<GURL, base::Time> url_table_map; @@ -60,31 +47,12 @@ class PrecacheDatabaseTest : public testing::Test { protected: void SetUp() override { - base::StatisticsRecorder::Initialize(); precache_database_ = new PrecacheDatabase(); ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir()); base::FilePath db_path = scoped_temp_dir_.path().Append( base::FilePath(FILE_PATH_LITERAL("precache_database"))); precache_database_->Init(db_path); - - // Log a sample for each histogram, to ensure that they are all created. - // This has to be done here, and not in the for loop below, because of the - // way that UMA_HISTOGRAM_COUNTS uses static variables. - UMA_HISTOGRAM_COUNTS("Precache.DownloadedPrecacheMotivated", 0); - UMA_HISTOGRAM_COUNTS("Precache.DownloadedNonPrecache", 0); - UMA_HISTOGRAM_COUNTS("Precache.DownloadedNonPrecache.Cellular", 0); - UMA_HISTOGRAM_TIMES("Precache.Latency.Prefetch", base::TimeDelta()); - UMA_HISTOGRAM_TIMES("Precache.Latency.NonPrefetch", base::TimeDelta()); - UMA_HISTOGRAM_COUNTS("Precache.Saved", 0); - UMA_HISTOGRAM_COUNTS("Precache.Saved.Cellular", 0); - - for (size_t i = 0; i < arraysize(kHistogramNames); i++) { - initial_histogram_samples_[i] = - GetHistogramSamples(kHistogramNames[i]).Pass(); - initial_histogram_samples_map_[kHistogramNames[i]] = - initial_histogram_samples_[i].get(); - } } std::map<GURL, base::Time> GetActualURLTableMap() { @@ -100,29 +68,6 @@ class PrecacheDatabaseTest : public testing::Test { return &precache_database_->precache_url_table_; } - scoped_ptr<base::HistogramSamples> GetHistogramSamplesDelta( - const char* histogram_name) { - scoped_ptr<base::HistogramSamples> delta_samples( - GetHistogramSamples(histogram_name)); - delta_samples->Subtract(*initial_histogram_samples_map_[histogram_name]); - - return delta_samples.Pass(); - } - - void ExpectNewSample(const char* histogram_name, - base::HistogramBase::Sample sample) { - scoped_ptr<base::HistogramSamples> delta_samples( - GetHistogramSamplesDelta(histogram_name)); - EXPECT_EQ(1, delta_samples->TotalCount()) << histogram_name; - EXPECT_EQ(1, delta_samples->GetCount(sample)) << histogram_name; - } - - void ExpectNoNewSamples(const char* histogram_name) { - scoped_ptr<base::HistogramSamples> delta_samples( - GetHistogramSamplesDelta(histogram_name)); - EXPECT_EQ(0, delta_samples->TotalCount()) << histogram_name; - } - // Convenience methods for recording different types of URL fetches. These // exist to improve the readability of the tests. void RecordPrecacheFromNetwork(const GURL& url, @@ -150,9 +95,19 @@ class PrecacheDatabaseTest : public testing::Test { scoped_refptr<PrecacheDatabase> precache_database_; base::ScopedTempDir scoped_temp_dir_; - scoped_ptr<base::HistogramSamples> initial_histogram_samples_ - [arraysize(kHistogramNames)]; - std::map<std::string, base::HistogramSamples*> initial_histogram_samples_map_; + base::HistogramTester histograms_; + base::HistogramTester::CountsMap expected_histogram_counts_; + + void ExpectNewSample(const std::string& histogram_name, + base::HistogramBase::Sample sample) { + histograms_.ExpectUniqueSample(histogram_name, sample, 1); + expected_histogram_counts_[histogram_name]++; + } + + void ExpectNoOtherSamples() { + EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), + ContainerEq(expected_histogram_counts_)); + } }; void PrecacheDatabaseTest::RecordPrecacheFromNetwork( @@ -214,11 +169,8 @@ TEST_F(PrecacheDatabaseTest, PrecacheOverNetwork) { EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); ExpectNewSample("Precache.DownloadedPrecacheMotivated", kSize); - ExpectNoNewSamples("Precache.DownloadedNonPrecache"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.Prefetch", kLatency.InMilliseconds()); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithURLTableEntry) { @@ -229,12 +181,8 @@ TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithURLTableEntry) { // timestamp. EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.Prefetch", 0); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithoutURLTableEntry) { @@ -242,12 +190,8 @@ TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithoutURLTableEntry) { EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.Prefetch", 0); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, FetchOverNetwork_NonCellular) { @@ -255,12 +199,9 @@ TEST_F(PrecacheDatabaseTest, FetchOverNetwork_NonCellular) { EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); ExpectNewSample("Precache.DownloadedNonPrecache", kSize); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, FetchOverNetwork_Cellular) { @@ -268,12 +209,10 @@ TEST_F(PrecacheDatabaseTest, FetchOverNetwork_Cellular) { EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); ExpectNewSample("Precache.DownloadedNonPrecache", kSize); ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize); ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) { @@ -283,12 +222,9 @@ TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) { // The URL table entry should have been deleted. EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); ExpectNewSample("Precache.DownloadedNonPrecache", kSize); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) { @@ -298,12 +234,9 @@ TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) { // The URL table entry should have been deleted. EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.NonPrefetch", 0); ExpectNewSample("Precache.Saved", kSize); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) { @@ -313,12 +246,10 @@ TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) { // The URL table entry should have been deleted. EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.NonPrefetch", 0); ExpectNewSample("Precache.Saved", kSize); ExpectNewSample("Precache.Saved.Cellular", kSize); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, FetchFromCacheWithoutURLTableEntry) { @@ -326,12 +257,8 @@ TEST_F(PrecacheDatabaseTest, FetchFromCacheWithoutURLTableEntry) { EXPECT_TRUE(GetActualURLTableMap().empty()); - ExpectNoNewSamples("Precache.DownloadedPrecacheMotivated"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache"); - ExpectNoNewSamples("Precache.DownloadedNonPrecache.Cellular"); ExpectNewSample("Precache.Latency.NonPrefetch", 0); - ExpectNoNewSamples("Precache.Saved"); - ExpectNoNewSamples("Precache.Saved.Cellular"); + ExpectNoOtherSamples(); } TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) { @@ -350,15 +277,15 @@ TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) { TEST_F(PrecacheDatabaseTest, SampleInteraction) { const GURL kURL1("http://url1.com"); - const int64 kSize1 = 1000; + const int64 kSize1 = 1; const GURL kURL2("http://url2.com"); - const int64 kSize2 = 2000; + const int64 kSize2 = 2; const GURL kURL3("http://url3.com"); - const int64 kSize3 = 3000; + const int64 kSize3 = 3; const GURL kURL4("http://url4.com"); - const int64 kSize4 = 4000; + const int64 kSize4 = 4; const GURL kURL5("http://url5.com"); - const int64 kSize5 = 5000; + const int64 kSize5 = 5; RecordPrecacheFromNetwork(kURL1, kLatency, kFetchTime, kSize1); RecordPrecacheFromNetwork(kURL2, kLatency, kFetchTime, kSize2); @@ -381,38 +308,28 @@ TEST_F(PrecacheDatabaseTest, SampleInteraction) { RecordFetchFromCache(kURL3, kFetchTime, kSize3); RecordFetchFromCache(kURL5, kFetchTime, kSize5); - scoped_ptr<base::HistogramSamples> downloaded_precache_motivated_bytes( - GetHistogramSamplesDelta("Precache.DownloadedPrecacheMotivated")); - EXPECT_EQ(5, downloaded_precache_motivated_bytes->TotalCount()); - EXPECT_EQ(1, downloaded_precache_motivated_bytes->GetCount(kSize1)); - EXPECT_EQ(2, downloaded_precache_motivated_bytes->GetCount(kSize2)); - EXPECT_EQ(1, downloaded_precache_motivated_bytes->GetCount(kSize3)); - EXPECT_EQ(1, downloaded_precache_motivated_bytes->GetCount(kSize4)); - - scoped_ptr<base::HistogramSamples> downloaded_non_precache_bytes( - GetHistogramSamplesDelta("Precache.DownloadedNonPrecache")); - EXPECT_EQ(3, downloaded_non_precache_bytes->TotalCount()); - EXPECT_EQ(2, downloaded_non_precache_bytes->GetCount(kSize2)); - EXPECT_EQ(1, downloaded_non_precache_bytes->GetCount(kSize5)); - - scoped_ptr<base::HistogramSamples> downloaded_non_precache_bytes_cellular( - GetHistogramSamplesDelta("Precache.DownloadedNonPrecache.Cellular")); - EXPECT_EQ(2, downloaded_non_precache_bytes_cellular->TotalCount()); - EXPECT_EQ(1, downloaded_non_precache_bytes_cellular->GetCount(kSize2)); - EXPECT_EQ(1, downloaded_non_precache_bytes_cellular->GetCount(kSize5)); - - // TODO(twifkak): Add Latency checks. - - scoped_ptr<base::HistogramSamples> saved_bytes( - GetHistogramSamplesDelta("Precache.Saved")); - EXPECT_EQ(2, saved_bytes->TotalCount()); - EXPECT_EQ(1, saved_bytes->GetCount(kSize1)); - EXPECT_EQ(1, saved_bytes->GetCount(kSize3)); - - scoped_ptr<base::HistogramSamples> saved_bytes_cellular( - GetHistogramSamplesDelta("Precache.Saved.Cellular")); - EXPECT_EQ(1, saved_bytes_cellular->TotalCount()); - EXPECT_EQ(1, saved_bytes_cellular->GetCount(kSize1)); + EXPECT_THAT(histograms_.GetAllSamples("Precache.DownloadedPrecacheMotivated"), + ElementsAre(Bucket(kSize1, 1), Bucket(kSize2, 2), + Bucket(kSize3, 1), Bucket(kSize4, 1))); + + EXPECT_THAT(histograms_.GetAllSamples("Precache.DownloadedNonPrecache"), + ElementsAre(Bucket(kSize2, 2), Bucket(kSize5, 1))); + + EXPECT_THAT( + histograms_.GetAllSamples("Precache.DownloadedNonPrecache.Cellular"), + ElementsAre(Bucket(kSize2, 1), Bucket(kSize5, 1))); + + EXPECT_THAT(histograms_.GetAllSamples("Precache.Latency.Prefetch"), + ElementsAre(Bucket(0, 3), Bucket(kLatency.InMilliseconds(), 5))); + + EXPECT_THAT(histograms_.GetAllSamples("Precache.Latency.NonPrefetch"), + ElementsAre(Bucket(0, 6), Bucket(kLatency.InMilliseconds(), 3))); + + EXPECT_THAT(histograms_.GetAllSamples("Precache.Saved"), + ElementsAre(Bucket(kSize1, 1), Bucket(kSize3, 1))); + + EXPECT_THAT(histograms_.GetAllSamples("Precache.Saved.Cellular"), + ElementsAre(Bucket(kSize1, 1))); } } // namespace |