| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/spdy/spdy_session_pool.h" | 5 #include "net/spdy/spdy_session_pool.h" |
| 6 | 6 |
| 7 #include <cstddef> | 7 #include <cstddef> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 // FindAvailableSession should return |session| if called with |url| for which | 664 // FindAvailableSession should return |session| if called with |url| for which |
| 665 // there is no pushed stream on any sessions owned by |spdy_session_pool_|. | 665 // there is no pushed stream on any sessions owned by |spdy_session_pool_|. |
| 666 base::WeakPtr<SpdySession> session2 = | 666 base::WeakPtr<SpdySession> session2 = |
| 667 spdy_session_pool_->FindAvailableSession( | 667 spdy_session_pool_->FindAvailableSession( |
| 668 key, GURL("http://news.example.org/foo.html"), NetLogWithSource()); | 668 key, GURL("http://news.example.org/foo.html"), NetLogWithSource()); |
| 669 EXPECT_EQ(session.get(), session2.get()); | 669 EXPECT_EQ(session.get(), session2.get()); |
| 670 | 670 |
| 671 spdy_session_pool_->CloseCurrentSessions(ERR_ABORTED); | 671 spdy_session_pool_->CloseCurrentSessions(ERR_ABORTED); |
| 672 } | 672 } |
| 673 | 673 |
| 674 TEST_F(SpdySessionPoolTest, DumpMemoryStats) { | 674 class SpdySessionMemoryDumpTest |
| 675 : public SpdySessionPoolTest, |
| 676 public testing::WithParamInterface< |
| 677 base::trace_event::MemoryDumpLevelOfDetail> {}; |
| 678 |
| 679 INSTANTIATE_TEST_CASE_P( |
| 680 /* no prefix */, |
| 681 SpdySessionMemoryDumpTest, |
| 682 ::testing::Values(base::trace_event::MemoryDumpLevelOfDetail::DETAILED, |
| 683 base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND)); |
| 684 |
| 685 TEST_P(SpdySessionMemoryDumpTest, DumpMemoryStats) { |
| 675 SpdySessionKey key(HostPortPair("https://www.example.org", 443), | 686 SpdySessionKey key(HostPortPair("https://www.example.org", 443), |
| 676 ProxyServer::Direct(), PRIVACY_MODE_DISABLED); | 687 ProxyServer::Direct(), PRIVACY_MODE_DISABLED); |
| 677 | 688 |
| 678 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING)}; | 689 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING)}; |
| 679 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 690 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 680 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); | 691 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); |
| 681 session_deps_.socket_factory->AddSocketDataProvider(&data); | 692 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 682 | 693 |
| 683 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | 694 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
| 684 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 695 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 685 | 696 |
| 686 CreateNetworkSession(); | 697 CreateNetworkSession(); |
| 687 | 698 |
| 688 base::WeakPtr<SpdySession> session = | 699 base::WeakPtr<SpdySession> session = |
| 689 CreateSecureSpdySession(http_session_.get(), key, NetLogWithSource()); | 700 CreateSecureSpdySession(http_session_.get(), key, NetLogWithSource()); |
| 690 | 701 |
| 691 // Flush the SpdySession::OnReadComplete() task. | 702 // Flush the SpdySession::OnReadComplete() task. |
| 692 base::RunLoop().RunUntilIdle(); | 703 base::RunLoop().RunUntilIdle(); |
| 693 | 704 |
| 694 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key)); | 705 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key)); |
| 695 base::trace_event::MemoryDumpArgs dump_args = { | 706 base::trace_event::MemoryDumpArgs dump_args = {GetParam()}; |
| 696 base::trace_event::MemoryDumpLevelOfDetail::DETAILED}; | |
| 697 std::unique_ptr<base::trace_event::ProcessMemoryDump> process_memory_dump( | 707 std::unique_ptr<base::trace_event::ProcessMemoryDump> process_memory_dump( |
| 698 new base::trace_event::ProcessMemoryDump(nullptr, dump_args)); | 708 new base::trace_event::ProcessMemoryDump(nullptr, dump_args)); |
| 699 base::trace_event::MemoryAllocatorDump* parent_dump = | 709 base::trace_event::MemoryAllocatorDump* parent_dump = |
| 700 process_memory_dump->CreateAllocatorDump("parent"); | 710 process_memory_dump->CreateAllocatorDump( |
| 711 "net/http_network_session_0x123"); |
| 701 spdy_session_pool_->DumpMemoryStats(process_memory_dump.get(), | 712 spdy_session_pool_->DumpMemoryStats(process_memory_dump.get(), |
| 702 parent_dump->absolute_name()); | 713 parent_dump->absolute_name()); |
| 703 | 714 |
| 704 // Whether SpdySession::DumpMemoryStats() is invoked. | 715 // Whether SpdySession::DumpMemoryStats() is invoked. |
| 705 bool did_dump = false; | 716 bool did_dump = false; |
| 706 const base::trace_event::ProcessMemoryDump::AllocatorDumpsMap& | 717 const base::trace_event::ProcessMemoryDump::AllocatorDumpsMap& |
| 707 allocator_dumps = process_memory_dump->allocator_dumps(); | 718 allocator_dumps = process_memory_dump->allocator_dumps(); |
| 708 for (const auto& pair : allocator_dumps) { | 719 for (const auto& pair : allocator_dumps) { |
| 709 const std::string& dump_name = pair.first; | 720 const std::string& dump_name = pair.first; |
| 710 if (dump_name.find("spdy_session_pool") == std::string::npos) | 721 if (dump_name.find("spdy_session_pool") == std::string::npos) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 721 active_session_count_attr->GetString("value", &active_session_count)); | 732 active_session_count_attr->GetString("value", &active_session_count)); |
| 722 // No created stream so the session should be idle. | 733 // No created stream so the session should be idle. |
| 723 ASSERT_EQ("0", active_session_count); | 734 ASSERT_EQ("0", active_session_count); |
| 724 did_dump = true; | 735 did_dump = true; |
| 725 } | 736 } |
| 726 EXPECT_TRUE(did_dump); | 737 EXPECT_TRUE(did_dump); |
| 727 spdy_session_pool_->CloseCurrentSessions(ERR_ABORTED); | 738 spdy_session_pool_->CloseCurrentSessions(ERR_ABORTED); |
| 728 } | 739 } |
| 729 | 740 |
| 730 } // namespace net | 741 } // namespace net |
| OLD | NEW |