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")); |
} |