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..4a68e2ecaace47711db02ea7d6a667ae0d5d5a9b 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,89 @@ |
| #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 "testing/gtest/include/gtest/gtest.h" |
| namespace { |
| -class MockNTPUserDataLogger : public NTPUserDataLogger { |
| - public: |
| - MockNTPUserDataLogger() : NTPUserDataLogger(NULL) {} |
| - virtual ~MockNTPUserDataLogger() {} |
| + base::HistogramBase::Count getTotalCount(const std::string& histogramName) { |
|
Mathieu
2014/01/09 18:37:18
no indent
Alexei Svitkine (slow)
2014/01/09 18:54:41
Capitalize function name. histogramName -> histogr
beaudoin
2014/01/15 23:39:56
Done.
beaudoin
2014/01/15 23:39:56
Done.
|
| + base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( |
| + histogramName); |
|
Alexei Svitkine (slow)
2014/01/09 18:54:41
This should be indented 4 more than previous line.
beaudoin
2014/01/15 23:39:56
Done.
|
| + return histogram->SnapshotSamples()->TotalCount(); |
| + } |
| - MOCK_CONST_METHOD2(GetPercentError, size_t(size_t errors, size_t events)); |
| - |
| - private: |
| - DISALLOW_COPY_AND_ASSIGN(MockNTPUserDataLogger); |
| -}; |
| + base::HistogramBase::Count getBinCount(const std::string& histogramName, |
| + base::HistogramBase::Sample value) { |
| + base::HistogramBase* histogram = base::StatisticsRecorder::FindHistogram( |
| + histogramName); |
| + 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(); |
| + NTPUserDataLogger logger(NULL); |
| + |
| + // 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) |
| + 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_ATTEMPT); |
| + for (int i=0; i<2; ++i) |
| + logger.LogEvent(NTP_THUMBNAIL_ERROR); |
| + logger.LogEvent(NTP_GRAY_TILE_FALLBACK); |
| + logger.LogEvent(NTP_EXTERNAL_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.NumberOfThumbnailAttempts")); |
| + EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfThumbnailAttempts", 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.NumberOfExternalFallbacks")); |
| + EXPECT_EQ(1, getBinCount("NewTabPage.NumberOfExternalFallbacks", 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.NumberOfThumbnailAttempts")); |
| + EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfThumbnailErrors")); |
| + EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTileFallbacks")); |
| + EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalFallbacks")); |
| + EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfExternalTiles")); |
| + EXPECT_EQ(1, getTotalCount("NewTabPage.NumberOfGrayTiles")); |
| + EXPECT_EQ(1, getTotalCount("NewTabPage.SuggestionsType")); |
| } |