Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Unified Diff: net/socket/ssl_client_socket_unittest.cc

Issue 2541093003: Instrument SSL sockets using MemoryDumpProvider (Closed)
Patch Set: rebased Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/socket/ssl_client_socket_unittest.cc
diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc
index b80aa4ddf5af432f12e54a5e7a7012dea7cd1b0a..779ce5c65cedd0708ce1bb249e847b440588ab6a 100644
--- a/net/socket/ssl_client_socket_unittest.cc
+++ b/net/socket/ssl_client_socket_unittest.cc
@@ -18,6 +18,8 @@
#include "base/single_thread_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
+#include "base/trace_event/memory_allocator_dump.h"
+#include "base/trace_event/process_memory_dump.h"
#include "net/base/address_list.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
@@ -3674,4 +3676,61 @@ TEST_F(SSLClientSocketTest, AccessDeniedClientCerts) {
EXPECT_THAT(rv, IsError(ERR_BAD_SSL_CLIENT_AUTH_CERT));
}
+// Basic test for dumping memory stats.
+TEST_F(SSLClientSocketTest, DumpMemoryStats) {
+ ASSERT_TRUE(StartTestServer(SpawnedTestServer::SSLOptions()));
+
+ int rv;
+ ASSERT_TRUE(CreateAndConnectSSLClientSocket(SSLConfig(), &rv));
+ EXPECT_THAT(rv, IsOk());
+
+ 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));
+ base::trace_event::MemoryAllocatorDump* parent_dump1 =
+ process_memory_dump->CreateAllocatorDump("parent1");
+ sock_->DumpMemoryStats(process_memory_dump.get(),
+ parent_dump1->absolute_name());
+
+ // Write the request.
+ std::string request_text = "GET / HTTP/1.1\r\n\r\n";
+ scoped_refptr<IOBuffer> request_buffer(new StringIOBuffer(request_text));
+ TestCompletionCallback write_callback;
+ rv = write_callback.GetResult(sock_->Write(
+ request_buffer.get(), request_text.size(), write_callback.callback()));
+ EXPECT_EQ(static_cast<int>(request_text.size()), rv);
+
+ base::trace_event::MemoryAllocatorDump* parent_dump2 =
+ process_memory_dump->CreateAllocatorDump("parent2");
+ sock_->DumpMemoryStats(process_memory_dump.get(),
+ parent_dump2->absolute_name());
davidben 2016/12/06 01:02:07 I'm not familiar with the MemoryAllocatorDump stuf
xunjieli 2016/12/06 18:36:08 Done. I tried to dump memory multiple times to be
+
+ // Read the response.
+ TestCompletionCallback read_callback;
+ scoped_refptr<IOBuffer> buf(new IOBuffer(4096));
+ rv = sock_->Read(buf.get(), 4096, read_callback.callback());
+ rv = read_callback.WaitForResult();
+ EXPECT_GT(rv, 0);
+
+ base::trace_event::MemoryAllocatorDump* parent_dump3 =
+ process_memory_dump->CreateAllocatorDump("parent3");
+ sock_->DumpMemoryStats(process_memory_dump.get(),
+ parent_dump3->absolute_name());
+
+ const base::trace_event::ProcessMemoryDump::AllocatorDumpsMap&
+ allocator_dumps = process_memory_dump->allocator_dumps();
+ bool did_dump[] = {false, false, false};
+ for (const auto& it : allocator_dumps) {
davidben 2016/12/06 01:02:07 Super nitpicky nitpick: it => pair? it is usually
xunjieli 2016/12/06 18:36:08 Done.
+ const std::string& dump_name = it.first;
+ if (dump_name.find("parent1/ssl_socket") != std::string::npos)
+ did_dump[0] = true;
+ if (dump_name.find("parent2/ssl_socket") != std::string::npos)
+ did_dump[1] = true;
+ if (dump_name.find("parent3/ssl_socket") != std::string::npos)
+ did_dump[2] = true;
+ }
+ EXPECT_THAT(did_dump, testing::ElementsAre(true, true, true));
+}
+
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698