summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortwifkak <twifkak@chromium.org>2015-08-11 12:27:47 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-11 19:28:18 +0000
commit390e0bb073351234bc33ea6551bc4d3dbfd237b9 (patch)
tree32091ddc218a17f626fe61925608d75a0ca57d94
parentf61492754fc9ce2234ed05f34483e1f60498f155 (diff)
downloadchromium_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.cc97
-rw-r--r--components/precache/core/precache_database_unittest.cc199
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