Chromium Code Reviews| Index: base/debug/trace_event_system_stats_monitor_unittest.cc |
| diff --git a/base/debug/trace_event_system_stats_monitor_unittest.cc b/base/debug/trace_event_system_stats_monitor_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0c027a4dd77c42003b6c31f4695d49dd1537d429 |
| --- /dev/null |
| +++ b/base/debug/trace_event_system_stats_monitor_unittest.cc |
| @@ -0,0 +1,65 @@ |
| +// Copyright 2013 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 "base/debug/trace_event_system_stats_monitor.h" |
| + |
| +#include <sstream> |
| +#include <string> |
| + |
| +#include "base/debug/trace_event_impl.h" |
| +#include "base/message_loop/message_loop.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
|
darin (slow to review)
2013/09/12 20:51:15
nit: extra new line
jwmak
2013/09/13 20:57:11
Done.
|
| + |
| +namespace base { |
| +namespace debug { |
| + |
| +// Tests for the system stats monitor. |
| +// Exists as a class so it can be a friend of TraceEventSystemStatsMonitor. |
| +class TraceSystemStatsMonitorTest : public testing::Test { |
| + public: |
| + TraceSystemStatsMonitorTest() {} |
| + virtual ~TraceSystemStatsMonitorTest() {} |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(TraceSystemStatsMonitorTest); |
| +}; |
| + |
| +////////////////////////////////////////////////////////////////////////////// |
| + |
| +TEST_F(TraceSystemStatsMonitorTest, TraceEventSystemStatsMonitor) { |
| + MessageLoop message_loop; |
| + |
| + // Start with no observers of the TraceLog. |
| + EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); |
| + |
| + // Creating a system stats monitor adds it to the TraceLog observer list. |
| + scoped_ptr<TraceEventSystemStatsMonitor> system_stats_monitor( |
| + new TraceEventSystemStatsMonitor( |
| + message_loop.message_loop_proxy())); |
| + EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); |
| + EXPECT_TRUE( |
| + TraceLog::GetInstance()->HasEnabledStateObserver( |
| + system_stats_monitor.get())); |
| + |
| + // By default the observer isn't dumping memory profiles. |
| + EXPECT_FALSE(system_stats_monitor->IsTimerRunningForTest()); |
| + |
| + // Simulate enabling tracing. |
| + system_stats_monitor->StartProfiling(); |
| + message_loop.RunUntilIdle(); |
| + EXPECT_TRUE(system_stats_monitor->IsTimerRunningForTest()); |
| + |
| + // Simulate disabling tracing. |
| + system_stats_monitor->StopProfiling(); |
| + message_loop.RunUntilIdle(); |
| + EXPECT_FALSE(system_stats_monitor->IsTimerRunningForTest()); |
| + |
| + // Deleting the observer removes it from the TraceLog observer list. |
| + system_stats_monitor.reset(); |
| + EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); |
| +} |
| + |
| +} // namespace debug |
| +} // namespace base |