OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // Test of classes in the tracked_objects.h classes. | 5 // Test of classes in the tracked_objects.h classes. |
6 | 6 |
7 #include "base/tracked_objects.h" | 7 #include "base/tracked_objects.h" |
8 | 8 |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 | 10 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
64 } | 64 } |
65 | 65 |
66 // Helper function to verify the most common test expectations. | 66 // Helper function to verify the most common test expectations. |
67 void ExpectSimpleProcessData(const ProcessDataSnapshot& process_data, | 67 void ExpectSimpleProcessData(const ProcessDataSnapshot& process_data, |
68 const std::string& function_name, | 68 const std::string& function_name, |
69 const std::string& birth_thread, | 69 const std::string& birth_thread, |
70 const std::string& death_thread, | 70 const std::string& death_thread, |
71 int count, | 71 int count, |
72 int run_ms, | 72 int run_ms, |
73 int queue_ms) { | 73 int queue_ms) { |
74 ASSERT_EQ(1u, process_data.tasks.size()); | 74 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); |
Ilya Sherman
2015/03/17 23:57:38
nit: The "u" is important -- you're currently comp
vadimt
2015/03/19 00:20:44
Done.
| |
75 const PhasedProcessDataSnapshotMap::const_iterator it = | |
Ilya Sherman
2015/03/17 23:57:38
nit: auto
vadimt
2015/03/19 00:20:44
Done.
| |
76 process_data.phased_process_data_snapshots.find(0); | |
77 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); | |
78 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | |
75 | 79 |
76 EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name); | 80 ASSERT_EQ(1u, process_data_phase.tasks.size()); |
81 | |
82 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); | |
77 EXPECT_EQ(function_name, | 83 EXPECT_EQ(function_name, |
78 process_data.tasks[0].birth.location.function_name); | 84 process_data_phase.tasks[0].birth.location.function_name); |
79 EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number); | 85 EXPECT_EQ(kLineNumber, |
86 process_data_phase.tasks[0].birth.location.line_number); | |
80 | 87 |
81 EXPECT_EQ(birth_thread, process_data.tasks[0].birth.thread_name); | 88 EXPECT_EQ(birth_thread, process_data_phase.tasks[0].birth.thread_name); |
82 | 89 |
83 EXPECT_EQ(count, process_data.tasks[0].death_data.count); | 90 EXPECT_EQ(count, process_data_phase.tasks[0].death_data.count); |
84 EXPECT_EQ(count * run_ms, | 91 EXPECT_EQ(count * run_ms, |
85 process_data.tasks[0].death_data.run_duration_sum); | 92 process_data_phase.tasks[0].death_data.run_duration_sum); |
86 EXPECT_EQ(run_ms, process_data.tasks[0].death_data.run_duration_max); | 93 EXPECT_EQ(run_ms, process_data_phase.tasks[0].death_data.run_duration_max); |
87 EXPECT_EQ(run_ms, process_data.tasks[0].death_data.run_duration_sample); | 94 EXPECT_EQ(run_ms, |
95 process_data_phase.tasks[0].death_data.run_duration_sample); | |
88 EXPECT_EQ(count * queue_ms, | 96 EXPECT_EQ(count * queue_ms, |
89 process_data.tasks[0].death_data.queue_duration_sum); | 97 process_data_phase.tasks[0].death_data.queue_duration_sum); |
90 EXPECT_EQ(queue_ms, process_data.tasks[0].death_data.queue_duration_max); | 98 EXPECT_EQ(queue_ms, |
91 EXPECT_EQ(queue_ms, process_data.tasks[0].death_data.queue_duration_sample); | 99 process_data_phase.tasks[0].death_data.queue_duration_max); |
100 EXPECT_EQ(queue_ms, | |
101 process_data_phase.tasks[0].death_data.queue_duration_sample); | |
92 | 102 |
93 EXPECT_EQ(death_thread, process_data.tasks[0].death_thread_name); | 103 EXPECT_EQ(death_thread, process_data_phase.tasks[0].death_thread_name); |
94 | 104 |
95 EXPECT_EQ(0u, process_data.descendants.size()); | 105 EXPECT_EQ(0u, process_data_phase.descendants.size()); |
96 | 106 |
97 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 107 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
98 } | 108 } |
99 | 109 |
100 // Sets time that will be returned by ThreadData::Now(). | 110 // Sets time that will be returned by ThreadData::Now(). |
101 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; } | 111 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; } |
102 | 112 |
103 private: | 113 private: |
104 // Returns test time in milliseconds. | 114 // Returns test time in milliseconds. |
105 static unsigned int GetTestTime() { return test_time_; } | 115 static unsigned int GetTestTime() { return test_time_; } |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
223 } else { | 233 } else { |
224 EXPECT_EQ(0u, parent_child_set.size()); // no stats. | 234 EXPECT_EQ(0u, parent_child_set.size()); // no stats. |
225 } | 235 } |
226 | 236 |
227 // The births were at the same location as the one known death. | 237 // The births were at the same location as the one known death. |
228 EXPECT_EQ(birth_map.begin()->second, death_map.begin()->first); | 238 EXPECT_EQ(birth_map.begin()->second, death_map.begin()->first); |
229 | 239 |
230 ProcessDataSnapshot process_data; | 240 ProcessDataSnapshot process_data; |
231 ThreadData::Snapshot(&process_data); | 241 ThreadData::Snapshot(&process_data); |
232 | 242 |
233 ASSERT_EQ(1u, process_data.tasks.size()); | 243 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); |
234 EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name); | 244 const PhasedProcessDataSnapshotMap::const_iterator it = |
235 EXPECT_EQ(kFunction, process_data.tasks[0].birth.location.function_name); | 245 process_data.phased_process_data_snapshots.find(0); |
236 EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number); | 246 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); |
237 EXPECT_EQ(kWorkerThreadName, process_data.tasks[0].birth.thread_name); | 247 const ProcessDataPhaseSnapshot& process_data_phase = it->second; |
238 EXPECT_EQ(1, process_data.tasks[0].death_data.count); | 248 ASSERT_EQ(1u, process_data_phase.tasks.size()); |
239 EXPECT_EQ(time_elapsed, process_data.tasks[0].death_data.run_duration_sum); | 249 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); |
240 EXPECT_EQ(time_elapsed, process_data.tasks[0].death_data.run_duration_max); | 250 EXPECT_EQ(kFunction, |
241 EXPECT_EQ(time_elapsed, process_data.tasks[0].death_data.run_duration_sample); | 251 process_data_phase.tasks[0].birth.location.function_name); |
242 EXPECT_EQ(0, process_data.tasks[0].death_data.queue_duration_sum); | 252 EXPECT_EQ(kLineNumber, |
243 EXPECT_EQ(0, process_data.tasks[0].death_data.queue_duration_max); | 253 process_data_phase.tasks[0].birth.location.line_number); |
244 EXPECT_EQ(0, process_data.tasks[0].death_data.queue_duration_sample); | 254 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].birth.thread_name); |
245 EXPECT_EQ(kWorkerThreadName, process_data.tasks[0].death_thread_name); | 255 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); |
256 EXPECT_EQ(time_elapsed, | |
257 process_data_phase.tasks[0].death_data.run_duration_sum); | |
258 EXPECT_EQ(time_elapsed, | |
259 process_data_phase.tasks[0].death_data.run_duration_max); | |
260 EXPECT_EQ(time_elapsed, | |
261 process_data_phase.tasks[0].death_data.run_duration_sample); | |
262 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum); | |
263 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max); | |
264 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample); | |
265 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].death_thread_name); | |
246 | 266 |
247 if (ThreadData::TrackingParentChildStatus()) { | 267 if (ThreadData::TrackingParentChildStatus()) { |
248 ASSERT_EQ(1u, process_data.descendants.size()); | 268 ASSERT_EQ(1u, process_data_phase.descendants.size()); |
249 EXPECT_EQ(kFile, process_data.descendants[0].parent.location.file_name); | 269 EXPECT_EQ(kFile, |
270 process_data_phase.descendants[0].parent.location.file_name); | |
250 EXPECT_EQ(kFunction, | 271 EXPECT_EQ(kFunction, |
251 process_data.descendants[0].parent.location.function_name); | 272 process_data_phase.descendants[0].parent.location.function_name); |
252 EXPECT_EQ(kLineNumber, | 273 EXPECT_EQ(kLineNumber, |
253 process_data.descendants[0].parent.location.line_number); | 274 process_data_phase.descendants[0].parent.location.line_number); |
254 EXPECT_EQ(kWorkerThreadName, | 275 EXPECT_EQ(kWorkerThreadName, |
255 process_data.descendants[0].parent.thread_name); | 276 process_data_phase.descendants[0].parent.thread_name); |
256 EXPECT_EQ(kFile, process_data.descendants[0].child.location.file_name); | 277 EXPECT_EQ(kFile, |
278 process_data_phase.descendants[0].child.location.file_name); | |
257 EXPECT_EQ(kFunction, | 279 EXPECT_EQ(kFunction, |
258 process_data.descendants[0].child.location.function_name); | 280 process_data_phase.descendants[0].child.location.function_name); |
259 EXPECT_EQ(kLineNumber, | 281 EXPECT_EQ(kLineNumber, |
260 process_data.descendants[0].child.location.line_number); | 282 process_data_phase.descendants[0].child.location.line_number); |
261 EXPECT_EQ(kWorkerThreadName, process_data.descendants[0].child.thread_name); | 283 EXPECT_EQ(kWorkerThreadName, |
284 process_data_phase.descendants[0].child.thread_name); | |
262 } else { | 285 } else { |
263 EXPECT_EQ(0u, process_data.descendants.size()); | 286 EXPECT_EQ(0u, process_data_phase.descendants.size()); |
264 } | 287 } |
265 } | 288 } |
266 | 289 |
267 TEST_F(TrackedObjectsTest, DeathDataTest) { | 290 TEST_F(TrackedObjectsTest, DeathDataTest) { |
268 if (!ThreadData::InitializeAndSetTrackingStatus( | 291 if (!ThreadData::InitializeAndSetTrackingStatus( |
269 ThreadData::PROFILING_CHILDREN_ACTIVE)) { | 292 ThreadData::PROFILING_CHILDREN_ACTIVE)) { |
270 return; | 293 return; |
271 } | 294 } |
272 | 295 |
273 scoped_ptr<DeathData> data(new DeathData()); | 296 scoped_ptr<DeathData> data(new DeathData()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
311 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) { | 334 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) { |
312 return; | 335 return; |
313 } | 336 } |
314 | 337 |
315 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotWorkerThread"; | 338 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotWorkerThread"; |
316 Location location(kFunction, kFile, kLineNumber, NULL); | 339 Location location(kFunction, kFile, kLineNumber, NULL); |
317 TallyABirth(location, std::string()); | 340 TallyABirth(location, std::string()); |
318 | 341 |
319 ProcessDataSnapshot process_data; | 342 ProcessDataSnapshot process_data; |
320 ThreadData::Snapshot(&process_data); | 343 ThreadData::Snapshot(&process_data); |
321 EXPECT_EQ(0u, process_data.tasks.size()); | 344 |
322 EXPECT_EQ(0u, process_data.descendants.size()); | 345 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); |
346 const PhasedProcessDataSnapshotMap::const_iterator it = | |
347 process_data.phased_process_data_snapshots.find(0); | |
348 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); | |
349 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | |
350 | |
351 EXPECT_EQ(0u, process_data_phase.tasks.size()); | |
352 EXPECT_EQ(0u, process_data_phase.descendants.size()); | |
323 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 353 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
324 } | 354 } |
325 | 355 |
326 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToSnapshotMainThread) { | 356 TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToSnapshotMainThread) { |
327 // Start in the deactivated state. | 357 // Start in the deactivated state. |
328 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) { | 358 if (!ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)) { |
329 return; | 359 return; |
330 } | 360 } |
331 | 361 |
332 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotMainThread"; | 362 const char kFunction[] = "DeactivatedBirthOnlyToSnapshotMainThread"; |
333 Location location(kFunction, kFile, kLineNumber, NULL); | 363 Location location(kFunction, kFile, kLineNumber, NULL); |
334 TallyABirth(location, kMainThreadName); | 364 TallyABirth(location, kMainThreadName); |
335 | 365 |
336 ProcessDataSnapshot process_data; | 366 ProcessDataSnapshot process_data; |
337 ThreadData::Snapshot(&process_data); | 367 ThreadData::Snapshot(&process_data); |
338 EXPECT_EQ(0u, process_data.tasks.size()); | 368 |
339 EXPECT_EQ(0u, process_data.descendants.size()); | 369 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); |
370 const PhasedProcessDataSnapshotMap::const_iterator it = | |
371 process_data.phased_process_data_snapshots.find(0); | |
372 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); | |
373 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | |
374 | |
375 EXPECT_EQ(0u, process_data_phase.tasks.size()); | |
376 EXPECT_EQ(0u, process_data_phase.descendants.size()); | |
340 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 377 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
341 } | 378 } |
342 | 379 |
343 TEST_F(TrackedObjectsTest, BirthOnlyToSnapshotWorkerThread) { | 380 TEST_F(TrackedObjectsTest, BirthOnlyToSnapshotWorkerThread) { |
344 if (!ThreadData::InitializeAndSetTrackingStatus( | 381 if (!ThreadData::InitializeAndSetTrackingStatus( |
345 ThreadData::PROFILING_CHILDREN_ACTIVE)) { | 382 ThreadData::PROFILING_CHILDREN_ACTIVE)) { |
346 return; | 383 return; |
347 } | 384 } |
348 | 385 |
349 const char kFunction[] = "BirthOnlyToSnapshotWorkerThread"; | 386 const char kFunction[] = "BirthOnlyToSnapshotWorkerThread"; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
418 Location location(kFunction, kFile, kLineNumber, NULL); | 455 Location location(kFunction, kFile, kLineNumber, NULL); |
419 TallyABirth(location, kMainThreadName); | 456 TallyABirth(location, kMainThreadName); |
420 | 457 |
421 const TrackedTime kTimePosted = TrackedTime::FromMilliseconds(1); | 458 const TrackedTime kTimePosted = TrackedTime::FromMilliseconds(1); |
422 const base::TimeTicks kDelayedStartTime = base::TimeTicks(); | 459 const base::TimeTicks kDelayedStartTime = base::TimeTicks(); |
423 // TrackingInfo will call TallyABirth() during construction. | 460 // TrackingInfo will call TallyABirth() during construction. |
424 base::TrackingInfo pending_task(location, kDelayedStartTime); | 461 base::TrackingInfo pending_task(location, kDelayedStartTime); |
425 pending_task.time_posted = kTimePosted; // Overwrite implied Now(). | 462 pending_task.time_posted = kTimePosted; // Overwrite implied Now(). |
426 | 463 |
427 // Turn off tracking now that we have births. | 464 // Turn off tracking now that we have births. |
428 EXPECT_TRUE(ThreadData::InitializeAndSetTrackingStatus( | 465 EXPECT_TRUE( |
429 ThreadData::DEACTIVATED)); | 466 ThreadData::InitializeAndSetTrackingStatus(ThreadData::DEACTIVATED)); |
430 | 467 |
431 const unsigned int kStartOfRun = 5; | 468 const unsigned int kStartOfRun = 5; |
432 const unsigned int kEndOfRun = 7; | 469 const unsigned int kEndOfRun = 7; |
433 SetTestTime(kStartOfRun); | 470 SetTestTime(kStartOfRun); |
434 TaskStopwatch stopwatch; | 471 TaskStopwatch stopwatch; |
435 stopwatch.Start(); | 472 stopwatch.Start(); |
436 SetTestTime(kEndOfRun); | 473 SetTestTime(kEndOfRun); |
437 stopwatch.Stop(); | 474 stopwatch.Stop(); |
438 | 475 |
439 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); | 476 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); |
(...skipping 27 matching lines...) Expand all Loading... | |
467 SetTestTime(kStartOfRun); | 504 SetTestTime(kStartOfRun); |
468 TaskStopwatch stopwatch; | 505 TaskStopwatch stopwatch; |
469 stopwatch.Start(); | 506 stopwatch.Start(); |
470 SetTestTime(kEndOfRun); | 507 SetTestTime(kEndOfRun); |
471 stopwatch.Stop(); | 508 stopwatch.Stop(); |
472 | 509 |
473 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); | 510 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, stopwatch); |
474 | 511 |
475 ProcessDataSnapshot process_data; | 512 ProcessDataSnapshot process_data; |
476 ThreadData::Snapshot(&process_data); | 513 ThreadData::Snapshot(&process_data); |
477 EXPECT_EQ(0u, process_data.tasks.size()); | 514 |
478 EXPECT_EQ(0u, process_data.descendants.size()); | 515 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); |
516 const PhasedProcessDataSnapshotMap::const_iterator it = | |
517 process_data.phased_process_data_snapshots.find(0); | |
518 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); | |
519 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | |
520 | |
521 EXPECT_EQ(0u, process_data_phase.tasks.size()); | |
522 EXPECT_EQ(0u, process_data_phase.descendants.size()); | |
479 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 523 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
480 } | 524 } |
481 | 525 |
482 TEST_F(TrackedObjectsTest, TwoLives) { | 526 TEST_F(TrackedObjectsTest, TwoLives) { |
483 if (!ThreadData::InitializeAndSetTrackingStatus( | 527 if (!ThreadData::InitializeAndSetTrackingStatus( |
484 ThreadData::PROFILING_CHILDREN_ACTIVE)) { | 528 ThreadData::PROFILING_CHILDREN_ACTIVE)) { |
485 return; | 529 return; |
486 } | 530 } |
487 | 531 |
488 const char kFunction[] = "TwoLives"; | 532 const char kFunction[] = "TwoLives"; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
551 | 595 |
552 const int kSecondFakeLineNumber = 999; | 596 const int kSecondFakeLineNumber = 999; |
553 Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL); | 597 Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL); |
554 | 598 |
555 // TrackingInfo will call TallyABirth() during construction. | 599 // TrackingInfo will call TallyABirth() during construction. |
556 base::TrackingInfo pending_task2(second_location, kDelayedStartTime); | 600 base::TrackingInfo pending_task2(second_location, kDelayedStartTime); |
557 pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). | 601 pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). |
558 | 602 |
559 ProcessDataSnapshot process_data; | 603 ProcessDataSnapshot process_data; |
560 ThreadData::Snapshot(&process_data); | 604 ThreadData::Snapshot(&process_data); |
561 ASSERT_EQ(2u, process_data.tasks.size()); | |
562 | 605 |
563 EXPECT_EQ(kFile, process_data.tasks[0].birth.location.file_name); | 606 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); |
564 EXPECT_EQ(kFunction, process_data.tasks[0].birth.location.function_name); | 607 const PhasedProcessDataSnapshotMap::const_iterator it = |
565 EXPECT_EQ(kLineNumber, process_data.tasks[0].birth.location.line_number); | 608 process_data.phased_process_data_snapshots.find(0); |
566 EXPECT_EQ(kMainThreadName, process_data.tasks[0].birth.thread_name); | 609 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); |
567 EXPECT_EQ(1, process_data.tasks[0].death_data.count); | 610 const ProcessDataPhaseSnapshot& process_data_phase = it->second; |
568 EXPECT_EQ(2, process_data.tasks[0].death_data.run_duration_sum); | 611 |
569 EXPECT_EQ(2, process_data.tasks[0].death_data.run_duration_max); | 612 ASSERT_EQ(2u, process_data_phase.tasks.size()); |
570 EXPECT_EQ(2, process_data.tasks[0].death_data.run_duration_sample); | 613 |
571 EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_sum); | 614 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); |
572 EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_max); | 615 EXPECT_EQ(kFunction, |
573 EXPECT_EQ(4, process_data.tasks[0].death_data.queue_duration_sample); | 616 process_data_phase.tasks[0].birth.location.function_name); |
574 EXPECT_EQ(kMainThreadName, process_data.tasks[0].death_thread_name); | 617 EXPECT_EQ(kLineNumber, |
575 EXPECT_EQ(kFile, process_data.tasks[1].birth.location.file_name); | 618 process_data_phase.tasks[0].birth.location.line_number); |
576 EXPECT_EQ(kFunction, process_data.tasks[1].birth.location.function_name); | 619 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].birth.thread_name); |
620 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); | |
621 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sum); | |
622 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_max); | |
623 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sample); | |
624 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sum); | |
625 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_max); | |
626 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sample); | |
627 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].death_thread_name); | |
628 EXPECT_EQ(kFile, process_data_phase.tasks[1].birth.location.file_name); | |
629 EXPECT_EQ(kFunction, | |
630 process_data_phase.tasks[1].birth.location.function_name); | |
577 EXPECT_EQ(kSecondFakeLineNumber, | 631 EXPECT_EQ(kSecondFakeLineNumber, |
578 process_data.tasks[1].birth.location.line_number); | 632 process_data_phase.tasks[1].birth.location.line_number); |
579 EXPECT_EQ(kMainThreadName, process_data.tasks[1].birth.thread_name); | 633 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[1].birth.thread_name); |
580 EXPECT_EQ(1, process_data.tasks[1].death_data.count); | 634 EXPECT_EQ(1, process_data_phase.tasks[1].death_data.count); |
581 EXPECT_EQ(0, process_data.tasks[1].death_data.run_duration_sum); | 635 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sum); |
582 EXPECT_EQ(0, process_data.tasks[1].death_data.run_duration_max); | 636 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_max); |
583 EXPECT_EQ(0, process_data.tasks[1].death_data.run_duration_sample); | 637 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sample); |
584 EXPECT_EQ(0, process_data.tasks[1].death_data.queue_duration_sum); | 638 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sum); |
585 EXPECT_EQ(0, process_data.tasks[1].death_data.queue_duration_max); | 639 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_max); |
586 EXPECT_EQ(0, process_data.tasks[1].death_data.queue_duration_sample); | 640 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sample); |
587 EXPECT_EQ(kStillAlive, process_data.tasks[1].death_thread_name); | 641 EXPECT_EQ(kStillAlive, process_data_phase.tasks[1].death_thread_name); |
588 EXPECT_EQ(0u, process_data.descendants.size()); | 642 EXPECT_EQ(0u, process_data_phase.descendants.size()); |
589 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 643 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
590 } | 644 } |
591 | 645 |
592 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) { | 646 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) { |
593 if (!ThreadData::InitializeAndSetTrackingStatus( | 647 if (!ThreadData::InitializeAndSetTrackingStatus( |
594 ThreadData::PROFILING_CHILDREN_ACTIVE)) { | 648 ThreadData::PROFILING_CHILDREN_ACTIVE)) { |
595 return; | 649 return; |
596 } | 650 } |
597 | 651 |
598 const char kFunction[] = "TaskWithNestedExclusion"; | 652 const char kFunction[] = "TaskWithNestedExclusion"; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
712 exclusion_stopwatch.Stop(); | 766 exclusion_stopwatch.Stop(); |
713 } | 767 } |
714 SetTestTime(15); | 768 SetTestTime(15); |
715 task_stopwatch.Stop(); | 769 task_stopwatch.Stop(); |
716 | 770 |
717 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch); | 771 ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, task_stopwatch); |
718 | 772 |
719 ProcessDataSnapshot process_data; | 773 ProcessDataSnapshot process_data; |
720 ThreadData::Snapshot(&process_data); | 774 ThreadData::Snapshot(&process_data); |
721 | 775 |
776 ASSERT_EQ(1, process_data.phased_process_data_snapshots.size()); | |
777 const PhasedProcessDataSnapshotMap::const_iterator it = | |
778 process_data.phased_process_data_snapshots.find(0); | |
779 ASSERT_TRUE(it != process_data.phased_process_data_snapshots.end()); | |
780 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | |
781 | |
722 // The order in which the two task follow is platform-dependent. | 782 // The order in which the two task follow is platform-dependent. |
723 int t0 = (process_data.tasks[0].birth.location.line_number == kLineNumber) ? | 783 int t0 = |
724 0 : 1; | 784 (process_data_phase.tasks[0].birth.location.line_number == kLineNumber) |
785 ? 0 | |
786 : 1; | |
725 int t1 = 1 - t0; | 787 int t1 = 1 - t0; |
726 | 788 |
727 ASSERT_EQ(2u, process_data.tasks.size()); | 789 ASSERT_EQ(2u, process_data_phase.tasks.size()); |
728 EXPECT_EQ(kFile, process_data.tasks[t0].birth.location.file_name); | 790 EXPECT_EQ(kFile, process_data_phase.tasks[t0].birth.location.file_name); |
729 EXPECT_EQ(kFunction, process_data.tasks[t0].birth.location.function_name); | 791 EXPECT_EQ(kFunction, |
730 EXPECT_EQ(kLineNumber, process_data.tasks[t0].birth.location.line_number); | 792 process_data_phase.tasks[t0].birth.location.function_name); |
731 EXPECT_EQ(kMainThreadName, process_data.tasks[t0].birth.thread_name); | 793 EXPECT_EQ(kLineNumber, |
732 EXPECT_EQ(1, process_data.tasks[t0].death_data.count); | 794 process_data_phase.tasks[t0].birth.location.line_number); |
733 EXPECT_EQ(6, process_data.tasks[t0].death_data.run_duration_sum); | 795 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].birth.thread_name); |
734 EXPECT_EQ(6, process_data.tasks[t0].death_data.run_duration_max); | 796 EXPECT_EQ(1, process_data_phase.tasks[t0].death_data.count); |
735 EXPECT_EQ(6, process_data.tasks[t0].death_data.run_duration_sample); | 797 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sum); |
736 EXPECT_EQ(4, process_data.tasks[t0].death_data.queue_duration_sum); | 798 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_max); |
737 EXPECT_EQ(4, process_data.tasks[t0].death_data.queue_duration_max); | 799 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sample); |
738 EXPECT_EQ(4, process_data.tasks[t0].death_data.queue_duration_sample); | 800 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sum); |
739 EXPECT_EQ(kMainThreadName, process_data.tasks[t0].death_thread_name); | 801 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_max); |
740 EXPECT_EQ(kFile, process_data.tasks[t1].birth.location.file_name); | 802 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sample); |
741 EXPECT_EQ(kFunction, process_data.tasks[t1].birth.location.function_name); | 803 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].death_thread_name); |
804 EXPECT_EQ(kFile, process_data_phase.tasks[t1].birth.location.file_name); | |
805 EXPECT_EQ(kFunction, | |
806 process_data_phase.tasks[t1].birth.location.function_name); | |
742 EXPECT_EQ(kSecondFakeLineNumber, | 807 EXPECT_EQ(kSecondFakeLineNumber, |
743 process_data.tasks[t1].birth.location.line_number); | 808 process_data_phase.tasks[t1].birth.location.line_number); |
744 EXPECT_EQ(kMainThreadName, process_data.tasks[t1].birth.thread_name); | 809 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].birth.thread_name); |
745 EXPECT_EQ(1, process_data.tasks[t1].death_data.count); | 810 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.count); |
746 EXPECT_EQ(2, process_data.tasks[t1].death_data.run_duration_sum); | 811 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sum); |
747 EXPECT_EQ(2, process_data.tasks[t1].death_data.run_duration_max); | 812 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max); |
748 EXPECT_EQ(2, process_data.tasks[t1].death_data.run_duration_sample); | 813 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample); |
749 EXPECT_EQ(1, process_data.tasks[t1].death_data.queue_duration_sum); | 814 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum); |
750 EXPECT_EQ(1, process_data.tasks[t1].death_data.queue_duration_max); | 815 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max); |
751 EXPECT_EQ(1, process_data.tasks[t1].death_data.queue_duration_sample); | 816 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample); |
752 EXPECT_EQ(kMainThreadName, process_data.tasks[t1].death_thread_name); | 817 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].death_thread_name); |
753 EXPECT_EQ(0u, process_data.descendants.size()); | 818 EXPECT_EQ(0u, process_data_phase.descendants.size()); |
754 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 819 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
755 } | 820 } |
756 | 821 |
757 } // namespace tracked_objects | 822 } // namespace tracked_objects |
OLD | NEW |