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..5cc2a0fd383f7f67bc7b6ff124767a9ee0b613f2 |
--- /dev/null |
+++ b/base/debug/trace_event_system_stats_monitor_unittest.cc |
@@ -0,0 +1,66 @@ |
+// 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" |
+ |
+namespace base { |
+namespace debug { |
+ |
+#if !defined(OS_IOS) |
+// 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()); |
+} |
+#endif // !defined(OS_IOS) |
+ |
+} // namespace debug |
+} // namespace base |