Index: chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc |
diff --git a/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc b/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc |
index e67065fc953999f888d36320df52d78abde45ef7..32f5ebedb751a4b1de6d62bc875b8a558fb18b36 100644 |
--- a/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc |
+++ b/chrome/browser/ui/webui/ntp/ntp_user_data_logger_unittest.cc |
@@ -4,23 +4,26 @@ |
#include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h" |
-#include "base/metrics/histogram_macros.h" |
+#include <memory> |
+#include <string> |
+#include <vector> |
+ |
+#include "base/metrics/histogram.h" |
#include "base/metrics/statistics_recorder.h" |
-#include "base/strings/utf_string_conversions.h" |
#include "chrome/common/search/ntp_logging_events.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace { |
using testing::ElementsAre; |
+using testing::ElementsAreArray; |
using Sample = base::HistogramBase::Sample; |
using Samples = std::vector<Sample>; |
class TestNTPUserDataLogger : public NTPUserDataLogger { |
public: |
- TestNTPUserDataLogger() : NTPUserDataLogger(NULL) {} |
+ TestNTPUserDataLogger() : NTPUserDataLogger(nullptr) {} |
~TestNTPUserDataLogger() override {} |
}; |
@@ -74,13 +77,13 @@ std::vector<int> ClientNavigations(const Samples& values) { |
} // namespace |
-class NTPUserDataLoggerTest : public testing::Test { |
- content::TestBrowserThreadBundle thread_bundle_; |
-}; |
- |
-TEST_F(NTPUserDataLoggerTest, TestNumberOfTiles) { |
+TEST(NTPUserDataLoggerTest, TestNumberOfTiles) { |
base::StatisticsRecorder::Initialize(); |
+ int expect_total = GetTotalCount("NewTabPage.NumberOfTiles"); |
+ int expect_bin0 = GetBinCount("NewTabPage.NumberOfTiles", 0); |
+ int expect_bin8 = GetBinCount("NewTabPage.NumberOfTiles", 8); |
Marc Treib
2016/10/24 11:51:44
This is a bit ugly.
Histograms are set up in a way
sfiera
2016/10/24 13:01:16
You don't have to use its Expect*() methods, do yo
Marc Treib
2016/10/24 14:29:11
Right. Done.
|
+ |
// Ensure non-zero statistics. |
TestNTPUserDataLogger logger; |
logger.ntp_url_ = GURL("chrome://newtab/"); |
@@ -88,16 +91,17 @@ TEST_F(NTPUserDataLoggerTest, TestNumberOfTiles) { |
base::TimeDelta delta = base::TimeDelta::FromMilliseconds(0); |
for (int i = 0; i < 8; ++i) |
- logger.LogEvent(NTP_SERVER_SIDE_SUGGESTION, delta); |
- |
+ logger.LogMostVisitedImpression(i, NTPLoggingTileSource::SERVER); |
logger.LogEvent(NTP_ALL_TILES_LOADED, delta); |
+ expect_total++; |
+ expect_bin8++; |
+ EXPECT_EQ(expect_total, GetTotalCount("NewTabPage.NumberOfTiles")); |
+ EXPECT_EQ(expect_bin0, GetBinCount("NewTabPage.NumberOfTiles", 0)); |
+ EXPECT_EQ(expect_bin8, GetBinCount("NewTabPage.NumberOfTiles", 8)); |
- EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); |
- EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfTiles", 8)); |
- |
- // Statistics should be reset to 0, so we should not log anything else. |
+ // We should not log again for the same NTP. |
logger.LogEvent(NTP_ALL_TILES_LOADED, delta); |
- EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); |
+ EXPECT_EQ(expect_total, GetTotalCount("NewTabPage.NumberOfTiles")); |
// Navigating away and back resets stats. |
logger.NavigatedFromURLToURL(GURL("chrome://newtab/"), |
@@ -105,48 +109,61 @@ TEST_F(NTPUserDataLoggerTest, TestNumberOfTiles) { |
logger.NavigatedFromURLToURL(GURL("http://chromium.org"), |
GURL("chrome://newtab/")); |
logger.LogEvent(NTP_ALL_TILES_LOADED, delta); |
- EXPECT_EQ(2, GetTotalCount("NewTabPage.NumberOfTiles")); |
+ expect_total++; |
+ expect_bin0++; |
+ EXPECT_EQ(expect_total, GetTotalCount("NewTabPage.NumberOfTiles")); |
+ EXPECT_EQ(expect_bin0, GetBinCount("NewTabPage.NumberOfTiles", 0)); |
+ EXPECT_EQ(expect_bin8, GetBinCount("NewTabPage.NumberOfTiles", 8)); |
} |
-TEST_F(NTPUserDataLoggerTest, TestLogMostVisitedImpression) { |
+TEST(NTPUserDataLoggerTest, TestLogMostVisitedImpression) { |
base::StatisticsRecorder::Initialize(); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
+ |
+ std::vector<int> expect_total = TotalImpressions({0, 1, 2, 3}); |
+ std::vector<int> expect_server = ServerImpressions({0, 1, 2, 3}); |
+ std::vector<int> expect_client = ClientImpressions({0, 1, 2, 3}); |
TestNTPUserDataLogger logger; |
logger.ntp_url_ = GURL("chrome://newtab/"); |
// Impressions increment the associated bins. |
+ logger.LogMostVisitedImpression(0, NTPLoggingTileSource::SERVER); |
+ expect_total[0]++; |
+ expect_server[0]++; |
+ EXPECT_THAT(TotalImpressions({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerImpressions({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientImpressions({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
+ |
logger.LogMostVisitedImpression(1, NTPLoggingTileSource::SERVER); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(1, 0, 0, 0)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(1, 0, 0, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
+ expect_total[1]++; |
+ expect_server[1]++; |
+ EXPECT_THAT(TotalImpressions({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerImpressions({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientImpressions({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
- logger.LogMostVisitedImpression(2, NTPLoggingTileSource::SERVER); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
+ logger.LogMostVisitedImpression(2, NTPLoggingTileSource::CLIENT); |
+ expect_total[2]++; |
+ expect_client[2]++; |
+ EXPECT_THAT(TotalImpressions({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerImpressions({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientImpressions({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
logger.LogMostVisitedImpression(3, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 1, 0)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 1, 0)); |
- |
- logger.LogMostVisitedImpression(4, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 1, 1)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 1, 1)); |
+ expect_total[3]++; |
+ expect_client[3]++; |
+ EXPECT_THAT(TotalImpressions({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerImpressions({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientImpressions({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
// But once incremented, they don't increase again unless reset. |
logger.LogMostVisitedImpression(1, NTPLoggingTileSource::SERVER); |
logger.LogMostVisitedImpression(2, NTPLoggingTileSource::CLIENT); |
logger.LogMostVisitedImpression(3, NTPLoggingTileSource::SERVER); |
logger.LogMostVisitedImpression(4, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 1, 1)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 0, 1, 1)); |
+ EXPECT_THAT(TotalImpressions({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerImpressions({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientImpressions({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
// Impressions are silently ignored for tiles >= 8. |
logger.LogMostVisitedImpression(8, NTPLoggingTileSource::SERVER); |
@@ -155,55 +172,79 @@ TEST_F(NTPUserDataLoggerTest, TestLogMostVisitedImpression) { |
EXPECT_THAT(ServerImpressions({8, 9}), ElementsAre(0, 0)); |
EXPECT_THAT(ClientImpressions({8, 9}), ElementsAre(0, 0)); |
- // Navigating away from the NTP and back resets stats. |
+ // After navigating away from the NTP and back, we record again. |
logger.NavigatedFromURLToURL(GURL("chrome://newtab/"), |
GURL("http://chromium.org")); |
logger.NavigatedFromURLToURL(GURL("http://chromium.org"), |
GURL("chrome://newtab/")); |
- logger.LogMostVisitedImpression(1, NTPLoggingTileSource::SERVER); |
- logger.LogMostVisitedImpression(2, NTPLoggingTileSource::CLIENT); |
- logger.LogMostVisitedImpression(3, NTPLoggingTileSource::SERVER); |
- logger.LogMostVisitedImpression(4, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalImpressions({1, 2, 3, 4}), ElementsAre(2, 2, 2, 2)); |
- EXPECT_THAT(ServerImpressions({1, 2, 3, 4}), ElementsAre(2, 1, 1, 0)); |
- EXPECT_THAT(ClientImpressions({1, 2, 3, 4}), ElementsAre(0, 1, 1, 2)); |
+ logger.LogMostVisitedImpression(0, NTPLoggingTileSource::SERVER); |
+ expect_total[0]++; |
+ expect_server[0]++; |
+ logger.LogMostVisitedImpression(1, NTPLoggingTileSource::CLIENT); |
+ expect_total[1]++; |
+ expect_client[1]++; |
+ logger.LogMostVisitedImpression(2, NTPLoggingTileSource::SERVER); |
+ expect_total[2]++; |
+ expect_server[2]++; |
+ logger.LogMostVisitedImpression(3, NTPLoggingTileSource::CLIENT); |
+ expect_total[3]++; |
+ expect_client[3]++; |
+ EXPECT_THAT(TotalImpressions({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerImpressions({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientImpressions({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
} |
-TEST_F(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) { |
+TEST(NTPUserDataLoggerTest, TestLogMostVisitedNavigation) { |
base::StatisticsRecorder::Initialize(); |
- EXPECT_THAT(TotalNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
- EXPECT_THAT(ServerNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
- EXPECT_THAT(ClientNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
+ std::vector<int> expect_total = TotalNavigations({0, 1, 2, 3}); |
+ std::vector<int> expect_server = ServerNavigations({0, 1, 2, 3}); |
+ std::vector<int> expect_client = ClientNavigations({0, 1, 2, 3}); |
TestNTPUserDataLogger logger; |
+ logger.LogMostVisitedNavigation(0, NTPLoggingTileSource::SERVER); |
+ expect_total[0]++; |
+ expect_server[0]++; |
+ EXPECT_THAT(TotalNavigations({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerNavigations({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientNavigations({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
+ |
logger.LogMostVisitedNavigation(1, NTPLoggingTileSource::SERVER); |
- EXPECT_THAT(TotalNavigations({1, 2, 3, 4}), ElementsAre(1, 0, 0, 0)); |
- EXPECT_THAT(ServerNavigations({1, 2, 3, 4}), ElementsAre(1, 0, 0, 0)); |
- EXPECT_THAT(ClientNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
+ expect_total[1]++; |
+ expect_server[1]++; |
+ EXPECT_THAT(TotalNavigations({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerNavigations({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientNavigations({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
- logger.LogMostVisitedNavigation(2, NTPLoggingTileSource::SERVER); |
- EXPECT_THAT(TotalNavigations({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ServerNavigations({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 0, 0)); |
+ logger.LogMostVisitedNavigation(2, NTPLoggingTileSource::CLIENT); |
+ expect_total[2]++; |
+ expect_client[2]++; |
+ EXPECT_THAT(TotalNavigations({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerNavigations({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientNavigations({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
logger.LogMostVisitedNavigation(3, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalNavigations({1, 2, 3, 4}), ElementsAre(1, 1, 1, 0)); |
- EXPECT_THAT(ServerNavigations({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 1, 0)); |
- |
- logger.LogMostVisitedNavigation(4, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalNavigations({1, 2, 3, 4}), ElementsAre(1, 1, 1, 1)); |
- EXPECT_THAT(ServerNavigations({1, 2, 3, 4}), ElementsAre(1, 1, 0, 0)); |
- EXPECT_THAT(ClientNavigations({1, 2, 3, 4}), ElementsAre(0, 0, 1, 1)); |
+ expect_total[3]++; |
+ expect_client[3]++; |
+ EXPECT_THAT(TotalNavigations({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerNavigations({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientNavigations({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
// Navigations always increase. |
- logger.LogMostVisitedNavigation(1, NTPLoggingTileSource::SERVER); |
- logger.LogMostVisitedNavigation(2, NTPLoggingTileSource::CLIENT); |
- logger.LogMostVisitedNavigation(3, NTPLoggingTileSource::SERVER); |
- logger.LogMostVisitedNavigation(4, NTPLoggingTileSource::CLIENT); |
- EXPECT_THAT(TotalNavigations({1, 2, 3, 4}), ElementsAre(2, 2, 2, 2)); |
- EXPECT_THAT(ServerNavigations({1, 2, 3, 4}), ElementsAre(2, 1, 1, 0)); |
- EXPECT_THAT(ClientNavigations({1, 2, 3, 4}), ElementsAre(0, 1, 1, 2)); |
+ logger.LogMostVisitedNavigation(0, NTPLoggingTileSource::SERVER); |
+ expect_total[0]++; |
+ expect_server[0]++; |
+ logger.LogMostVisitedNavigation(1, NTPLoggingTileSource::CLIENT); |
+ expect_total[1]++; |
+ expect_client[1]++; |
+ logger.LogMostVisitedNavigation(2, NTPLoggingTileSource::SERVER); |
+ expect_total[2]++; |
+ expect_server[2]++; |
+ logger.LogMostVisitedNavigation(3, NTPLoggingTileSource::CLIENT); |
+ expect_total[3]++; |
+ expect_client[3]++; |
+ EXPECT_THAT(TotalNavigations({0, 1, 2, 3}), ElementsAreArray(expect_total)); |
+ EXPECT_THAT(ServerNavigations({0, 1, 2, 3}), ElementsAreArray(expect_server)); |
+ EXPECT_THAT(ClientNavigations({0, 1, 2, 3}), ElementsAreArray(expect_client)); |
} |