diff options
author | ssid <ssid@chromium.org> | 2015-01-27 05:14:07 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-27 13:16:19 +0000 |
commit | a59d4277a6a82b3f379cf742f7320d9a6f3801ce (patch) | |
tree | bd724eff37826b58a56614236e996a368cb56f1c /base/debug/trace_event_memory_unittest.cc | |
parent | 454b4e532e491f2582029994ae263623ae58317d (diff) | |
download | chromium_src-a59d4277a6a82b3f379cf742f7320d9a6f3801ce.zip chromium_src-a59d4277a6a82b3f379cf742f7320d9a6f3801ce.tar.gz chromium_src-a59d4277a6a82b3f379cf742f7320d9a6f3801ce.tar.bz2 |
Move base/debug/trace_event* to base/trace_event/ [part 1]
Trace Event used to be a single file, base/debug/trace_event.h. Then we
added more functionality, so it was base/debug/trace_event*.*
For many years, we have had per-file OWNERS for Trace Event based off
of trace_event*. This let us do trace_event improvements/iteration out
of band with the much slower base/OWNERS process.
But, this leads to a lot of poor filename choices for tracing related
features, specifically to fall under trace event reviewers instead of
base/ reviewers. That's clearly wrong.
BUG=451032
Review URL: https://codereview.chromium.org/837303004
Cr-Commit-Position: refs/heads/master@{#313266}
Diffstat (limited to 'base/debug/trace_event_memory_unittest.cc')
-rw-r--r-- | base/debug/trace_event_memory_unittest.cc | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/base/debug/trace_event_memory_unittest.cc b/base/debug/trace_event_memory_unittest.cc deleted file mode 100644 index 12135b8..0000000 --- a/base/debug/trace_event_memory_unittest.cc +++ /dev/null @@ -1,240 +0,0 @@ -// 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_memory.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" - -#if defined(TCMALLOC_TRACE_MEMORY_SUPPORTED) -#include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h" -#endif - -namespace base { -namespace debug { - -// Tests for the trace event memory tracking system. Exists as a class so it -// can be a friend of TraceMemoryController. -class TraceMemoryTest : public testing::Test { - public: - TraceMemoryTest() {} - ~TraceMemoryTest() override {} - - private: - DISALLOW_COPY_AND_ASSIGN(TraceMemoryTest); -}; - -////////////////////////////////////////////////////////////////////////////// - -#if defined(TCMALLOC_TRACE_MEMORY_SUPPORTED) - -TEST_F(TraceMemoryTest, TraceMemoryController) { - MessageLoop message_loop; - - // Start with no observers of the TraceLog. - EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); - - // Creating a controller adds it to the TraceLog observer list. - scoped_ptr<TraceMemoryController> controller( - new TraceMemoryController( - message_loop.message_loop_proxy(), - ::HeapProfilerWithPseudoStackStart, - ::HeapProfilerStop, - ::GetHeapProfile)); - EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); - EXPECT_TRUE( - TraceLog::GetInstance()->HasEnabledStateObserver(controller.get())); - - // By default the observer isn't dumping memory profiles. - EXPECT_FALSE(controller->IsTimerRunningForTest()); - - // Simulate enabling tracing. - controller->StartProfiling(); - message_loop.RunUntilIdle(); - EXPECT_TRUE(controller->IsTimerRunningForTest()); - - // Simulate disabling tracing. - controller->StopProfiling(); - message_loop.RunUntilIdle(); - EXPECT_FALSE(controller->IsTimerRunningForTest()); - - // Deleting the observer removes it from the TraceLog observer list. - controller.reset(); - EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); -} - -TEST_F(TraceMemoryTest, ScopedTraceMemory) { - ScopedTraceMemory::InitForTest(); - - // Start with an empty stack. - EXPECT_EQ(0, ScopedTraceMemory::GetStackDepthForTest()); - - { - // Push an item. - ScopedTraceMemory scope1("cat1", "name1"); - EXPECT_EQ(1, ScopedTraceMemory::GetStackDepthForTest()); - EXPECT_EQ("cat1", ScopedTraceMemory::GetScopeDataForTest(0).category); - EXPECT_EQ("name1", ScopedTraceMemory::GetScopeDataForTest(0).name); - - { - // One more item. - ScopedTraceMemory scope2("cat2", "name2"); - EXPECT_EQ(2, ScopedTraceMemory::GetStackDepthForTest()); - EXPECT_EQ("cat2", ScopedTraceMemory::GetScopeDataForTest(1).category); - EXPECT_EQ("name2", ScopedTraceMemory::GetScopeDataForTest(1).name); - } - - // Ended scope 2. - EXPECT_EQ(1, ScopedTraceMemory::GetStackDepthForTest()); - } - - // Ended scope 1. - EXPECT_EQ(0, ScopedTraceMemory::GetStackDepthForTest()); - - ScopedTraceMemory::CleanupForTest(); -} - -void TestDeepScopeNesting(int current, int depth) { - EXPECT_EQ(current, ScopedTraceMemory::GetStackDepthForTest()); - ScopedTraceMemory scope("category", "name"); - if (current < depth) - TestDeepScopeNesting(current + 1, depth); - EXPECT_EQ(current + 1, ScopedTraceMemory::GetStackDepthForTest()); -} - -TEST_F(TraceMemoryTest, DeepScopeNesting) { - ScopedTraceMemory::InitForTest(); - - // Ensure really deep scopes don't crash. - TestDeepScopeNesting(0, 100); - - ScopedTraceMemory::CleanupForTest(); -} - -#endif // defined(TRACE_MEMORY_SUPPORTED) - -///////////////////////////////////////////////////////////////////////////// - -TEST_F(TraceMemoryTest, AppendHeapProfileTotalsAsTraceFormat) { - // Empty input gives empty output. - std::string empty_output; - AppendHeapProfileTotalsAsTraceFormat("", &empty_output); - EXPECT_EQ("", empty_output); - - // Typical case. - const char input[] = - "heap profile: 357: 55227 [ 14653: 2624014] @ heapprofile"; - const std::string kExpectedOutput = - "{\"current_allocs\": 357, \"current_bytes\": 55227, \"trace\": \"\"}"; - std::string output; - AppendHeapProfileTotalsAsTraceFormat(input, &output); - EXPECT_EQ(kExpectedOutput, output); -} - -TEST_F(TraceMemoryTest, AppendHeapProfileLineAsTraceFormat) { - // Empty input gives empty output. - std::string empty_output; - EXPECT_FALSE(AppendHeapProfileLineAsTraceFormat("", &empty_output)); - EXPECT_EQ("", empty_output); - - // Invalid input returns false. - std::string junk_output; - EXPECT_FALSE(AppendHeapProfileLineAsTraceFormat("junk", &junk_output)); - - // Input with normal category and name entries. - const char kCategory[] = "category"; - const char kName[] = "name"; - std::ostringstream input; - input << " 68: 4195 [ 1087: 98009] @ " << &kCategory << " " - << &kName; - const std::string kExpectedOutput = - ",\n" - "{" - "\"current_allocs\": 68, " - "\"current_bytes\": 4195, " - "\"trace\": \"name \"" - "}"; - std::string output; - EXPECT_TRUE( - AppendHeapProfileLineAsTraceFormat(input.str().c_str(), &output)); - EXPECT_EQ(kExpectedOutput, output); - - // Input with with the category "toplevel". - // TODO(jamescook): Eliminate this special case and move the logic to the - // trace viewer code. - const char kTaskCategory[] = "toplevel"; - const char kTaskName[] = "TaskName"; - std::ostringstream input2; - input2 << " 68: 4195 [ 1087: 98009] @ " << &kTaskCategory << " " - << &kTaskName; - const std::string kExpectedOutput2 = - ",\n" - "{" - "\"current_allocs\": 68, " - "\"current_bytes\": 4195, " - "\"trace\": \"TaskName->PostTask \"" - "}"; - std::string output2; - EXPECT_TRUE( - AppendHeapProfileLineAsTraceFormat(input2.str().c_str(), &output2)); - EXPECT_EQ(kExpectedOutput2, output2); - - // Zero current allocations is skipped. - std::ostringstream zero_input; - zero_input << " 0: 0 [ 1087: 98009] @ " << &kCategory << " " - << &kName; - std::string zero_output; - EXPECT_FALSE(AppendHeapProfileLineAsTraceFormat(zero_input.str().c_str(), - &zero_output)); - EXPECT_EQ("", zero_output); -} - -TEST_F(TraceMemoryTest, AppendHeapProfileAsTraceFormat) { - // Empty input gives empty output. - std::string empty_output; - AppendHeapProfileAsTraceFormat("", &empty_output); - EXPECT_EQ("", empty_output); - - // Typical case. - const char input[] = - "heap profile: 357: 55227 [ 14653: 2624014] @ heapprofile\n" - " 95: 40940 [ 649: 114260] @\n" - " 77: 32546 [ 742: 106234] @ 0x0 0x0\n" - " 0: 0 [ 132: 4236] @ 0x0\n" - "\n" - "MAPPED_LIBRARIES:\n" - "1be411fc1000-1be4139e4000 rw-p 00000000 00:00 0\n" - "1be4139e4000-1be4139e5000 ---p 00000000 00:00 0\n"; - const std::string kExpectedOutput = - "[{" - "\"current_allocs\": 357, " - "\"current_bytes\": 55227, " - "\"trace\": \"\"},\n" - "{\"current_allocs\": 95, " - "\"current_bytes\": 40940, " - "\"trace\": \"\"},\n" - "{\"current_allocs\": 77, " - "\"current_bytes\": 32546, " - "\"trace\": \"null \"" - "}]\n"; - std::string output; - AppendHeapProfileAsTraceFormat(input, &output); - EXPECT_EQ(kExpectedOutput, output); -} - -TEST_F(TraceMemoryTest, StringFromHexAddress) { - EXPECT_STREQ("null", StringFromHexAddress("0x0")); - EXPECT_STREQ("error", StringFromHexAddress("not an address")); - const char kHello[] = "hello"; - std::ostringstream hex_address; - hex_address << &kHello; - EXPECT_STREQ(kHello, StringFromHexAddress(hex_address.str())); -} - -} // namespace debug -} // namespace base |