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