Index: net/ssl/ssl_client_session_cache_unittest.cc |
diff --git a/net/ssl/ssl_client_session_cache_unittest.cc b/net/ssl/ssl_client_session_cache_unittest.cc |
index b3e53469aee04f50866b0fc1cff601667d206891..2f14ae86597a4c1dad691651a7345ccdd797fbb5 100644 |
--- a/net/ssl/ssl_client_session_cache_unittest.cc |
+++ b/net/ssl/ssl_client_session_cache_unittest.cc |
@@ -9,6 +9,8 @@ |
#include "base/strings/string_number_conversions.h" |
#include "base/test/simple_test_clock.h" |
#include "base/time/time.h" |
+#include "base/trace_event/memory_allocator_dump.h" |
+#include "base/trace_event/process_memory_dump.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/boringssl/src/include/openssl/ssl.h" |
@@ -299,4 +301,40 @@ TEST(SSLClientSessionCacheTest, TestFlushOnMemoryNotifications) { |
EXPECT_EQ(0u, cache.size()); |
} |
+// Basic test for dumping memory stats. |
+TEST(SSLClientSessionCacheTest, TestDumpMemoryStats) { |
+ SSLClientSessionCache::Config config; |
+ SSLClientSessionCache cache(config); |
+ |
+ bssl::UniquePtr<SSL_SESSION> session1(SSL_SESSION_new()); |
+ bssl::UniquePtr<SSL_SESSION> session2(SSL_SESSION_new()); |
+ bssl::UniquePtr<SSL_SESSION> session3(SSL_SESSION_new()); |
+ |
+ // Insert three entries. |
+ cache.Insert("key1", session1.get()); |
+ cache.Insert("key2", session2.get()); |
+ cache.Insert("key3", session3.get()); |
+ EXPECT_EQ(session1.get(), cache.Lookup("key1").get()); |
+ EXPECT_EQ(session2.get(), cache.Lookup("key2").get()); |
+ EXPECT_EQ(session3.get(), cache.Lookup("key3").get()); |
+ EXPECT_EQ(3u, cache.size()); |
+ |
+ base::trace_event::MemoryDumpArgs dump_args = { |
+ base::trace_event::MemoryDumpLevelOfDetail::DETAILED}; |
+ std::unique_ptr<base::trace_event::ProcessMemoryDump> process_memory_dump( |
+ new base::trace_event::ProcessMemoryDump(nullptr, dump_args)); |
+ cache.DumpMemoryStats(process_memory_dump.get()); |
+ |
+ const base::trace_event::ProcessMemoryDump::AllocatorDumpsMap& |
+ allocator_dumps = process_memory_dump->allocator_dumps(); |
+ |
+ size_t num_entry_dump = 0; |
+ for (const auto& pair : allocator_dumps) { |
+ const std::string& dump_name = pair.first; |
+ if (dump_name.find("net/ssl_session_cache/entry") != std::string::npos) |
+ num_entry_dump++; |
+ } |
+ ASSERT_EQ(3u, num_entry_dump); |
+} |
+ |
} // namespace net |