| Index: base/trace_event/process_memory_dump_unittest.cc
|
| diff --git a/base/trace_event/process_memory_dump_unittest.cc b/base/trace_event/process_memory_dump_unittest.cc
|
| index 4bddb6103995c56257c0f1c173cf27d956f4bae7..3f3e88a74c118d7ba9c38c7f1057528637518422 100644
|
| --- a/base/trace_event/process_memory_dump_unittest.cc
|
| +++ b/base/trace_event/process_memory_dump_unittest.cc
|
| @@ -8,10 +8,12 @@
|
|
|
| #include "base/memory/aligned_memory.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/memory/shared_memory_tracker.h"
|
| #include "base/process/process_metrics.h"
|
| #include "base/trace_event/memory_allocator_dump_guid.h"
|
| #include "base/trace_event/memory_infra_background_whitelist.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| +#include "base/unguessable_token.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace base {
|
| @@ -300,6 +302,66 @@ TEST(ProcessMemoryDumpTest, GlobalAllocatorDumpTest) {
|
| ASSERT_EQ(MemoryAllocatorDump::Flags::DEFAULT, shared_mad1->flags());
|
| }
|
|
|
| +TEST(ProcessMemoryDumpTest, OldSharedMemoryOwnershipTest) {
|
| + std::unique_ptr<ProcessMemoryDump> pmd(
|
| + new ProcessMemoryDump(nullptr, kDetailedDumpArgs));
|
| + const ProcessMemoryDump::AllocatorDumpEdgesMap& edges =
|
| + pmd->allocator_dumps_edges_for_testing();
|
| +
|
| + auto* shm_dump1 = pmd->CreateAllocatorDump("shared_mem/seg1");
|
| +
|
| + auto* client_dump1 = pmd->CreateAllocatorDump("discardable/segment1");
|
| + MemoryAllocatorDumpGuid client_global_guid1(1);
|
| + auto shm_token1 = UnguessableToken::Create();
|
| + MemoryAllocatorDumpGuid shm_global_guid1 =
|
| + SharedMemoryTracker::GetGlobalDumpGUIDForTracing(shm_token1);
|
| + pmd->AddOverridableOwnershipEdge(shm_dump1->guid(), shm_global_guid1,
|
| + 0 /* importance */);
|
| +
|
| + pmd->CreateSharedMemoryOwnershipEdge(client_dump1->guid(),
|
| + client_global_guid1, shm_token1,
|
| + 1 /* importance */);
|
| +
|
| + EXPECT_EQ(2u, edges.size());
|
| + EXPECT_EQ(shm_global_guid1, edges.find(shm_dump1->guid())->second.target);
|
| + EXPECT_EQ(0, edges.find(shm_dump1->guid())->second.importance);
|
| + EXPECT_TRUE(edges.find(shm_dump1->guid())->second.overridable);
|
| + EXPECT_EQ(client_global_guid1,
|
| + edges.find(client_dump1->guid())->second.target);
|
| + EXPECT_EQ(1, edges.find(client_dump1->guid())->second.importance);
|
| + EXPECT_FALSE(edges.find(client_dump1->guid())->second.overridable);
|
| +}
|
| +
|
| +TEST(ProcessMemoryDumpTest, NewSharedMemoryOwnershipTest) {
|
| + std::unique_ptr<ProcessMemoryDump> pmd(
|
| + new ProcessMemoryDump(nullptr, kDetailedDumpArgs));
|
| + const ProcessMemoryDump::AllocatorDumpEdgesMap& edges =
|
| + pmd->allocator_dumps_edges_for_testing();
|
| + MemoryAllocatorDumpGuid::SetUseSharedMemoryBasedGUIDsForTesting();
|
| +
|
| + auto* client_dump2 = pmd->CreateAllocatorDump("discardable/segment2");
|
| + MemoryAllocatorDumpGuid client_global_guid2(2);
|
| + auto shm_token2 = UnguessableToken::Create();
|
| + MemoryAllocatorDumpGuid shm_local_guid2 =
|
| + SharedMemoryTracker::GetDumpGUIDForTracing(shm_token2);
|
| + MemoryAllocatorDumpGuid shm_global_guid2 =
|
| + SharedMemoryTracker::GetGlobalDumpGUIDForTracing(shm_token2);
|
| + pmd->AddOverridableOwnershipEdge(shm_local_guid2, shm_global_guid2,
|
| + 0 /* importance */);
|
| +
|
| + pmd->CreateSharedMemoryOwnershipEdge(client_dump2->guid(),
|
| + client_global_guid2, shm_token2,
|
| + 1 /* importance */);
|
| + EXPECT_EQ(2u, edges.size());
|
| +
|
| + EXPECT_EQ(shm_global_guid2, edges.find(shm_local_guid2)->second.target);
|
| + EXPECT_EQ(1, edges.find(shm_local_guid2)->second.importance);
|
| + EXPECT_FALSE(edges.find(shm_local_guid2)->second.overridable);
|
| + EXPECT_EQ(shm_local_guid2, edges.find(client_dump2->guid())->second.target);
|
| + EXPECT_EQ(0, edges.find(client_dump2->guid())->second.importance);
|
| + EXPECT_FALSE(edges.find(client_dump2->guid())->second.overridable);
|
| +}
|
| +
|
| TEST(ProcessMemoryDumpTest, BackgroundModeTest) {
|
| MemoryDumpArgs background_args = {MemoryDumpLevelOfDetail::BACKGROUND};
|
| std::unique_ptr<ProcessMemoryDump> pmd(
|
|
|