| Index: base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
|
| diff --git a/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc b/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
|
| index 2215edebb56fd5920eb7ccade2bb103f3dd9f165..72cb743ad0c22162c1804d864de9aae68ea329eb 100644
|
| --- a/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
|
| +++ b/base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc
|
| @@ -16,11 +16,11 @@
|
|
|
| // Define all strings once, because the deduplicator requires pointer equality,
|
| // and string interning is unreliable.
|
| -StackFrame kBrowserMain = StackFrame::FromTraceEventName("BrowserMain");
|
| -StackFrame kRendererMain = StackFrame::FromTraceEventName("RendererMain");
|
| -StackFrame kCreateWidget = StackFrame::FromTraceEventName("CreateWidget");
|
| -StackFrame kInitialize = StackFrame::FromTraceEventName("Initialize");
|
| -StackFrame kMalloc = StackFrame::FromTraceEventName("malloc");
|
| +const char kBrowserMain[] = "BrowserMain";
|
| +const char kRendererMain[] = "RendererMain";
|
| +const char kCreateWidget[] = "CreateWidget";
|
| +const char kInitialize[] = "Initialize";
|
| +const char kMalloc[] = "malloc";
|
|
|
| TEST(StackFrameDeduplicatorTest, SingleBacktrace) {
|
| StackFrame bt[] = {kBrowserMain, kCreateWidget, kMalloc};
|
| @@ -39,35 +39,6 @@
|
| ASSERT_EQ(-1, (iter + 0)->parent_frame_index);
|
|
|
| ASSERT_EQ(kCreateWidget, (iter + 1)->frame);
|
| - ASSERT_EQ(0, (iter + 1)->parent_frame_index);
|
| -
|
| - ASSERT_EQ(kMalloc, (iter + 2)->frame);
|
| - ASSERT_EQ(1, (iter + 2)->parent_frame_index);
|
| -
|
| - ASSERT_EQ(iter + 3, dedup->end());
|
| -}
|
| -
|
| -TEST(StackFrameDeduplicatorTest, SingleBacktraceWithNull) {
|
| - StackFrame null_frame = StackFrame::FromTraceEventName(nullptr);
|
| - StackFrame bt[] = {kBrowserMain, null_frame, kMalloc};
|
| -
|
| - // Deduplicator doesn't care about what's inside StackFrames,
|
| - // and handles nullptr StackFrame values as any other.
|
| - //
|
| - // So the call tree should look like this (index in brackets).
|
| - //
|
| - // BrowserMain [0]
|
| - // (null) [1]
|
| - // malloc [2]
|
| -
|
| - std::unique_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
|
| - ASSERT_EQ(2, dedup->Insert(std::begin(bt), std::end(bt)));
|
| -
|
| - auto iter = dedup->begin();
|
| - ASSERT_EQ(kBrowserMain, (iter + 0)->frame);
|
| - ASSERT_EQ(-1, (iter + 0)->parent_frame_index);
|
| -
|
| - ASSERT_EQ(null_frame, (iter + 1)->frame);
|
| ASSERT_EQ(0, (iter + 1)->parent_frame_index);
|
|
|
| ASSERT_EQ(kMalloc, (iter + 2)->frame);
|
| @@ -148,5 +119,17 @@
|
| ASSERT_EQ(dedup->begin() + 3, dedup->end());
|
| }
|
|
|
| +TEST(StackFrameDeduplicatorTest, NullPaddingIsRemoved) {
|
| + StackFrame bt0[] = {kBrowserMain, nullptr, nullptr, nullptr};
|
| +
|
| + std::unique_ptr<StackFrameDeduplicator> dedup(new StackFrameDeduplicator);
|
| +
|
| + // There are four frames in the backtrace, but the null pointers should be
|
| + // skipped, so only one frame is inserted, which will have index 0.
|
| + ASSERT_EQ(4u, arraysize(bt0));
|
| + ASSERT_EQ(0, dedup->Insert(std::begin(bt0), std::end(bt0)));
|
| + ASSERT_EQ(dedup->begin() + 1, dedup->end());
|
| +}
|
| +
|
| } // namespace trace_event
|
| } // namespace base
|
|
|