Chromium Code Reviews| 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 d38b1bfc0ab2d94ebdf8135cfc3b7d191208d0c7..cf3396d66a348de73eaf107568a556123e9d8a62 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 |
| @@ -5,26 +5,96 @@ |
| #include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h" |
| #include "base/basictypes.h" |
| -#include "testing/gmock/include/gmock/gmock.h" |
| +#include "base/metrics/histogram.h" |
| +#include "base/metrics/statistics_recorder.h" |
| +#include "chrome/common/ntp_logging_events.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace { |
| -class MockNTPUserDataLogger : public NTPUserDataLogger { |
| +class TestNTPUserDataLogger : public NTPUserDataLogger { |
| public: |
| - MockNTPUserDataLogger() : NTPUserDataLogger(NULL) {} |
| - virtual ~MockNTPUserDataLogger() {} |
| + TestNTPUserDataLogger() : NTPUserDataLogger(NULL) {} |
| + virtual ~TestNTPUserDataLogger() {} |
| +}; |
| - MOCK_CONST_METHOD2(GetPercentError, size_t(size_t errors, size_t events)); |
| +base::HistogramBase::Count GetTotalCount(const std::string& histogram_name) { |
| + base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( |
| + histogram_name); |
| + return histogram->SnapshotSamples()->TotalCount(); |
| +} |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(MockNTPUserDataLogger); |
| -}; |
| +base::HistogramBase::Count GetBinCount(const std::string& histogram_name, |
| + base::HistogramBase::Sample value) { |
| + base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( |
| + histogram_name); |
| + return histogram->SnapshotSamples()->GetCount(value); |
| +} |
| } // namespace |
| -TEST(NTPUserDataLoggerTest, ThumbnailErrorRateDoesNotDivideByZero) { |
| - MockNTPUserDataLogger logger; |
| - EXPECT_CALL(logger, GetPercentError(testing::_, testing::_)).Times(0); |
| - logger.EmitThumbnailErrorRate(); |
| +TEST(NTPUserDataLoggerTest, TestLogging) { |
| + base::StatisticsRecorder::Initialize(); |
| + TestNTPUserDataLogger logger; |
| + |
| + // Ensure it works when the statistics are all empty. Only the mouseover |
| + // should be logged in this case. The other histograms are not created yet so |
| + // we can't query them. |
| + logger.EmitNtpStatistics(); |
| + |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfMouseOvers")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); |
| + |
| + // Ensure it works with some non-zero statistics. All statistics should now |
| + // be logged. |
| + for (int i=0; i<20; ++i) |
|
Evan Stade
2014/01/16 00:51:41
spaces around binary operators.
beaudoin
2014/01/16 15:57:05
Done.
|
| + logger.LogEvent(NTP_MOUSEOVER); |
| + for (int i=0; i<8; ++i) |
| + logger.LogEvent(NTP_TILE); |
| + for (int i=0; i<4; ++i) |
| + logger.LogEvent(NTP_THUMBNAIL_TILE); |
| + for (int i=0; i<2; ++i) |
| + logger.LogEvent(NTP_THUMBNAIL_ERROR); |
| + logger.LogEvent(NTP_GRAY_TILE_FALLBACK); |
| + logger.LogEvent(NTP_EXTERNAL_TILE_FALLBACK); |
| + for (int i=0; i<2; ++i) |
| + logger.LogEvent(NTP_EXTERNAL_TILE); |
| + for (int i=0; i<2; ++i) |
| + logger.LogEvent(NTP_GRAY_TILE); |
| + logger.LogEvent(NTP_SERVER_SIDE_SUGGESTION); |
| + logger.EmitNtpStatistics(); |
| + |
| + EXPECT_EQ(2, GetTotalCount("NewTabPage.NumberOfMouseOvers")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfTiles", 8)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailTiles")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfThumbnailTiles", 4)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailErrors")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfThumbnailErrors", 2)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTileFallbacks")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfGrayTileFallbacks", 1)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTileFallbacks")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfExternalTileFallbacks", 1)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTiles")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfExternalTiles", 2)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfGrayTiles", 2)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType")); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.SuggestionsType", 1)); |
| + |
| + // Statistics should be reset to 0, so we should not log anything else. |
| + logger.EmitNtpStatistics(); |
| + EXPECT_EQ(3, GetTotalCount("NewTabPage.NumberOfMouseOvers")); |
| + EXPECT_EQ(2, GetBinCount("NewTabPage.NumberOfMouseOvers", 0)); |
| + EXPECT_EQ(1, GetBinCount("NewTabPage.NumberOfMouseOvers", 20)); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfTiles")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailTiles")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfThumbnailErrors")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTileFallbacks")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTileFallbacks")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfExternalTiles")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.NumberOfGrayTiles")); |
| + EXPECT_EQ(1, GetTotalCount("NewTabPage.SuggestionsType")); |
| } |