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

Side by Side Diff: components/metrics/public/cpp/call_stack_profile_struct_traits_unittest.cc

Issue 2362493002: Stack sampling profiler: set process and thread information (Closed)
Patch Set: address comments Created 4 years, 3 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 <utility> 5 #include <utility>
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "components/metrics/public/interfaces/call_stack_profile_collector_test .mojom.h" 10 #include "components/metrics/public/interfaces/call_stack_profile_collector_test .mojom.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 void BounceModule(const base::StackSamplingProfiler::Module& in, 47 void BounceModule(const base::StackSamplingProfiler::Module& in,
48 const BounceModuleCallback& callback) override { 48 const BounceModuleCallback& callback) override {
49 callback.Run(in); 49 callback.Run(in);
50 } 50 }
51 51
52 void BounceProfile(const base::StackSamplingProfiler::CallStackProfile& in, 52 void BounceProfile(const base::StackSamplingProfiler::CallStackProfile& in,
53 const BounceProfileCallback& callback) override { 53 const BounceProfileCallback& callback) override {
54 callback.Run(in); 54 callback.Run(in);
55 } 55 }
56 56
57 void BounceTrigger(metrics::CallStackProfileParams::Trigger in, 57 void BounceTrigger(CallStackProfileParams::Trigger in,
58 const BounceTriggerCallback& callback) override { 58 const BounceTriggerCallback& callback) override {
59 callback.Run(in); 59 callback.Run(in);
60 } 60 }
61 61
62 void BounceProcess(CallStackProfileParams::Process in,
63 const BounceProcessCallback& callback) override {
64 callback.Run(in);
65 }
66
67 void BounceThread(CallStackProfileParams::Thread in,
68 const BounceThreadCallback& callback) override {
69 callback.Run(in);
70 }
71
62 void BounceSampleOrderingSpec( 72 void BounceSampleOrderingSpec(
63 metrics::CallStackProfileParams::SampleOrderingSpec in, 73 CallStackProfileParams::SampleOrderingSpec in,
64 const BounceSampleOrderingSpecCallback& callback) override { 74 const BounceSampleOrderingSpecCallback& callback) override {
65 callback.Run(in); 75 callback.Run(in);
66 } 76 }
67 77
78 void BounceCallStackProfileParams(
79 const CallStackProfileParams& in,
80 const BounceCallStackProfileParamsCallback& callback) override {
81 callback.Run(in);
82 }
83
68 private: 84 private:
69 mojo::Binding<CallStackProfileCollectorTest> binding_; 85 mojo::Binding<CallStackProfileCollectorTest> binding_;
70 86
71 DISALLOW_COPY_AND_ASSIGN(CallStackProfileCollectorTestImpl); 87 DISALLOW_COPY_AND_ASSIGN(CallStackProfileCollectorTestImpl);
72 }; 88 };
73 89
74 class CallStackProfileStructTraitsTest : public testing::Test { 90 class CallStackProfileStructTraitsTest : public testing::Test {
75 public: 91 public:
76 CallStackProfileStructTraitsTest() : impl_(GetProxy(&proxy_)) {} 92 CallStackProfileStructTraitsTest() : impl_(GetProxy(&proxy_)) {}
77 93
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 if (!input.expect_success) 268 if (!input.expect_success)
253 continue; 269 continue;
254 270
255 EXPECT_EQ(input.profile.modules, output.modules); 271 EXPECT_EQ(input.profile.modules, output.modules);
256 EXPECT_EQ(input.profile.samples, output.samples); 272 EXPECT_EQ(input.profile.samples, output.samples);
257 EXPECT_EQ(input.profile.profile_duration, output.profile_duration); 273 EXPECT_EQ(input.profile.profile_duration, output.profile_duration);
258 EXPECT_EQ(input.profile.sampling_period, output.sampling_period); 274 EXPECT_EQ(input.profile.sampling_period, output.sampling_period);
259 } 275 }
260 } 276 }
261 277
262 // Checks serialization/deserialization of the SampleOrderingSpec, including 278 // Checks serialization/deserialization of the process, including validation.
263 // validation. 279 TEST_F(CallStackProfileStructTraitsTest, Process) {
264 TEST_F(CallStackProfileStructTraitsTest, SampleOrderingSpec) { 280 using Process = CallStackProfileParams::Process;
265 using SampleOrderingSpec =
266 metrics::CallStackProfileParams::SampleOrderingSpec;
267 281
268 SampleOrderingSpec out; 282 Process out;
269 283
270 EXPECT_TRUE(proxy_->BounceSampleOrderingSpec(SampleOrderingSpec::MAY_SHUFFLE, 284 EXPECT_TRUE(proxy_->BounceProcess(Process::UNKNOWN_PROCESS, &out));
271 &out)); 285 EXPECT_EQ(Process::UNKNOWN_PROCESS, out);
272 EXPECT_EQ(SampleOrderingSpec::MAY_SHUFFLE, out);
273 286
274 EXPECT_TRUE(proxy_->BounceSampleOrderingSpec( 287 EXPECT_TRUE(proxy_->BounceProcess(Process::BROWSER_PROCESS, &out));
275 SampleOrderingSpec::PRESERVE_ORDER, 288 EXPECT_EQ(Process::BROWSER_PROCESS, out);
276 &out)); 289
277 EXPECT_EQ(SampleOrderingSpec::PRESERVE_ORDER, out); 290 EXPECT_TRUE(proxy_->BounceProcess(Process::RENDERER_PROCESS, &out));
291 EXPECT_EQ(Process::RENDERER_PROCESS, out);
292
293 EXPECT_TRUE(proxy_->BounceProcess(Process::GPU_PROCESS, &out));
294 EXPECT_EQ(Process::GPU_PROCESS, out);
295
296 EXPECT_TRUE(proxy_->BounceProcess(Process::UTILITY_PROCESS, &out));
297 EXPECT_EQ(Process::UTILITY_PROCESS, out);
298
299 EXPECT_TRUE(proxy_->BounceProcess(Process::ZYGOTE_PROCESS, &out));
300 EXPECT_EQ(Process::ZYGOTE_PROCESS, out);
301
302 EXPECT_TRUE(proxy_->BounceProcess(Process::SANDBOX_HELPER_PROCESS, &out));
303 EXPECT_EQ(Process::SANDBOX_HELPER_PROCESS, out);
304
305 EXPECT_TRUE(proxy_->BounceProcess(Process::PPAPI_PLUGIN_PROCESS, &out));
306 EXPECT_EQ(Process::PPAPI_PLUGIN_PROCESS, out);
307
308 EXPECT_TRUE(proxy_->BounceProcess(Process::PPAPI_BROKER_PROCESS, &out));
309 EXPECT_EQ(Process::PPAPI_BROKER_PROCESS, out);
310 }
311
312 // Checks serialization/deserialization of the thread, including validation.
313 TEST_F(CallStackProfileStructTraitsTest, Thread) {
314 using Thread = CallStackProfileParams::Thread;
315
316 Thread out;
317
318 EXPECT_TRUE(proxy_->BounceThread(Thread::UI_THREAD, &out));
319 EXPECT_EQ(Thread::UI_THREAD, out);
320
321 EXPECT_TRUE(proxy_->BounceThread(Thread::FILE_THREAD, &out));
322 EXPECT_EQ(Thread::FILE_THREAD, out);
323
324 EXPECT_TRUE(proxy_->BounceThread(Thread::FILE_USER_BLOCKING_THREAD, &out));
325 EXPECT_EQ(Thread::FILE_USER_BLOCKING_THREAD, out);
326
327 EXPECT_TRUE(proxy_->BounceThread(Thread::PROCESS_LAUNCHER_THREAD, &out));
328 EXPECT_EQ(Thread::PROCESS_LAUNCHER_THREAD, out);
329
330 EXPECT_TRUE(proxy_->BounceThread(Thread::CACHE_THREAD, &out));
331 EXPECT_EQ(Thread::CACHE_THREAD, out);
332
333 EXPECT_TRUE(proxy_->BounceThread(Thread::IO_THREAD, &out));
334 EXPECT_EQ(Thread::IO_THREAD, out);
335
336 EXPECT_TRUE(proxy_->BounceThread(Thread::DB_THREAD, &out));
337 EXPECT_EQ(Thread::DB_THREAD, out);
338
339 EXPECT_TRUE(proxy_->BounceThread(Thread::GPU_MAIN_THREAD, &out));
340 EXPECT_EQ(Thread::GPU_MAIN_THREAD, out);
341
342 EXPECT_TRUE(proxy_->BounceThread(Thread::RENDER_THREAD, &out));
343 EXPECT_EQ(Thread::RENDER_THREAD, out);
344
345 EXPECT_TRUE(proxy_->BounceThread(Thread::UTILITY_THREAD, &out));
346 EXPECT_EQ(Thread::UTILITY_THREAD, out);
278 } 347 }
279 348
280 // Checks serialization/deserialization of the trigger, including validation. 349 // Checks serialization/deserialization of the trigger, including validation.
281 TEST_F(CallStackProfileStructTraitsTest, Trigger) { 350 TEST_F(CallStackProfileStructTraitsTest, Trigger) {
282 using Trigger = metrics::CallStackProfileParams::Trigger; 351 using Trigger = CallStackProfileParams::Trigger;
283 352
284 Trigger out; 353 Trigger out;
285 354
286 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::UNKNOWN, &out)); 355 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::UNKNOWN, &out));
287 EXPECT_EQ(Trigger::UNKNOWN, out); 356 EXPECT_EQ(Trigger::UNKNOWN, out);
288 357
289 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::PROCESS_STARTUP, &out)); 358 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::PROCESS_STARTUP, &out));
290 EXPECT_EQ(Trigger::PROCESS_STARTUP, out); 359 EXPECT_EQ(Trigger::PROCESS_STARTUP, out);
291 360
292 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::JANKY_TASK, &out)); 361 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::JANKY_TASK, &out));
293 EXPECT_EQ(Trigger::JANKY_TASK, out); 362 EXPECT_EQ(Trigger::JANKY_TASK, out);
294 363
295 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::THREAD_HUNG, &out)); 364 EXPECT_TRUE(proxy_->BounceTrigger(Trigger::THREAD_HUNG, &out));
296 EXPECT_EQ(Trigger::THREAD_HUNG, out); 365 EXPECT_EQ(Trigger::THREAD_HUNG, out);
297 } 366 }
298 367
368 // Checks serialization/deserialization of the SampleOrderingSpec, including
369 // validation.
370 TEST_F(CallStackProfileStructTraitsTest, SampleOrderingSpec) {
371 using SampleOrderingSpec = CallStackProfileParams::SampleOrderingSpec;
372
373 SampleOrderingSpec out;
374
375 EXPECT_TRUE(proxy_->BounceSampleOrderingSpec(SampleOrderingSpec::MAY_SHUFFLE,
376 &out));
377 EXPECT_EQ(SampleOrderingSpec::MAY_SHUFFLE, out);
378
379 EXPECT_TRUE(proxy_->BounceSampleOrderingSpec(
380 SampleOrderingSpec::PRESERVE_ORDER,
381 &out));
382 EXPECT_EQ(SampleOrderingSpec::PRESERVE_ORDER, out);
383 }
384
385 // Checks serialization/deserialization of the CallStackProfileParams.
386 TEST_F(CallStackProfileStructTraitsTest, CallStackProfileParams) {
387 CallStackProfileParams out;
388
389 EXPECT_TRUE(proxy_->BounceCallStackProfileParams(
390 CallStackProfileParams(CallStackProfileParams::BROWSER_PROCESS,
391 CallStackProfileParams::UI_THREAD,
392 CallStackProfileParams::PROCESS_STARTUP,
393 CallStackProfileParams::PRESERVE_ORDER),
394 &out));
395
396 EXPECT_EQ(CallStackProfileParams::BROWSER_PROCESS, out.process);
397 EXPECT_EQ(CallStackProfileParams::UI_THREAD, out.thread);
398 EXPECT_EQ(CallStackProfileParams::PROCESS_STARTUP, out.trigger);
399 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER, out.ordering_spec);
400 }
401
299 } // namespace metrics 402 } // namespace metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698