OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |