Index: base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc |
diff --git a/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc b/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc |
index 05c60c722c317cca7bf6e52453a5faba1d7b1903..a39700e4fff4171d6701883d83d6a8ef98a85cdd 100644 |
--- a/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc |
+++ b/base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc |
@@ -33,7 +33,7 @@ void AssertBacktraceEquals(const StackFrame(&expected_backtrace)[N]) { |
->GetContextSnapshot(); |
auto actual = std::begin(ctx.backtrace.frames); |
- auto actual_bottom = std::end(ctx.backtrace.frames); |
+ auto actual_bottom = actual + ctx.backtrace.frame_count; |
Primiano Tucci (use gerrit)
2016/04/14 10:15:33
why do we need this change?
Dmitry Skiba
2016/04/15 07:01:40
Because we want to check only valid frames, within
|
auto expected = std::begin(expected_backtrace); |
auto expected_bottom = std::end(expected_backtrace); |
@@ -53,8 +53,7 @@ void AssertBacktraceEmpty() { |
AllocationContextTracker::GetInstanceForCurrentThread() |
->GetContextSnapshot(); |
- for (StackFrame frame : ctx.backtrace.frames) |
- ASSERT_EQ(nullptr, frame); |
+ ASSERT_EQ(0u, ctx.backtrace.frame_count); |
} |
class AllocationContextTrackerTest : public testing::Test { |
@@ -72,24 +71,22 @@ class AllocationContextTrackerTest : public testing::Test { |
}; |
// Check that |TRACE_EVENT| macros push and pop to the pseudo stack correctly. |
-// Also check that |GetContextSnapshot| fills the backtrace with null pointers |
-// when the pseudo stack height is less than the capacity. |
TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) { |
- StackFrame c = kCupcake; |
- StackFrame d = kDonut; |
- StackFrame e = kEclair; |
- StackFrame f = kFroyo; |
+ StackFrame c = StackFrame::FromTraceEventName(kCupcake); |
+ StackFrame d = StackFrame::FromTraceEventName(kDonut); |
+ StackFrame e = StackFrame::FromTraceEventName(kEclair); |
+ StackFrame f = StackFrame::FromTraceEventName(kFroyo); |
AssertBacktraceEmpty(); |
{ |
TRACE_EVENT0("Testing", kCupcake); |
- StackFrame frame_c[] = {c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
+ StackFrame frame_c[] = {c}; |
AssertBacktraceEquals(frame_c); |
{ |
TRACE_EVENT0("Testing", kDonut); |
- StackFrame frame_cd[] = {c, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
+ StackFrame frame_cd[] = {c, d}; |
AssertBacktraceEquals(frame_cd); |
} |
@@ -97,7 +94,7 @@ TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) { |
{ |
TRACE_EVENT0("Testing", kEclair); |
- StackFrame frame_ce[] = {c, e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
+ StackFrame frame_ce[] = {c, e}; |
AssertBacktraceEquals(frame_ce); |
} |
@@ -108,7 +105,7 @@ TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) { |
{ |
TRACE_EVENT0("Testing", kFroyo); |
- StackFrame frame_f[] = {f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
+ StackFrame frame_f[] = {f}; |
AssertBacktraceEquals(frame_f); |
} |
@@ -118,15 +115,15 @@ TEST_F(AllocationContextTrackerTest, PseudoStackScopedTrace) { |
// Same as |PseudoStackScopedTrace|, but now test the |TRACE_EVENT_BEGIN| and |
// |TRACE_EVENT_END| macros. |
TEST_F(AllocationContextTrackerTest, PseudoStackBeginEndTrace) { |
- StackFrame c = kCupcake; |
- StackFrame d = kDonut; |
- StackFrame e = kEclair; |
- StackFrame f = kFroyo; |
+ StackFrame c = StackFrame::FromTraceEventName(kCupcake); |
+ StackFrame d = StackFrame::FromTraceEventName(kDonut); |
+ StackFrame e = StackFrame::FromTraceEventName(kEclair); |
+ StackFrame f = StackFrame::FromTraceEventName(kFroyo); |
- StackFrame frame_c[] = {c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
- StackFrame frame_cd[] = {c, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
- StackFrame frame_ce[] = {c, e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
- StackFrame frame_f[] = {f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
+ StackFrame frame_c[] = {c}; |
+ StackFrame frame_cd[] = {c, d}; |
+ StackFrame frame_ce[] = {c, e}; |
+ StackFrame frame_f[] = {f}; |
AssertBacktraceEmpty(); |
@@ -156,15 +153,15 @@ TEST_F(AllocationContextTrackerTest, PseudoStackBeginEndTrace) { |
} |
TEST_F(AllocationContextTrackerTest, PseudoStackMixedTrace) { |
- StackFrame c = kCupcake; |
- StackFrame d = kDonut; |
- StackFrame e = kEclair; |
- StackFrame f = kFroyo; |
+ StackFrame c = StackFrame::FromTraceEventName(kCupcake); |
+ StackFrame d = StackFrame::FromTraceEventName(kDonut); |
+ StackFrame e = StackFrame::FromTraceEventName(kEclair); |
+ StackFrame f = StackFrame::FromTraceEventName(kFroyo); |
- StackFrame frame_c[] = {c, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
- StackFrame frame_cd[] = {c, d, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
- StackFrame frame_e[] = {e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
- StackFrame frame_ef[] = {e, f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
+ StackFrame frame_c[] = {c}; |
+ StackFrame frame_cd[] = {c, d}; |
+ StackFrame frame_e[] = {e}; |
+ StackFrame frame_ef[] = {e, f}; |
AssertBacktraceEmpty(); |
@@ -194,6 +191,9 @@ TEST_F(AllocationContextTrackerTest, PseudoStackMixedTrace) { |
} |
TEST_F(AllocationContextTrackerTest, BacktraceTakesTop) { |
+ StackFrame c = StackFrame::FromTraceEventName(kCupcake); |
+ StackFrame f = StackFrame::FromTraceEventName(kFroyo); |
+ |
// Push 12 events onto the pseudo stack. |
TRACE_EVENT0("Testing", kCupcake); |
TRACE_EVENT0("Testing", kCupcake); |
@@ -217,16 +217,16 @@ TEST_F(AllocationContextTrackerTest, BacktraceTakesTop) { |
->GetContextSnapshot(); |
// The pseudo stack relies on pointer equality, not deep string comparisons. |
- ASSERT_EQ(kCupcake, ctx.backtrace.frames[0]); |
- ASSERT_EQ(kFroyo, ctx.backtrace.frames[11]); |
+ ASSERT_EQ(c, ctx.backtrace.frames[0]); |
+ ASSERT_EQ(f, ctx.backtrace.frames[11]); |
} |
{ |
AllocationContext ctx = |
AllocationContextTracker::GetInstanceForCurrentThread() |
->GetContextSnapshot(); |
- ASSERT_EQ(kCupcake, ctx.backtrace.frames[0]); |
- ASSERT_EQ(kFroyo, ctx.backtrace.frames[11]); |
+ ASSERT_EQ(c, ctx.backtrace.frames[0]); |
+ ASSERT_EQ(f, ctx.backtrace.frames[11]); |
} |
} |
@@ -239,8 +239,8 @@ TEST_F(AllocationContextTrackerTest, SetCurrentThreadName) { |
AllocationContext ctx1 = |
AllocationContextTracker::GetInstanceForCurrentThread() |
->GetContextSnapshot(); |
- ASSERT_EQ(kThread1, ctx1.backtrace.frames[0]); |
- ASSERT_EQ(kCupcake, ctx1.backtrace.frames[1]); |
+ ASSERT_EQ(StackFrame::FromThreadName(kThread1), ctx1.backtrace.frames[0]); |
+ ASSERT_EQ(StackFrame::FromTraceEventName(kCupcake), ctx1.backtrace.frames[1]); |
// Test if the thread name is reset. |
const char kThread2[] = "thread2"; |
@@ -248,8 +248,8 @@ TEST_F(AllocationContextTrackerTest, SetCurrentThreadName) { |
AllocationContext ctx2 = |
AllocationContextTracker::GetInstanceForCurrentThread() |
->GetContextSnapshot(); |
- ASSERT_EQ(kThread2, ctx2.backtrace.frames[0]); |
- ASSERT_EQ(kCupcake, ctx2.backtrace.frames[1]); |
+ ASSERT_EQ(StackFrame::FromThreadName(kThread2), ctx2.backtrace.frames[0]); |
+ ASSERT_EQ(StackFrame::FromTraceEventName(kCupcake), ctx2.backtrace.frames[1]); |
} |
TEST_F(AllocationContextTrackerTest, TrackTaskContext) { |