OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "net/ssl/ssl_client_session_cache.h" | 5 #include "net/ssl/ssl_client_session_cache.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/test/simple_test_clock.h" | 10 #include "base/test/simple_test_clock.h" |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 EXPECT_TRUE(cache.Lookup("key2", nullptr)); | 334 EXPECT_TRUE(cache.Lookup("key2", nullptr)); |
335 EXPECT_EQ(1u, cache.size()); | 335 EXPECT_EQ(1u, cache.size()); |
336 | 336 |
337 // Fire notification that will flush everything. | 337 // Fire notification that will flush everything. |
338 base::MemoryPressureListener::NotifyMemoryPressure( | 338 base::MemoryPressureListener::NotifyMemoryPressure( |
339 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); | 339 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); |
340 base::RunLoop().RunUntilIdle(); | 340 base::RunLoop().RunUntilIdle(); |
341 EXPECT_EQ(0u, cache.size()); | 341 EXPECT_EQ(0u, cache.size()); |
342 } | 342 } |
343 | 343 |
| 344 class SSLClientSessionCacheMemoryDumpTest |
| 345 : public testing::TestWithParam< |
| 346 base::trace_event::MemoryDumpLevelOfDetail> {}; |
| 347 |
| 348 INSTANTIATE_TEST_CASE_P( |
| 349 /* no prefix */, |
| 350 SSLClientSessionCacheMemoryDumpTest, |
| 351 ::testing::Values(base::trace_event::MemoryDumpLevelOfDetail::DETAILED, |
| 352 base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND)); |
| 353 |
344 // Basic test for dumping memory stats. | 354 // Basic test for dumping memory stats. |
345 TEST(SSLClientSessionCacheTest, TestDumpMemoryStats) { | 355 TEST_P(SSLClientSessionCacheMemoryDumpTest, TestDumpMemoryStats) { |
346 SSLClientSessionCache::Config config; | 356 SSLClientSessionCache::Config config; |
347 SSLClientSessionCache cache(config); | 357 SSLClientSessionCache cache(config); |
348 | 358 |
349 bssl::UniquePtr<SSL_SESSION> session1(SSL_SESSION_new()); | 359 bssl::UniquePtr<SSL_SESSION> session1(SSL_SESSION_new()); |
350 bssl::UniquePtr<SSL_SESSION> session2(SSL_SESSION_new()); | 360 bssl::UniquePtr<SSL_SESSION> session2(SSL_SESSION_new()); |
351 bssl::UniquePtr<SSL_SESSION> session3(SSL_SESSION_new()); | 361 bssl::UniquePtr<SSL_SESSION> session3(SSL_SESSION_new()); |
352 | 362 |
353 // Insert three entries. | 363 // Insert three entries. |
354 cache.Insert("key1", session1.get()); | 364 cache.Insert("key1", session1.get()); |
355 cache.Insert("key2", session2.get()); | 365 cache.Insert("key2", session2.get()); |
356 cache.Insert("key3", session3.get()); | 366 cache.Insert("key3", session3.get()); |
357 EXPECT_EQ(session1.get(), cache.Lookup("key1", nullptr).get()); | 367 EXPECT_EQ(session1.get(), cache.Lookup("key1", nullptr).get()); |
358 EXPECT_EQ(session2.get(), cache.Lookup("key2", nullptr).get()); | 368 EXPECT_EQ(session2.get(), cache.Lookup("key2", nullptr).get()); |
359 EXPECT_EQ(session3.get(), cache.Lookup("key3", nullptr).get()); | 369 EXPECT_EQ(session3.get(), cache.Lookup("key3", nullptr).get()); |
360 EXPECT_EQ(3u, cache.size()); | 370 EXPECT_EQ(3u, cache.size()); |
361 | 371 |
362 base::trace_event::MemoryDumpArgs dump_args = { | 372 base::trace_event::MemoryDumpArgs dump_args = {GetParam()}; |
363 base::trace_event::MemoryDumpLevelOfDetail::DETAILED}; | |
364 std::unique_ptr<base::trace_event::ProcessMemoryDump> process_memory_dump( | 373 std::unique_ptr<base::trace_event::ProcessMemoryDump> process_memory_dump( |
365 new base::trace_event::ProcessMemoryDump(nullptr, dump_args)); | 374 new base::trace_event::ProcessMemoryDump(nullptr, dump_args)); |
366 cache.DumpMemoryStats(process_memory_dump.get()); | 375 cache.DumpMemoryStats(process_memory_dump.get()); |
367 | 376 |
368 const base::trace_event::MemoryAllocatorDump* dump = | 377 const base::trace_event::MemoryAllocatorDump* dump = |
369 process_memory_dump->GetAllocatorDump("net/ssl_session_cache"); | 378 process_memory_dump->GetAllocatorDump("net/ssl_session_cache"); |
370 ASSERT_NE(nullptr, dump); | 379 ASSERT_NE(nullptr, dump); |
371 std::unique_ptr<base::Value> raw_attrs = | 380 std::unique_ptr<base::Value> raw_attrs = |
372 dump->attributes_for_testing()->ToBaseValue(); | 381 dump->attributes_for_testing()->ToBaseValue(); |
373 base::DictionaryValue* attrs; | 382 base::DictionaryValue* attrs; |
374 ASSERT_TRUE(raw_attrs->GetAsDictionary(&attrs)); | 383 ASSERT_TRUE(raw_attrs->GetAsDictionary(&attrs)); |
375 ASSERT_TRUE(attrs->HasKey("cert_count")); | 384 ASSERT_TRUE(attrs->HasKey("cert_count")); |
376 ASSERT_TRUE(attrs->HasKey("cert_size")); | 385 ASSERT_TRUE(attrs->HasKey("cert_size")); |
377 ASSERT_TRUE(attrs->HasKey(base::trace_event::MemoryAllocatorDump::kNameSize)); | 386 ASSERT_TRUE(attrs->HasKey(base::trace_event::MemoryAllocatorDump::kNameSize)); |
378 } | 387 } |
379 | 388 |
380 } // namespace net | 389 } // namespace net |
OLD | NEW |