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

Side by Side Diff: components/tracing/child_trace_message_filter_browsertest.cc

Issue 1549993003: Switch to standard integer types in components/, part 4 of 4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 months 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 unified diff | Download patch
OLDNEW
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 <stdint.h>
6
5 #include "base/callback.h" 7 #include "base/callback.h"
6 #include "base/run_loop.h" 8 #include "base/run_loop.h"
7 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
8 #include "base/trace_event/memory_dump_manager.h" 10 #include "base/trace_event/memory_dump_manager.h"
9 #include "base/trace_event/memory_dump_provider.h" 11 #include "base/trace_event/memory_dump_provider.h"
10 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
11 #include "components/tracing/child_memory_dump_manager_delegate_impl.h" 13 #include "components/tracing/child_memory_dump_manager_delegate_impl.h"
12 #include "components/tracing/child_trace_message_filter.h" 14 #include "components/tracing/child_trace_message_filter.h"
13 #include "components/tracing/tracing_messages.h" 15 #include "components/tracing/tracing_messages.h"
14 #include "content/public/test/render_view_test.h" 16 #include "content/public/test/render_view_test.h"
(...skipping 14 matching lines...) Expand all
29 class MockDumpProvider : public base::trace_event::MemoryDumpProvider { 31 class MockDumpProvider : public base::trace_event::MemoryDumpProvider {
30 public: 32 public:
31 MOCK_METHOD2(OnMemoryDump, 33 MOCK_METHOD2(OnMemoryDump,
32 bool(const MemoryDumpArgs& args, 34 bool(const MemoryDumpArgs& args,
33 base::trace_event::ProcessMemoryDump* pmd)); 35 base::trace_event::ProcessMemoryDump* pmd));
34 }; 36 };
35 37
36 class ChildTracingTest : public content::RenderViewTest, public IPC::Listener { 38 class ChildTracingTest : public content::RenderViewTest, public IPC::Listener {
37 public: 39 public:
38 // Used as callback argument for MemoryDumpManager::RequestGlobalDump(): 40 // Used as callback argument for MemoryDumpManager::RequestGlobalDump():
39 void OnMemoryDumpCallback(uint64 dump_guid, bool status) { 41 void OnMemoryDumpCallback(uint64_t dump_guid, bool status) {
40 last_callback_dump_guid_ = dump_guid; 42 last_callback_dump_guid_ = dump_guid;
41 last_callback_status_ = status; 43 last_callback_status_ = status;
42 ++callback_call_count_; 44 ++callback_call_count_;
43 } 45 }
44 46
45 protected: 47 protected:
46 void SetUp() override { 48 void SetUp() override {
47 // RenderViewTest::SetUp causes additional registrations, so we first 49 // RenderViewTest::SetUp causes additional registrations, so we first
48 // register the mock dump provider and ignore registrations from then on. 50 // register the mock dump provider and ignore registrations from then on.
49 // In addition to the mock dump provider, the TraceLog has already 51 // In addition to the mock dump provider, the TraceLog has already
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 TracingMsg_BeginTracing msg(trace_config.ToString(), base::TimeTicks(), 0); 119 TracingMsg_BeginTracing msg(trace_config.ToString(), base::TimeTicks(), 0);
118 SimulateSyntheticMessageFromBrowser(msg); 120 SimulateSyntheticMessageFromBrowser(msg);
119 } 121 }
120 122
121 void DisableTracing() { 123 void DisableTracing() {
122 SimulateSyntheticMessageFromBrowser(TracingMsg_EndTracing()); 124 SimulateSyntheticMessageFromBrowser(TracingMsg_EndTracing());
123 } 125 }
124 126
125 // Simulates a synthetic browser -> child process memory dump request and 127 // Simulates a synthetic browser -> child process memory dump request and
126 // checks that the child actually sends a response to that. 128 // checks that the child actually sends a response to that.
127 void RequestProcessMemoryDumpAndCheckResponse(uint64 dump_guid) { 129 void RequestProcessMemoryDumpAndCheckResponse(uint64_t dump_guid) {
128 SimulateSyntheticMessageFromBrowser(TracingMsg_ProcessMemoryDumpRequest( 130 SimulateSyntheticMessageFromBrowser(TracingMsg_ProcessMemoryDumpRequest(
129 {dump_guid, MemoryDumpType::EXPLICITLY_TRIGGERED})); 131 {dump_guid, MemoryDumpType::EXPLICITLY_TRIGGERED}));
130 132
131 // Check that a child -> browser response to the local dump request is sent. 133 // Check that a child -> browser response to the local dump request is sent.
132 const IPC::Message* msg = 134 const IPC::Message* msg =
133 WaitForIPCMessage(TracingHostMsg_ProcessMemoryDumpResponse::ID); 135 WaitForIPCMessage(TracingHostMsg_ProcessMemoryDumpResponse::ID);
134 EXPECT_NE(nullptr, msg); 136 EXPECT_NE(nullptr, msg);
135 137
136 // Check that the |dump_guid| and the |success| fields are properly set. 138 // Check that the |dump_guid| and the |success| fields are properly set.
137 TracingHostMsg_ProcessMemoryDumpResponse::Param params; 139 TracingHostMsg_ProcessMemoryDumpResponse::Param params;
138 TracingHostMsg_ProcessMemoryDumpResponse::Read(msg, &params); 140 TracingHostMsg_ProcessMemoryDumpResponse::Read(msg, &params);
139 const uint64 resp_guid = base::get<0>(params); 141 const uint64_t resp_guid = base::get<0>(params);
140 const bool resp_success = base::get<1>(params); 142 const bool resp_success = base::get<1>(params);
141 EXPECT_EQ(dump_guid, resp_guid); 143 EXPECT_EQ(dump_guid, resp_guid);
142 EXPECT_TRUE(resp_success); 144 EXPECT_TRUE(resp_success);
143 } 145 }
144 146
145 // Retrieves the MemoryDumpRequestArgs of the global memory dump request that 147 // Retrieves the MemoryDumpRequestArgs of the global memory dump request that
146 // this child process tried to send to the browser. Fails if either none or 148 // this child process tried to send to the browser. Fails if either none or
147 // multiple requests were sent. 149 // multiple requests were sent.
148 MemoryDumpRequestArgs GetInterceptedGlobalMemoryDumpRequest() { 150 MemoryDumpRequestArgs GetInterceptedGlobalMemoryDumpRequest() {
149 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 151 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
150 TracingHostMsg_GlobalMemoryDumpRequest::ID); 152 TracingHostMsg_GlobalMemoryDumpRequest::ID);
151 EXPECT_NE(nullptr, msg); 153 EXPECT_NE(nullptr, msg);
152 TracingHostMsg_GlobalMemoryDumpRequest::Param params; 154 TracingHostMsg_GlobalMemoryDumpRequest::Param params;
153 TracingHostMsg_GlobalMemoryDumpRequest::Read(msg, &params); 155 TracingHostMsg_GlobalMemoryDumpRequest::Read(msg, &params);
154 MemoryDumpRequestArgs args = base::get<0>(params); 156 MemoryDumpRequestArgs args = base::get<0>(params);
155 EXPECT_NE(0U, args.dump_guid); 157 EXPECT_NE(0U, args.dump_guid);
156 return args; 158 return args;
157 } 159 }
158 160
159 scoped_refptr<ChildTraceMessageFilter> ctmf_; 161 scoped_refptr<ChildTraceMessageFilter> ctmf_;
160 scoped_ptr<MockDumpProvider> mock_dump_provider_; 162 scoped_ptr<MockDumpProvider> mock_dump_provider_;
161 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 163 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
162 base::trace_event::MemoryDumpCallback callback_; 164 base::trace_event::MemoryDumpCallback callback_;
163 uint32_t wait_for_ipc_message_type_; 165 uint32_t wait_for_ipc_message_type_;
164 base::Closure wait_for_ipc_closure_; 166 base::Closure wait_for_ipc_closure_;
165 uint32 callback_call_count_; 167 uint32_t callback_call_count_;
166 uint64 last_callback_dump_guid_; 168 uint64_t last_callback_dump_guid_;
167 bool last_callback_status_; 169 bool last_callback_status_;
168 }; 170 };
169 171
170 // Covers the case of some browser-initiated memory dumps. 172 // Covers the case of some browser-initiated memory dumps.
171 TEST_F(ChildTracingTest, BrowserInitiatedMemoryDumps) { 173 TEST_F(ChildTracingTest, BrowserInitiatedMemoryDumps) {
172 const uint32 kNumDumps = 3; 174 const uint32_t kNumDumps = 3;
173 175
174 EnableTracingWithMemoryDumps(); 176 EnableTracingWithMemoryDumps();
175 EXPECT_CALL(*mock_dump_provider_, OnMemoryDump(_, _)) 177 EXPECT_CALL(*mock_dump_provider_, OnMemoryDump(_, _))
176 .Times(kNumDumps) 178 .Times(kNumDumps)
177 .WillRepeatedly(Return(true)); 179 .WillRepeatedly(Return(true));
178 180
179 for (uint32 i = 0; i < kNumDumps; ++i) { 181 for (uint32_t i = 0; i < kNumDumps; ++i) {
180 render_thread_->sink().ClearMessages(); 182 render_thread_->sink().ClearMessages();
181 RequestProcessMemoryDumpAndCheckResponse(i + 1); 183 RequestProcessMemoryDumpAndCheckResponse(i + 1);
182 } 184 }
183 185
184 DisableTracing(); 186 DisableTracing();
185 } 187 }
186 188
187 // Covers the case of one simple child-initiated memory dump without callback, 189 // Covers the case of one simple child-initiated memory dump without callback,
188 // simulating a global memory dump request to the browser (+ response). 190 // simulating a global memory dump request to the browser (+ response).
189 TEST_F(ChildTracingTest, SingleChildInitiatedMemoryDump) { 191 TEST_F(ChildTracingTest, SingleChildInitiatedMemoryDump) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 EXPECT_EQ(2u, callback_call_count_); 269 EXPECT_EQ(2u, callback_call_count_);
268 EXPECT_EQ(args.dump_guid, last_callback_dump_guid_); 270 EXPECT_EQ(args.dump_guid, last_callback_dump_guid_);
269 EXPECT_TRUE(last_callback_status_); 271 EXPECT_TRUE(last_callback_status_);
270 272
271 DisableTracing(); 273 DisableTracing();
272 } 274 }
273 275
274 // Covers the case of five child-initiated global memory dumps. Each global dump 276 // Covers the case of five child-initiated global memory dumps. Each global dump
275 // request has a callback, which is expected to fail for 3 out of 5 cases. 277 // request has a callback, which is expected to fail for 3 out of 5 cases.
276 TEST_F(ChildTracingTest, MultipleChildInitiatedMemoryDumpWithFailures) { 278 TEST_F(ChildTracingTest, MultipleChildInitiatedMemoryDumpWithFailures) {
277 const uint32 kNumRequests = 5; 279 const uint32_t kNumRequests = 5;
278 MemoryDumpType kDumpType = MemoryDumpType::EXPLICITLY_TRIGGERED; 280 MemoryDumpType kDumpType = MemoryDumpType::EXPLICITLY_TRIGGERED;
279 281
280 EnableTracingWithMemoryDumps(); 282 EnableTracingWithMemoryDumps();
281 EXPECT_CALL(*mock_dump_provider_, OnMemoryDump(_, _)) 283 EXPECT_CALL(*mock_dump_provider_, OnMemoryDump(_, _))
282 .Times(kNumRequests) 284 .Times(kNumRequests)
283 .WillRepeatedly(Return(true)); 285 .WillRepeatedly(Return(true));
284 286
285 for (uint32 i = 0; i < kNumRequests; ++i) { 287 for (uint32_t i = 0; i < kNumRequests; ++i) {
286 render_thread_->sink().ClearMessages(); 288 render_thread_->sink().ClearMessages();
287 MemoryDumpManager::GetInstance()->RequestGlobalDump( 289 MemoryDumpManager::GetInstance()->RequestGlobalDump(
288 kDumpType, MemoryDumpLevelOfDetail::DETAILED, callback_); 290 kDumpType, MemoryDumpLevelOfDetail::DETAILED, callback_);
289 base::RunLoop().RunUntilIdle(); 291 base::RunLoop().RunUntilIdle();
290 292
291 MemoryDumpRequestArgs args = GetInterceptedGlobalMemoryDumpRequest(); 293 MemoryDumpRequestArgs args = GetInterceptedGlobalMemoryDumpRequest();
292 EXPECT_EQ(kDumpType, args.dump_type); 294 EXPECT_EQ(kDumpType, args.dump_type);
293 RequestProcessMemoryDumpAndCheckResponse(args.dump_guid); 295 RequestProcessMemoryDumpAndCheckResponse(args.dump_guid);
294 296
295 const bool success = (i & 1) ? true : false; 297 const bool success = (i & 1) ? true : false;
296 SimulateSyntheticMessageFromBrowser( 298 SimulateSyntheticMessageFromBrowser(
297 TracingMsg_GlobalMemoryDumpResponse(args.dump_guid, success)); 299 TracingMsg_GlobalMemoryDumpResponse(args.dump_guid, success));
298 EXPECT_EQ(i + 1, callback_call_count_); 300 EXPECT_EQ(i + 1, callback_call_count_);
299 EXPECT_EQ(args.dump_guid, last_callback_dump_guid_); 301 EXPECT_EQ(args.dump_guid, last_callback_dump_guid_);
300 EXPECT_EQ(success, last_callback_status_); 302 EXPECT_EQ(success, last_callback_status_);
301 } 303 }
302 304
303 DisableTracing(); 305 DisableTracing();
304 } 306 }
305 307
306 } // namespace tracing 308 } // namespace tracing
OLDNEW
« no previous file with comments | « components/tracing/child_trace_message_filter.cc ('k') | components/tracing/graphics_memory_dump_provider_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698