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 |