Index: content/child/web_process_memory_dump_impl_unittest.cc |
diff --git a/content/child/web_process_memory_dump_impl_unittest.cc b/content/child/web_process_memory_dump_impl_unittest.cc |
deleted file mode 100644 |
index 98860ff3af1aecc41a244a64a024c65183c4f949..0000000000000000000000000000000000000000 |
--- a/content/child/web_process_memory_dump_impl_unittest.cc |
+++ /dev/null |
@@ -1,124 +0,0 @@ |
-// Copyright 2015 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 "content/child/web_process_memory_dump_impl.h" |
- |
-#include "base/trace_event/memory_allocator_dump.h" |
-#include "base/trace_event/process_memory_dump.h" |
-#include "base/trace_event/trace_event_argument.h" |
-#include "base/values.h" |
-#include "content/child/web_memory_allocator_dump_impl.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace content { |
- |
-// Tests that the Chromium<>Blink plumbing that exposes the MemoryInfra classes |
-// behaves correctly, performs the right transfers of memory ownerships and |
-// doesn't leak objects. |
-TEST(WebProcessMemoryDumpImplTest, IntegrationTest) { |
- scoped_refptr<base::trace_event::TracedValue> traced_value( |
- new base::trace_event::TracedValue()); |
- |
- scoped_ptr<WebProcessMemoryDumpImpl> wpmd1(new WebProcessMemoryDumpImpl()); |
- auto wmad1 = wpmd1->createMemoryAllocatorDump("1/1"); |
- auto wmad2 = wpmd1->createMemoryAllocatorDump("1/2"); |
- ASSERT_EQ(wmad1, wpmd1->getMemoryAllocatorDump("1/1")); |
- ASSERT_EQ(wmad2, wpmd1->getMemoryAllocatorDump("1/2")); |
- |
- scoped_ptr<WebProcessMemoryDumpImpl> wpmd2(new WebProcessMemoryDumpImpl()); |
- wpmd2->createMemoryAllocatorDump("2/1"); |
- wpmd2->createMemoryAllocatorDump("2/2"); |
- |
- wpmd1->takeAllDumpsFrom(wpmd2.get()); |
- |
- // Make sure that wpmd2 still owns its own PMD, even if empty. |
- ASSERT_NE(static_cast<base::trace_event::ProcessMemoryDump*>(nullptr), |
- wpmd2->process_memory_dump_); |
- ASSERT_EQ(wpmd2->owned_process_memory_dump_.get(), |
- wpmd2->process_memory_dump()); |
- ASSERT_TRUE(wpmd2->process_memory_dump()->allocator_dumps().empty()); |
- |
- // Make sure that wpmd2 is still usable after it has been emptied. |
- auto wmad = wpmd2->createMemoryAllocatorDump("2/new"); |
- wmad->addScalar("attr_name", "bytes", 42); |
- wmad->addScalarF("attr_name_2", "rate", 42.0f); |
- ASSERT_EQ(1u, wpmd2->process_memory_dump()->allocator_dumps().size()); |
- auto mad = wpmd2->process_memory_dump()->GetAllocatorDump("2/new"); |
- ASSERT_NE(static_cast<base::trace_event::MemoryAllocatorDump*>(nullptr), mad); |
- ASSERT_EQ(wmad, wpmd2->getMemoryAllocatorDump("2/new")); |
- |
- // Check that the attributes are propagated correctly. |
- auto raw_attrs = mad->attributes_for_testing()->ToBaseValue(); |
- base::DictionaryValue* attrs = nullptr; |
- ASSERT_TRUE(raw_attrs->GetAsDictionary(&attrs)); |
- base::DictionaryValue* attr = nullptr; |
- ASSERT_TRUE(attrs->GetDictionary("attr_name", &attr)); |
- std::string attr_value; |
- ASSERT_TRUE(attr->GetString("type", &attr_value)); |
- ASSERT_EQ(base::trace_event::MemoryAllocatorDump::kTypeScalar, attr_value); |
- ASSERT_TRUE(attr->GetString("units", &attr_value)); |
- ASSERT_EQ("bytes", attr_value); |
- |
- ASSERT_TRUE(attrs->GetDictionary("attr_name_2", &attr)); |
- ASSERT_TRUE(attr->GetString("type", &attr_value)); |
- ASSERT_EQ(base::trace_event::MemoryAllocatorDump::kTypeScalar, attr_value); |
- ASSERT_TRUE(attr->GetString("units", &attr_value)); |
- ASSERT_EQ("rate", attr_value); |
- ASSERT_TRUE(attr->HasKey("value")); |
- |
- // Check that AsValueInto() doesn't cause a crash. |
- wpmd2->process_memory_dump()->AsValueInto(traced_value.get()); |
- |
- // Free the |wpmd2| to check that the memory ownership of the two MAD(s) |
- // has been transferred to |wpmd1|. |
- wpmd2.reset(); |
- |
- // Now check that |wpmd1| has been effectively merged. |
- ASSERT_EQ(4u, wpmd1->process_memory_dump()->allocator_dumps().size()); |
- ASSERT_EQ(1u, wpmd1->process_memory_dump()->allocator_dumps().count("1/1")); |
- ASSERT_EQ(1u, wpmd1->process_memory_dump()->allocator_dumps().count("1/2")); |
- ASSERT_EQ(1u, wpmd1->process_memory_dump()->allocator_dumps().count("2/1")); |
- ASSERT_EQ(1u, wpmd1->process_memory_dump()->allocator_dumps().count("1/2")); |
- |
- // Check that also the WMAD wrappers got merged. |
- blink::WebMemoryAllocatorDump* null_wmad = nullptr; |
- ASSERT_NE(null_wmad, wpmd1->getMemoryAllocatorDump("1/1")); |
- ASSERT_NE(null_wmad, wpmd1->getMemoryAllocatorDump("1/2")); |
- ASSERT_NE(null_wmad, wpmd1->getMemoryAllocatorDump("2/1")); |
- ASSERT_NE(null_wmad, wpmd1->getMemoryAllocatorDump("2/2")); |
- |
- // Check that AsValueInto() doesn't cause a crash. |
- traced_value = new base::trace_event::TracedValue(); |
- wpmd1->process_memory_dump()->AsValueInto(traced_value.get()); |
- |
- // Check that clear() actually works. |
- wpmd1->clear(); |
- ASSERT_TRUE(wpmd1->process_memory_dump()->allocator_dumps().empty()); |
- ASSERT_EQ(nullptr, wpmd1->process_memory_dump()->GetAllocatorDump("1/1")); |
- ASSERT_EQ(nullptr, wpmd1->process_memory_dump()->GetAllocatorDump("2/1")); |
- |
- // Check that AsValueInto() doesn't cause a crash. |
- traced_value = new base::trace_event::TracedValue(); |
- wpmd1->process_memory_dump()->AsValueInto(traced_value.get()); |
- |
- // Check if a WebMemoryAllocatorDump created with guid, has correct guid. |
- blink::WebMemoryAllocatorDumpGuid guid = |
- base::trace_event::MemoryAllocatorDumpGuid("id_1").ToUint64(); |
- auto wmad3 = wpmd1->createMemoryAllocatorDump("1/3", guid); |
- ASSERT_EQ(wmad3->guid(), guid); |
- ASSERT_EQ(wmad3, wpmd1->getMemoryAllocatorDump("1/3")); |
- |
- // Check that AddOwnershipEdge is propagated correctly. |
- auto wmad4 = wpmd1->createMemoryAllocatorDump("1/4"); |
- wpmd1->addOwnershipEdge(wmad4->guid(), guid); |
- auto allocator_dumps_edges = |
- wpmd1->process_memory_dump()->allocator_dumps_edges(); |
- ASSERT_EQ(1u, allocator_dumps_edges.size()); |
- ASSERT_EQ(wmad4->guid(), allocator_dumps_edges[0].source.ToUint64()); |
- ASSERT_EQ(guid, allocator_dumps_edges[0].target.ToUint64()); |
- |
- wpmd1.reset(); |
-} |
- |
-} // namespace content |