| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "platform/Histogram.h" |
| |
| #include "base/metrics/histogram_samples.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace blink { |
| |
| class ScopedUsHistogramTimerTest : public ::testing::Test { |
| public: |
| static void advanceClock(double microseconds) |
| { |
| s_timeElapsed += microseconds; |
| } |
| |
| protected: |
| static double returnMockTime() |
| { |
| return s_timeElapsed; |
| } |
| |
| virtual void SetUp() |
| { |
| s_timeElapsed = 0.0; |
| m_originalTimeFunction = setTimeFunctionsForTesting(returnMockTime); |
| } |
| |
| virtual void TearDown() |
| { |
| setTimeFunctionsForTesting(m_originalTimeFunction); |
| } |
| |
| private: |
| static double s_timeElapsed; |
| TimeFunction m_originalTimeFunction; |
| }; |
| |
| double ScopedUsHistogramTimerTest::s_timeElapsed; |
| |
| class TestCustomCountHistogram : public CustomCountHistogram { |
| public: |
| TestCustomCountHistogram(const char* name, base::HistogramBase::Sample min, base::HistogramBase::Sample max, int32_t bucketCount) |
| : CustomCountHistogram(name, min, max, bucketCount) {} |
| |
| base::HistogramBase* histogram() { return m_histogram; } |
| }; |
| |
| TEST_F(ScopedUsHistogramTimerTest, Basic) |
| { |
| TestCustomCountHistogram scopedUsCounter("test", 0, 10000000, 50); |
| { |
| ScopedUsHistogramTimer timer(scopedUsCounter); |
| advanceClock(0.5); |
| } |
| // 0.5s == 500000us |
| EXPECT_EQ(500000, scopedUsCounter.histogram()->SnapshotSamples()->sum()); |
| } |
| |
| } // namespace blink |