| 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 #include <stdint.h> | 10 #include <stdint.h> |
| 11 | 11 |
| 12 #include <memory> | 12 #include <memory> |
| 13 | 13 |
| 14 #include "base/macros.h" |
| 14 #include "base/process/process_handle.h" | 15 #include "base/process/process_handle.h" |
| 16 #include "base/strings/stringprintf.h" |
| 17 #include "base/threading/thread.h" |
| 15 #include "base/time/time.h" | 18 #include "base/time/time.h" |
| 16 #include "base/tracking_info.h" | 19 #include "base/tracking_info.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 21 |
| 19 const int kLineNumber = 1776; | 22 const int kLineNumber = 1776; |
| 20 const char kFile[] = "FixedUnitTestFileName"; | 23 const char kFile[] = "FixedUnitTestFileName"; |
| 21 const char kWorkerThreadName[] = "WorkerThread-1"; | 24 const char kWorkerThreadName[] = "WorkerThread-*"; |
| 22 const char kMainThreadName[] = "SomeMainThreadName"; | 25 const char kMainThreadName[] = "SomeMainThreadName"; |
| 23 const char kStillAlive[] = "Still_Alive"; | 26 const char kStillAlive[] = "Still_Alive"; |
| 24 | 27 |
| 25 const int32_t kAllocOps = 23; | 28 const int32_t kAllocOps = 23; |
| 26 const int32_t kFreeOps = 27; | 29 const int32_t kFreeOps = 27; |
| 27 const int32_t kAllocatedBytes = 59934; | 30 const int32_t kAllocatedBytes = 59934; |
| 28 const int32_t kFreedBytes = 2 * kAllocatedBytes; | 31 const int32_t kFreedBytes = 2 * kAllocatedBytes; |
| 29 const int32_t kAllocOverheadBytes = kAllocOps * 8; | 32 const int32_t kAllocOverheadBytes = kAllocOps * 8; |
| 30 const int32_t kMaxAllocatedBytes = kAllocatedBytes / 2; | 33 const int32_t kMaxAllocatedBytes = kAllocatedBytes / 2; |
| 31 | 34 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | 88 const ProcessDataPhaseSnapshot& process_data_phase = it->second; |
| 86 | 89 |
| 87 ASSERT_EQ(1u, process_data_phase.tasks.size()); | 90 ASSERT_EQ(1u, process_data_phase.tasks.size()); |
| 88 | 91 |
| 89 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); | 92 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); |
| 90 EXPECT_EQ(function_name, | 93 EXPECT_EQ(function_name, |
| 91 process_data_phase.tasks[0].birth.location.function_name); | 94 process_data_phase.tasks[0].birth.location.function_name); |
| 92 EXPECT_EQ(kLineNumber, | 95 EXPECT_EQ(kLineNumber, |
| 93 process_data_phase.tasks[0].birth.location.line_number); | 96 process_data_phase.tasks[0].birth.location.line_number); |
| 94 | 97 |
| 95 EXPECT_EQ(birth_thread, process_data_phase.tasks[0].birth.thread_name); | 98 EXPECT_EQ(birth_thread, |
| 99 process_data_phase.tasks[0].birth.sanitized_thread_name); |
| 96 | 100 |
| 97 EXPECT_EQ(count, process_data_phase.tasks[0].death_data.count); | 101 EXPECT_EQ(count, process_data_phase.tasks[0].death_data.count); |
| 98 EXPECT_EQ(count * run_ms, | 102 EXPECT_EQ(count * run_ms, |
| 99 process_data_phase.tasks[0].death_data.run_duration_sum); | 103 process_data_phase.tasks[0].death_data.run_duration_sum); |
| 100 EXPECT_EQ(run_ms, process_data_phase.tasks[0].death_data.run_duration_max); | 104 EXPECT_EQ(run_ms, process_data_phase.tasks[0].death_data.run_duration_max); |
| 101 EXPECT_EQ(run_ms, | 105 EXPECT_EQ(run_ms, |
| 102 process_data_phase.tasks[0].death_data.run_duration_sample); | 106 process_data_phase.tasks[0].death_data.run_duration_sample); |
| 103 EXPECT_EQ(count * queue_ms, | 107 EXPECT_EQ(count * queue_ms, |
| 104 process_data_phase.tasks[0].death_data.queue_duration_sum); | 108 process_data_phase.tasks[0].death_data.queue_duration_sum); |
| 105 EXPECT_EQ(queue_ms, | 109 EXPECT_EQ(queue_ms, |
| 106 process_data_phase.tasks[0].death_data.queue_duration_max); | 110 process_data_phase.tasks[0].death_data.queue_duration_max); |
| 107 EXPECT_EQ(queue_ms, | 111 EXPECT_EQ(queue_ms, |
| 108 process_data_phase.tasks[0].death_data.queue_duration_sample); | 112 process_data_phase.tasks[0].death_data.queue_duration_sample); |
| 109 | 113 |
| 110 EXPECT_EQ(death_thread, process_data_phase.tasks[0].death_thread_name); | 114 EXPECT_EQ(death_thread, |
| 115 process_data_phase.tasks[0].death_sanitized_thread_name); |
| 111 | 116 |
| 112 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 117 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 113 } | 118 } |
| 114 | 119 |
| 115 // Sets time that will be returned by ThreadData::Now(). | 120 // Sets time that will be returned by ThreadData::Now(). |
| 116 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; } | 121 static void SetTestTime(unsigned int test_time) { test_time_ = test_time; } |
| 117 | 122 |
| 123 int GetNumThreadData() { |
| 124 int num_thread_data = 0; |
| 125 ThreadData* current = ThreadData::first(); |
| 126 while (current) { |
| 127 ++num_thread_data; |
| 128 current = current->next(); |
| 129 } |
| 130 return num_thread_data; |
| 131 } |
| 132 |
| 118 private: | 133 private: |
| 119 // Returns test time in milliseconds. | 134 // Returns test time in milliseconds. |
| 120 static unsigned int GetTestTime() { return test_time_; } | 135 static unsigned int GetTestTime() { return test_time_; } |
| 121 | 136 |
| 122 // Test time in milliseconds. | 137 // Test time in milliseconds. |
| 123 static unsigned int test_time_; | 138 static unsigned int test_time_; |
| 124 }; | 139 }; |
| 125 | 140 |
| 126 // static | 141 // static |
| 127 unsigned int TrackedObjectsTest::test_time_; | 142 unsigned int TrackedObjectsTest::test_time_; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 ASSERT_EQ(1u, process_data.phased_snapshots.size()); | 238 ASSERT_EQ(1u, process_data.phased_snapshots.size()); |
| 224 auto it = process_data.phased_snapshots.find(0); | 239 auto it = process_data.phased_snapshots.find(0); |
| 225 ASSERT_TRUE(it != process_data.phased_snapshots.end()); | 240 ASSERT_TRUE(it != process_data.phased_snapshots.end()); |
| 226 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | 241 const ProcessDataPhaseSnapshot& process_data_phase = it->second; |
| 227 ASSERT_EQ(1u, process_data_phase.tasks.size()); | 242 ASSERT_EQ(1u, process_data_phase.tasks.size()); |
| 228 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); | 243 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); |
| 229 EXPECT_EQ(kFunction, | 244 EXPECT_EQ(kFunction, |
| 230 process_data_phase.tasks[0].birth.location.function_name); | 245 process_data_phase.tasks[0].birth.location.function_name); |
| 231 EXPECT_EQ(kLineNumber, | 246 EXPECT_EQ(kLineNumber, |
| 232 process_data_phase.tasks[0].birth.location.line_number); | 247 process_data_phase.tasks[0].birth.location.line_number); |
| 233 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].birth.thread_name); | 248 EXPECT_EQ(kWorkerThreadName, |
| 249 process_data_phase.tasks[0].birth.sanitized_thread_name); |
| 234 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); | 250 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); |
| 235 EXPECT_EQ(time_elapsed, | 251 EXPECT_EQ(time_elapsed, |
| 236 process_data_phase.tasks[0].death_data.run_duration_sum); | 252 process_data_phase.tasks[0].death_data.run_duration_sum); |
| 237 EXPECT_EQ(time_elapsed, | 253 EXPECT_EQ(time_elapsed, |
| 238 process_data_phase.tasks[0].death_data.run_duration_max); | 254 process_data_phase.tasks[0].death_data.run_duration_max); |
| 239 EXPECT_EQ(time_elapsed, | 255 EXPECT_EQ(time_elapsed, |
| 240 process_data_phase.tasks[0].death_data.run_duration_sample); | 256 process_data_phase.tasks[0].death_data.run_duration_sample); |
| 241 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum); | 257 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sum); |
| 242 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max); | 258 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_max); |
| 243 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample); | 259 EXPECT_EQ(0, process_data_phase.tasks[0].death_data.queue_duration_sample); |
| 244 EXPECT_EQ(kWorkerThreadName, process_data_phase.tasks[0].death_thread_name); | 260 EXPECT_EQ(kWorkerThreadName, |
| 261 process_data_phase.tasks[0].death_sanitized_thread_name); |
| 245 } | 262 } |
| 246 | 263 |
| 247 TEST_F(TrackedObjectsTest, DeathDataTestRecordDurations) { | 264 TEST_F(TrackedObjectsTest, DeathDataTestRecordDurations) { |
| 248 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 265 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |
| 249 | 266 |
| 250 std::unique_ptr<DeathData> data(new DeathData()); | 267 std::unique_ptr<DeathData> data(new DeathData()); |
| 251 ASSERT_NE(data, nullptr); | 268 ASSERT_NE(data, nullptr); |
| 252 EXPECT_EQ(data->run_duration_sum(), 0); | 269 EXPECT_EQ(data->run_duration_sum(), 0); |
| 253 EXPECT_EQ(data->run_duration_max(), 0); | 270 EXPECT_EQ(data->run_duration_max(), 0); |
| 254 EXPECT_EQ(data->run_duration_sample(), 0); | 271 EXPECT_EQ(data->run_duration_sample(), 0); |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; | 669 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; |
| 653 | 670 |
| 654 ASSERT_EQ(1u, process_data_phase0.tasks.size()); | 671 ASSERT_EQ(1u, process_data_phase0.tasks.size()); |
| 655 | 672 |
| 656 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); | 673 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); |
| 657 EXPECT_EQ(kFunction, | 674 EXPECT_EQ(kFunction, |
| 658 process_data_phase0.tasks[0].birth.location.function_name); | 675 process_data_phase0.tasks[0].birth.location.function_name); |
| 659 EXPECT_EQ(kLineNumber, | 676 EXPECT_EQ(kLineNumber, |
| 660 process_data_phase0.tasks[0].birth.location.line_number); | 677 process_data_phase0.tasks[0].birth.location.line_number); |
| 661 | 678 |
| 662 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].birth.thread_name); | 679 EXPECT_EQ(kMainThreadName, |
| 680 process_data_phase0.tasks[0].birth.sanitized_thread_name); |
| 663 | 681 |
| 664 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); | 682 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); |
| 665 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum); | 683 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum); |
| 666 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max); | 684 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max); |
| 667 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample); | 685 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample); |
| 668 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum); | 686 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum); |
| 669 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max); | 687 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max); |
| 670 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample); | 688 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample); |
| 671 | 689 |
| 672 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].death_thread_name); | 690 EXPECT_EQ(kMainThreadName, |
| 691 process_data_phase0.tasks[0].death_sanitized_thread_name); |
| 673 | 692 |
| 674 auto it1 = process_data.phased_snapshots.find(1); | 693 auto it1 = process_data.phased_snapshots.find(1); |
| 675 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); | 694 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); |
| 676 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; | 695 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; |
| 677 | 696 |
| 678 ASSERT_EQ(1u, process_data_phase1.tasks.size()); | 697 ASSERT_EQ(1u, process_data_phase1.tasks.size()); |
| 679 | 698 |
| 680 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); | 699 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); |
| 681 EXPECT_EQ(kFunction, | 700 EXPECT_EQ(kFunction, |
| 682 process_data_phase1.tasks[0].birth.location.function_name); | 701 process_data_phase1.tasks[0].birth.location.function_name); |
| 683 EXPECT_EQ(kLineNumber, | 702 EXPECT_EQ(kLineNumber, |
| 684 process_data_phase1.tasks[0].birth.location.line_number); | 703 process_data_phase1.tasks[0].birth.location.line_number); |
| 685 | 704 |
| 686 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].birth.thread_name); | 705 EXPECT_EQ(kMainThreadName, |
| 706 process_data_phase1.tasks[0].birth.sanitized_thread_name); |
| 687 | 707 |
| 688 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); | 708 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); |
| 689 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sum); | 709 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sum); |
| 690 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_max); | 710 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_max); |
| 691 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sample); | 711 EXPECT_EQ(10, process_data_phase1.tasks[0].death_data.run_duration_sample); |
| 692 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sum); | 712 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sum); |
| 693 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_max); | 713 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_max); |
| 694 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sample); | 714 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.queue_duration_sample); |
| 695 | 715 |
| 696 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].death_thread_name); | 716 EXPECT_EQ(kMainThreadName, |
| 717 process_data_phase1.tasks[0].death_sanitized_thread_name); |
| 697 | 718 |
| 698 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 719 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 699 } | 720 } |
| 700 | 721 |
| 701 TEST_F(TrackedObjectsTest, ThreePhases) { | 722 TEST_F(TrackedObjectsTest, ThreePhases) { |
| 702 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 723 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |
| 703 | 724 |
| 704 const char kFunction[] = "ThreePhases"; | 725 const char kFunction[] = "ThreePhases"; |
| 705 Location location(kFunction, kFile, kLineNumber, NULL); | 726 Location location(kFunction, kFile, kLineNumber, NULL); |
| 706 | 727 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; | 790 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; |
| 770 | 791 |
| 771 ASSERT_EQ(1u, process_data_phase0.tasks.size()); | 792 ASSERT_EQ(1u, process_data_phase0.tasks.size()); |
| 772 | 793 |
| 773 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); | 794 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); |
| 774 EXPECT_EQ(kFunction, | 795 EXPECT_EQ(kFunction, |
| 775 process_data_phase0.tasks[0].birth.location.function_name); | 796 process_data_phase0.tasks[0].birth.location.function_name); |
| 776 EXPECT_EQ(kLineNumber, | 797 EXPECT_EQ(kLineNumber, |
| 777 process_data_phase0.tasks[0].birth.location.line_number); | 798 process_data_phase0.tasks[0].birth.location.line_number); |
| 778 | 799 |
| 779 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].birth.thread_name); | 800 EXPECT_EQ(kMainThreadName, |
| 801 process_data_phase0.tasks[0].birth.sanitized_thread_name); |
| 780 | 802 |
| 781 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); | 803 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); |
| 782 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sum); | 804 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sum); |
| 783 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_max); | 805 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_max); |
| 784 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sample); | 806 EXPECT_EQ(6, process_data_phase0.tasks[0].death_data.run_duration_sample); |
| 785 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sum); | 807 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sum); |
| 786 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_max); | 808 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_max); |
| 787 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sample); | 809 EXPECT_EQ(7, process_data_phase0.tasks[0].death_data.queue_duration_sample); |
| 788 | 810 |
| 789 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].death_thread_name); | 811 EXPECT_EQ(kMainThreadName, |
| 812 process_data_phase0.tasks[0].death_sanitized_thread_name); |
| 790 | 813 |
| 791 auto it1 = process_data.phased_snapshots.find(1); | 814 auto it1 = process_data.phased_snapshots.find(1); |
| 792 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); | 815 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); |
| 793 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; | 816 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; |
| 794 | 817 |
| 795 ASSERT_EQ(1u, process_data_phase1.tasks.size()); | 818 ASSERT_EQ(1u, process_data_phase1.tasks.size()); |
| 796 | 819 |
| 797 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); | 820 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); |
| 798 EXPECT_EQ(kFunction, | 821 EXPECT_EQ(kFunction, |
| 799 process_data_phase1.tasks[0].birth.location.function_name); | 822 process_data_phase1.tasks[0].birth.location.function_name); |
| 800 EXPECT_EQ(kLineNumber, | 823 EXPECT_EQ(kLineNumber, |
| 801 process_data_phase1.tasks[0].birth.location.line_number); | 824 process_data_phase1.tasks[0].birth.location.line_number); |
| 802 | 825 |
| 803 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].birth.thread_name); | 826 EXPECT_EQ(kMainThreadName, |
| 827 process_data_phase1.tasks[0].birth.sanitized_thread_name); |
| 804 | 828 |
| 805 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); | 829 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); |
| 806 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sum); | 830 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sum); |
| 807 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_max); | 831 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_max); |
| 808 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sample); | 832 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.run_duration_sample); |
| 809 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sum); | 833 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sum); |
| 810 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_max); | 834 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_max); |
| 811 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sample); | 835 EXPECT_EQ(5, process_data_phase1.tasks[0].death_data.queue_duration_sample); |
| 812 | 836 |
| 813 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].death_thread_name); | 837 EXPECT_EQ(kMainThreadName, |
| 838 process_data_phase1.tasks[0].death_sanitized_thread_name); |
| 814 | 839 |
| 815 auto it2 = process_data.phased_snapshots.find(2); | 840 auto it2 = process_data.phased_snapshots.find(2); |
| 816 ASSERT_TRUE(it2 != process_data.phased_snapshots.end()); | 841 ASSERT_TRUE(it2 != process_data.phased_snapshots.end()); |
| 817 const ProcessDataPhaseSnapshot& process_data_phase2 = it2->second; | 842 const ProcessDataPhaseSnapshot& process_data_phase2 = it2->second; |
| 818 | 843 |
| 819 ASSERT_EQ(1u, process_data_phase2.tasks.size()); | 844 ASSERT_EQ(1u, process_data_phase2.tasks.size()); |
| 820 | 845 |
| 821 EXPECT_EQ(kFile, process_data_phase2.tasks[0].birth.location.file_name); | 846 EXPECT_EQ(kFile, process_data_phase2.tasks[0].birth.location.file_name); |
| 822 EXPECT_EQ(kFunction, | 847 EXPECT_EQ(kFunction, |
| 823 process_data_phase2.tasks[0].birth.location.function_name); | 848 process_data_phase2.tasks[0].birth.location.function_name); |
| 824 EXPECT_EQ(kLineNumber, | 849 EXPECT_EQ(kLineNumber, |
| 825 process_data_phase2.tasks[0].birth.location.line_number); | 850 process_data_phase2.tasks[0].birth.location.line_number); |
| 826 | 851 |
| 827 EXPECT_EQ(kMainThreadName, process_data_phase2.tasks[0].birth.thread_name); | 852 EXPECT_EQ(kMainThreadName, |
| 853 process_data_phase2.tasks[0].birth.sanitized_thread_name); |
| 828 | 854 |
| 829 EXPECT_EQ(1, process_data_phase2.tasks[0].death_data.count); | 855 EXPECT_EQ(1, process_data_phase2.tasks[0].death_data.count); |
| 830 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sum); | 856 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sum); |
| 831 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_max); | 857 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_max); |
| 832 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sample); | 858 EXPECT_EQ(2, process_data_phase2.tasks[0].death_data.run_duration_sample); |
| 833 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sum); | 859 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sum); |
| 834 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_max); | 860 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_max); |
| 835 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sample); | 861 EXPECT_EQ(3, process_data_phase2.tasks[0].death_data.queue_duration_sample); |
| 836 | 862 |
| 837 EXPECT_EQ(kMainThreadName, process_data_phase2.tasks[0].death_thread_name); | 863 EXPECT_EQ(kMainThreadName, |
| 864 process_data_phase2.tasks[0].death_sanitized_thread_name); |
| 838 | 865 |
| 839 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 866 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 840 } | 867 } |
| 841 | 868 |
| 842 TEST_F(TrackedObjectsTest, TwoPhasesSecondEmpty) { | 869 TEST_F(TrackedObjectsTest, TwoPhasesSecondEmpty) { |
| 843 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 870 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |
| 844 | 871 |
| 845 const char kFunction[] = "TwoPhasesSecondEmpty"; | 872 const char kFunction[] = "TwoPhasesSecondEmpty"; |
| 846 Location location(kFunction, kFile, kLineNumber, NULL); | 873 Location location(kFunction, kFile, kLineNumber, NULL); |
| 847 ThreadData::InitializeThreadContext(kMainThreadName); | 874 ThreadData::InitializeThreadContext(kMainThreadName); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 874 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; | 901 const ProcessDataPhaseSnapshot& process_data_phase0 = it0->second; |
| 875 | 902 |
| 876 ASSERT_EQ(1u, process_data_phase0.tasks.size()); | 903 ASSERT_EQ(1u, process_data_phase0.tasks.size()); |
| 877 | 904 |
| 878 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); | 905 EXPECT_EQ(kFile, process_data_phase0.tasks[0].birth.location.file_name); |
| 879 EXPECT_EQ(kFunction, | 906 EXPECT_EQ(kFunction, |
| 880 process_data_phase0.tasks[0].birth.location.function_name); | 907 process_data_phase0.tasks[0].birth.location.function_name); |
| 881 EXPECT_EQ(kLineNumber, | 908 EXPECT_EQ(kLineNumber, |
| 882 process_data_phase0.tasks[0].birth.location.line_number); | 909 process_data_phase0.tasks[0].birth.location.line_number); |
| 883 | 910 |
| 884 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].birth.thread_name); | 911 EXPECT_EQ(kMainThreadName, |
| 912 process_data_phase0.tasks[0].birth.sanitized_thread_name); |
| 885 | 913 |
| 886 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); | 914 EXPECT_EQ(1, process_data_phase0.tasks[0].death_data.count); |
| 887 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum); | 915 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sum); |
| 888 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max); | 916 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_max); |
| 889 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample); | 917 EXPECT_EQ(2, process_data_phase0.tasks[0].death_data.run_duration_sample); |
| 890 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum); | 918 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sum); |
| 891 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max); | 919 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_max); |
| 892 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample); | 920 EXPECT_EQ(4, process_data_phase0.tasks[0].death_data.queue_duration_sample); |
| 893 | 921 |
| 894 EXPECT_EQ(kMainThreadName, process_data_phase0.tasks[0].death_thread_name); | 922 EXPECT_EQ(kMainThreadName, |
| 923 process_data_phase0.tasks[0].death_sanitized_thread_name); |
| 895 | 924 |
| 896 auto it1 = process_data.phased_snapshots.find(1); | 925 auto it1 = process_data.phased_snapshots.find(1); |
| 897 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); | 926 ASSERT_TRUE(it1 != process_data.phased_snapshots.end()); |
| 898 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; | 927 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; |
| 899 | 928 |
| 900 ASSERT_EQ(0u, process_data_phase1.tasks.size()); | 929 ASSERT_EQ(0u, process_data_phase1.tasks.size()); |
| 901 | 930 |
| 902 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 931 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 903 } | 932 } |
| 904 | 933 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 937 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; | 966 const ProcessDataPhaseSnapshot& process_data_phase1 = it1->second; |
| 938 | 967 |
| 939 ASSERT_EQ(1u, process_data_phase1.tasks.size()); | 968 ASSERT_EQ(1u, process_data_phase1.tasks.size()); |
| 940 | 969 |
| 941 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); | 970 EXPECT_EQ(kFile, process_data_phase1.tasks[0].birth.location.file_name); |
| 942 EXPECT_EQ(kFunction, | 971 EXPECT_EQ(kFunction, |
| 943 process_data_phase1.tasks[0].birth.location.function_name); | 972 process_data_phase1.tasks[0].birth.location.function_name); |
| 944 EXPECT_EQ(kLineNumber, | 973 EXPECT_EQ(kLineNumber, |
| 945 process_data_phase1.tasks[0].birth.location.line_number); | 974 process_data_phase1.tasks[0].birth.location.line_number); |
| 946 | 975 |
| 947 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].birth.thread_name); | 976 EXPECT_EQ(kMainThreadName, |
| 977 process_data_phase1.tasks[0].birth.sanitized_thread_name); |
| 948 | 978 |
| 949 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); | 979 EXPECT_EQ(1, process_data_phase1.tasks[0].death_data.count); |
| 950 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sum); | 980 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sum); |
| 951 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_max); | 981 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_max); |
| 952 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sample); | 982 EXPECT_EQ(2, process_data_phase1.tasks[0].death_data.run_duration_sample); |
| 953 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sum); | 983 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sum); |
| 954 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_max); | 984 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_max); |
| 955 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sample); | 985 EXPECT_EQ(4, process_data_phase1.tasks[0].death_data.queue_duration_sample); |
| 956 | 986 |
| 957 EXPECT_EQ(kMainThreadName, process_data_phase1.tasks[0].death_thread_name); | 987 EXPECT_EQ(kMainThreadName, |
| 988 process_data_phase1.tasks[0].death_sanitized_thread_name); |
| 958 | 989 |
| 959 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 990 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 960 } | 991 } |
| 961 | 992 |
| 962 // We will deactivate tracking after the birth, and before the death, and | 993 // We will deactivate tracking after the birth, and before the death, and |
| 963 // demonstrate that the lifecycle is completely tallied. This ensures that | 994 // demonstrate that the lifecycle is completely tallied. This ensures that |
| 964 // our tallied births are matched by tallied deaths (except for when the | 995 // our tallied births are matched by tallied deaths (except for when the |
| 965 // task is still running, or is queued). | 996 // task is still running, or is queued). |
| 966 TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToSnapshotMainThread) { | 997 TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToSnapshotMainThread) { |
| 967 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 998 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1114 ASSERT_TRUE(it != process_data.phased_snapshots.end()); | 1145 ASSERT_TRUE(it != process_data.phased_snapshots.end()); |
| 1115 const ProcessDataPhaseSnapshot& process_data_phase = it->second; | 1146 const ProcessDataPhaseSnapshot& process_data_phase = it->second; |
| 1116 | 1147 |
| 1117 ASSERT_EQ(2u, process_data_phase.tasks.size()); | 1148 ASSERT_EQ(2u, process_data_phase.tasks.size()); |
| 1118 | 1149 |
| 1119 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); | 1150 EXPECT_EQ(kFile, process_data_phase.tasks[0].birth.location.file_name); |
| 1120 EXPECT_EQ(kFunction, | 1151 EXPECT_EQ(kFunction, |
| 1121 process_data_phase.tasks[0].birth.location.function_name); | 1152 process_data_phase.tasks[0].birth.location.function_name); |
| 1122 EXPECT_EQ(kLineNumber, | 1153 EXPECT_EQ(kLineNumber, |
| 1123 process_data_phase.tasks[0].birth.location.line_number); | 1154 process_data_phase.tasks[0].birth.location.line_number); |
| 1124 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].birth.thread_name); | 1155 EXPECT_EQ(kMainThreadName, |
| 1156 process_data_phase.tasks[0].birth.sanitized_thread_name); |
| 1125 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); | 1157 EXPECT_EQ(1, process_data_phase.tasks[0].death_data.count); |
| 1126 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sum); | 1158 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sum); |
| 1127 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_max); | 1159 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_max); |
| 1128 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sample); | 1160 EXPECT_EQ(2, process_data_phase.tasks[0].death_data.run_duration_sample); |
| 1129 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sum); | 1161 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sum); |
| 1130 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_max); | 1162 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_max); |
| 1131 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sample); | 1163 EXPECT_EQ(4, process_data_phase.tasks[0].death_data.queue_duration_sample); |
| 1132 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[0].death_thread_name); | 1164 EXPECT_EQ(kMainThreadName, |
| 1165 process_data_phase.tasks[0].death_sanitized_thread_name); |
| 1133 EXPECT_EQ(kFile, process_data_phase.tasks[1].birth.location.file_name); | 1166 EXPECT_EQ(kFile, process_data_phase.tasks[1].birth.location.file_name); |
| 1134 EXPECT_EQ(kFunction, | 1167 EXPECT_EQ(kFunction, |
| 1135 process_data_phase.tasks[1].birth.location.function_name); | 1168 process_data_phase.tasks[1].birth.location.function_name); |
| 1136 EXPECT_EQ(kSecondFakeLineNumber, | 1169 EXPECT_EQ(kSecondFakeLineNumber, |
| 1137 process_data_phase.tasks[1].birth.location.line_number); | 1170 process_data_phase.tasks[1].birth.location.line_number); |
| 1138 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[1].birth.thread_name); | 1171 EXPECT_EQ(kMainThreadName, |
| 1172 process_data_phase.tasks[1].birth.sanitized_thread_name); |
| 1139 EXPECT_EQ(1, process_data_phase.tasks[1].death_data.count); | 1173 EXPECT_EQ(1, process_data_phase.tasks[1].death_data.count); |
| 1140 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sum); | 1174 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sum); |
| 1141 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_max); | 1175 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_max); |
| 1142 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sample); | 1176 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.run_duration_sample); |
| 1143 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sum); | 1177 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sum); |
| 1144 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_max); | 1178 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_max); |
| 1145 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sample); | 1179 EXPECT_EQ(0, process_data_phase.tasks[1].death_data.queue_duration_sample); |
| 1146 EXPECT_EQ(kStillAlive, process_data_phase.tasks[1].death_thread_name); | 1180 EXPECT_EQ(kStillAlive, |
| 1181 process_data_phase.tasks[1].death_sanitized_thread_name); |
| 1147 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 1182 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 1148 } | 1183 } |
| 1149 | 1184 |
| 1150 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) { | 1185 TEST_F(TrackedObjectsTest, TaskWithNestedExclusion) { |
| 1151 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); | 1186 ThreadData::InitializeAndSetTrackingStatus(ThreadData::PROFILING_ACTIVE); |
| 1152 | 1187 |
| 1153 const char kFunction[] = "TaskWithNestedExclusion"; | 1188 const char kFunction[] = "TaskWithNestedExclusion"; |
| 1154 Location location(kFunction, kFile, kLineNumber, NULL); | 1189 Location location(kFunction, kFile, kLineNumber, NULL); |
| 1155 TallyABirth(location, kMainThreadName); | 1190 TallyABirth(location, kMainThreadName); |
| 1156 | 1191 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 ? 0 | 1314 ? 0 |
| 1280 : 1; | 1315 : 1; |
| 1281 int t1 = 1 - t0; | 1316 int t1 = 1 - t0; |
| 1282 | 1317 |
| 1283 ASSERT_EQ(2u, process_data_phase.tasks.size()); | 1318 ASSERT_EQ(2u, process_data_phase.tasks.size()); |
| 1284 EXPECT_EQ(kFile, process_data_phase.tasks[t0].birth.location.file_name); | 1319 EXPECT_EQ(kFile, process_data_phase.tasks[t0].birth.location.file_name); |
| 1285 EXPECT_EQ(kFunction, | 1320 EXPECT_EQ(kFunction, |
| 1286 process_data_phase.tasks[t0].birth.location.function_name); | 1321 process_data_phase.tasks[t0].birth.location.function_name); |
| 1287 EXPECT_EQ(kLineNumber, | 1322 EXPECT_EQ(kLineNumber, |
| 1288 process_data_phase.tasks[t0].birth.location.line_number); | 1323 process_data_phase.tasks[t0].birth.location.line_number); |
| 1289 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].birth.thread_name); | 1324 EXPECT_EQ(kMainThreadName, |
| 1325 process_data_phase.tasks[t0].birth.sanitized_thread_name); |
| 1290 EXPECT_EQ(1, process_data_phase.tasks[t0].death_data.count); | 1326 EXPECT_EQ(1, process_data_phase.tasks[t0].death_data.count); |
| 1291 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sum); | 1327 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sum); |
| 1292 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_max); | 1328 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_max); |
| 1293 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sample); | 1329 EXPECT_EQ(6, process_data_phase.tasks[t0].death_data.run_duration_sample); |
| 1294 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sum); | 1330 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sum); |
| 1295 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_max); | 1331 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_max); |
| 1296 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sample); | 1332 EXPECT_EQ(4, process_data_phase.tasks[t0].death_data.queue_duration_sample); |
| 1297 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t0].death_thread_name); | 1333 EXPECT_EQ(kMainThreadName, |
| 1334 process_data_phase.tasks[t0].death_sanitized_thread_name); |
| 1298 EXPECT_EQ(kFile, process_data_phase.tasks[t1].birth.location.file_name); | 1335 EXPECT_EQ(kFile, process_data_phase.tasks[t1].birth.location.file_name); |
| 1299 EXPECT_EQ(kFunction, | 1336 EXPECT_EQ(kFunction, |
| 1300 process_data_phase.tasks[t1].birth.location.function_name); | 1337 process_data_phase.tasks[t1].birth.location.function_name); |
| 1301 EXPECT_EQ(kSecondFakeLineNumber, | 1338 EXPECT_EQ(kSecondFakeLineNumber, |
| 1302 process_data_phase.tasks[t1].birth.location.line_number); | 1339 process_data_phase.tasks[t1].birth.location.line_number); |
| 1303 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].birth.thread_name); | 1340 EXPECT_EQ(kMainThreadName, |
| 1341 process_data_phase.tasks[t1].birth.sanitized_thread_name); |
| 1304 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.count); | 1342 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.count); |
| 1305 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sum); | 1343 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sum); |
| 1306 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max); | 1344 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_max); |
| 1307 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample); | 1345 EXPECT_EQ(2, process_data_phase.tasks[t1].death_data.run_duration_sample); |
| 1308 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum); | 1346 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sum); |
| 1309 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max); | 1347 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_max); |
| 1310 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample); | 1348 EXPECT_EQ(1, process_data_phase.tasks[t1].death_data.queue_duration_sample); |
| 1311 EXPECT_EQ(kMainThreadName, process_data_phase.tasks[t1].death_thread_name); | 1349 EXPECT_EQ(kMainThreadName, |
| 1350 process_data_phase.tasks[t1].death_sanitized_thread_name); |
| 1312 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); | 1351 EXPECT_EQ(base::GetCurrentProcId(), process_data.process_id); |
| 1313 } | 1352 } |
| 1314 | 1353 |
| 1354 // Repetitively create and stop named threads. Verify that the number of |
| 1355 // instantiated ThreadData instance is equal to the number of different |
| 1356 // sanitized thread names used in the test. |
| 1357 TEST_F(TrackedObjectsTest, ReuseRetiredThreadData) { |
| 1358 const char* const kThreadNames[] = {"Foo%d", "Bar%d", "123Dummy%d", |
| 1359 "456Dummy%d", "%d"}; |
| 1360 constexpr int kNumIterations = 10; |
| 1361 EXPECT_EQ(0, GetNumThreadData()); |
| 1362 |
| 1363 for (int i = 0; i < kNumIterations; ++i) { |
| 1364 for (const char* thread_name : kThreadNames) { |
| 1365 base::Thread thread(base::StringPrintf(thread_name, i)); |
| 1366 EXPECT_TRUE(thread.Start()); |
| 1367 } |
| 1368 } |
| 1369 |
| 1370 // Expect one ThreadData instance for each element in |kThreadNames| and one |
| 1371 // ThreadData instance for the main thread. |
| 1372 EXPECT_EQ(static_cast<int>(arraysize(kThreadNames) + 1), GetNumThreadData()); |
| 1373 } |
| 1374 |
| 1315 } // namespace tracked_objects | 1375 } // namespace tracked_objects |
| OLD | NEW |