OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/debug/thread_heap_usage_tracker.h" | 5 #include "base/debug/thread_heap_usage_tracker.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/allocator/allocator_shim.h" | 9 #include "base/allocator/allocator_shim.h" |
10 #include "base/allocator/features.h" | 10 #include "base/allocator/features.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
| 13 #if defined(OS_MACOSX) |
| 14 #include "base/allocator/allocator_interception_mac.h" |
| 15 #endif |
| 16 |
13 namespace base { | 17 namespace base { |
14 namespace debug { | 18 namespace debug { |
15 | 19 |
16 namespace { | 20 namespace { |
17 | 21 |
18 class TestingThreadHeapUsageTracker : public ThreadHeapUsageTracker { | 22 class TestingThreadHeapUsageTracker : public ThreadHeapUsageTracker { |
19 public: | 23 public: |
20 using ThreadHeapUsageTracker::DisableHeapTrackingForTesting; | 24 using ThreadHeapUsageTracker::DisableHeapTrackingForTesting; |
21 using ThreadHeapUsageTracker::EnsureTLSInitialized; | 25 using ThreadHeapUsageTracker::EnsureTLSInitialized; |
22 using ThreadHeapUsageTracker::GetDispatchForTesting; | 26 using ThreadHeapUsageTracker::GetDispatchForTesting; |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 estimate = MockGetSizeEstimate(alloc); | 547 estimate = MockGetSizeEstimate(alloc); |
544 ASSERT_TRUE(estimate == 0 || estimate >= kAllocSize); | 548 ASSERT_TRUE(estimate == 0 || estimate >= kAllocSize); |
545 | 549 |
546 alloc = MockRealloc(alloc, kAllocSize); | 550 alloc = MockRealloc(alloc, kAllocSize); |
547 estimate = MockGetSizeEstimate(alloc); | 551 estimate = MockGetSizeEstimate(alloc); |
548 ASSERT_TRUE(estimate == 0 || estimate >= kAllocSize); | 552 ASSERT_TRUE(estimate == 0 || estimate >= kAllocSize); |
549 MockFree(alloc); | 553 MockFree(alloc); |
550 } | 554 } |
551 | 555 |
552 #if BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) | 556 #if BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) |
553 TEST(ThreadHeapUsageShimTest, HooksIntoMallocWhenShimAvailable) { | 557 class ThreadHeapUsageShimTest : public testing::Test { |
554 #if defined(OS_MACOSX) | 558 #if defined(OS_MACOSX) |
555 allocator::InitializeAllocatorShim(); | 559 void SetUp() override { allocator::InitializeAllocatorShim(); } |
| 560 void TearDown() override { allocator::UninterceptMallocZonesForTesting(); } |
556 #endif | 561 #endif |
| 562 }; |
557 | 563 |
| 564 TEST_F(ThreadHeapUsageShimTest, HooksIntoMallocWhenShimAvailable) { |
558 ASSERT_FALSE(ThreadHeapUsageTracker::IsHeapTrackingEnabled()); | 565 ASSERT_FALSE(ThreadHeapUsageTracker::IsHeapTrackingEnabled()); |
559 | 566 |
560 ThreadHeapUsageTracker::EnableHeapTracking(); | 567 ThreadHeapUsageTracker::EnableHeapTracking(); |
561 | 568 |
562 ASSERT_TRUE(ThreadHeapUsageTracker::IsHeapTrackingEnabled()); | 569 ASSERT_TRUE(ThreadHeapUsageTracker::IsHeapTrackingEnabled()); |
563 | 570 |
564 const size_t kAllocSize = 9993; | 571 const size_t kAllocSize = 9993; |
565 // This test verifies that the scoped heap data is affected by malloc & | 572 // This test verifies that the scoped heap data is affected by malloc & |
566 // free only when the shim is available. | 573 // free only when the shim is available. |
567 ThreadHeapUsageTracker usage_tracker; | 574 ThreadHeapUsageTracker usage_tracker; |
(...skipping 23 matching lines...) Expand all Loading... |
591 EXPECT_LE(u2.free_ops + 1, u3.free_ops); | 598 EXPECT_LE(u2.free_ops + 1, u3.free_ops); |
592 | 599 |
593 TestingThreadHeapUsageTracker::DisableHeapTrackingForTesting(); | 600 TestingThreadHeapUsageTracker::DisableHeapTrackingForTesting(); |
594 | 601 |
595 ASSERT_FALSE(ThreadHeapUsageTracker::IsHeapTrackingEnabled()); | 602 ASSERT_FALSE(ThreadHeapUsageTracker::IsHeapTrackingEnabled()); |
596 } | 603 } |
597 #endif // BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) | 604 #endif // BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) |
598 | 605 |
599 } // namespace debug | 606 } // namespace debug |
600 } // namespace base | 607 } // namespace base |
OLD | NEW |