OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/metrics/profiler/profiler_metrics_provider.h" | 5 #include "components/metrics/profiler/profiler_metrics_provider.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/metrics/metrics_hashes.h" | 10 #include "base/metrics/metrics_hashes.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 | 25 |
26 ProfilerMetricsProvider profiler_metrics_provider; | 26 ProfilerMetricsProvider profiler_metrics_provider; |
27 | 27 |
28 { | 28 { |
29 // Add data from the browser process. | 29 // Add data from the browser process. |
30 ProcessDataPhaseSnapshot process_data_phase; | 30 ProcessDataPhaseSnapshot process_data_phase; |
31 process_data_phase.tasks.push_back(TaskSnapshot()); | 31 process_data_phase.tasks.push_back(TaskSnapshot()); |
32 process_data_phase.tasks.back().birth.location.file_name = "a/b/file.h"; | 32 process_data_phase.tasks.back().birth.location.file_name = "a/b/file.h"; |
33 process_data_phase.tasks.back().birth.location.function_name = "function"; | 33 process_data_phase.tasks.back().birth.location.function_name = "function"; |
34 process_data_phase.tasks.back().birth.location.line_number = 1337; | 34 process_data_phase.tasks.back().birth.location.line_number = 1337; |
35 process_data_phase.tasks.back().birth.thread_name = "birth_thread"; | 35 process_data_phase.tasks.back().birth.sanitized_thread_name = |
| 36 "birth_thread"; |
36 process_data_phase.tasks.back().death_data.count = 37; | 37 process_data_phase.tasks.back().death_data.count = 37; |
37 process_data_phase.tasks.back().death_data.run_duration_sum = 31; | 38 process_data_phase.tasks.back().death_data.run_duration_sum = 31; |
38 process_data_phase.tasks.back().death_data.run_duration_max = 17; | 39 process_data_phase.tasks.back().death_data.run_duration_max = 17; |
39 process_data_phase.tasks.back().death_data.run_duration_sample = 13; | 40 process_data_phase.tasks.back().death_data.run_duration_sample = 13; |
40 process_data_phase.tasks.back().death_data.queue_duration_sum = 8; | 41 process_data_phase.tasks.back().death_data.queue_duration_sum = 8; |
41 process_data_phase.tasks.back().death_data.queue_duration_max = 5; | 42 process_data_phase.tasks.back().death_data.queue_duration_max = 5; |
42 process_data_phase.tasks.back().death_data.queue_duration_sample = 3; | 43 process_data_phase.tasks.back().death_data.queue_duration_sample = 3; |
43 process_data_phase.tasks.back().death_thread_name = "Still_Alive"; | 44 process_data_phase.tasks.back().death_sanitized_thread_name = "Still_Alive"; |
44 process_data_phase.tasks.push_back(TaskSnapshot()); | 45 process_data_phase.tasks.push_back(TaskSnapshot()); |
45 process_data_phase.tasks.back().birth.location.file_name = "c\\d\\file2"; | 46 process_data_phase.tasks.back().birth.location.file_name = "c\\d\\file2"; |
46 process_data_phase.tasks.back().birth.location.function_name = "function2"; | 47 process_data_phase.tasks.back().birth.location.function_name = "function2"; |
47 process_data_phase.tasks.back().birth.location.line_number = 1773; | 48 process_data_phase.tasks.back().birth.location.line_number = 1773; |
48 process_data_phase.tasks.back().birth.thread_name = "birth_thread2"; | 49 process_data_phase.tasks.back().birth.sanitized_thread_name = |
| 50 "birth_thread*"; |
49 process_data_phase.tasks.back().death_data.count = 19; | 51 process_data_phase.tasks.back().death_data.count = 19; |
50 process_data_phase.tasks.back().death_data.run_duration_sum = 23; | 52 process_data_phase.tasks.back().death_data.run_duration_sum = 23; |
51 process_data_phase.tasks.back().death_data.run_duration_max = 11; | 53 process_data_phase.tasks.back().death_data.run_duration_max = 11; |
52 process_data_phase.tasks.back().death_data.run_duration_sample = 7; | 54 process_data_phase.tasks.back().death_data.run_duration_sample = 7; |
53 process_data_phase.tasks.back().death_data.queue_duration_sum = 0; | 55 process_data_phase.tasks.back().death_data.queue_duration_sum = 0; |
54 process_data_phase.tasks.back().death_data.queue_duration_max = 0; | 56 process_data_phase.tasks.back().death_data.queue_duration_max = 0; |
55 process_data_phase.tasks.back().death_data.queue_duration_sample = 0; | 57 process_data_phase.tasks.back().death_data.queue_duration_sample = 0; |
56 process_data_phase.tasks.back().death_thread_name = "death_thread"; | 58 process_data_phase.tasks.back().death_sanitized_thread_name = |
| 59 "death_thread"; |
57 | 60 |
58 profiler_metrics_provider.RecordProfilerData( | 61 profiler_metrics_provider.RecordProfilerData( |
59 process_data_phase, 177, ProfilerEventProto::TrackedObject::BROWSER, 0, | 62 process_data_phase, 177, ProfilerEventProto::TrackedObject::BROWSER, 0, |
60 base::TimeDelta::FromMinutes(1), base::TimeDelta::FromMinutes(2), | 63 base::TimeDelta::FromMinutes(1), base::TimeDelta::FromMinutes(2), |
61 ProfilerEvents()); | 64 ProfilerEvents()); |
62 } | 65 } |
63 | 66 |
64 { | 67 { |
65 // Add second phase from the browser process. | 68 // Add second phase from the browser process. |
66 ProcessDataPhaseSnapshot process_data_phase; | 69 ProcessDataPhaseSnapshot process_data_phase; |
67 process_data_phase.tasks.push_back(TaskSnapshot()); | 70 process_data_phase.tasks.push_back(TaskSnapshot()); |
68 process_data_phase.tasks.back().birth.location.file_name = "a/b/file10.h"; | 71 process_data_phase.tasks.back().birth.location.file_name = "a/b/file10.h"; |
69 process_data_phase.tasks.back().birth.location.function_name = "function10"; | 72 process_data_phase.tasks.back().birth.location.function_name = "function10"; |
70 process_data_phase.tasks.back().birth.location.line_number = 101337; | 73 process_data_phase.tasks.back().birth.location.line_number = 101337; |
71 process_data_phase.tasks.back().birth.thread_name = "birth_thread_ten"; | 74 process_data_phase.tasks.back().birth.sanitized_thread_name = |
| 75 "birth_thread_ten"; |
72 process_data_phase.tasks.back().death_data.count = 1037; | 76 process_data_phase.tasks.back().death_data.count = 1037; |
73 process_data_phase.tasks.back().death_data.run_duration_sum = 1031; | 77 process_data_phase.tasks.back().death_data.run_duration_sum = 1031; |
74 process_data_phase.tasks.back().death_data.run_duration_max = 1017; | 78 process_data_phase.tasks.back().death_data.run_duration_max = 1017; |
75 process_data_phase.tasks.back().death_data.run_duration_sample = 1013; | 79 process_data_phase.tasks.back().death_data.run_duration_sample = 1013; |
76 process_data_phase.tasks.back().death_data.queue_duration_sum = 108; | 80 process_data_phase.tasks.back().death_data.queue_duration_sum = 108; |
77 process_data_phase.tasks.back().death_data.queue_duration_max = 105; | 81 process_data_phase.tasks.back().death_data.queue_duration_max = 105; |
78 process_data_phase.tasks.back().death_data.queue_duration_sample = 103; | 82 process_data_phase.tasks.back().death_data.queue_duration_sample = 103; |
79 process_data_phase.tasks.back().death_thread_name = "Already_Dead"; | 83 process_data_phase.tasks.back().death_sanitized_thread_name = |
| 84 "Already_Dead"; |
80 process_data_phase.tasks.push_back(TaskSnapshot()); | 85 process_data_phase.tasks.push_back(TaskSnapshot()); |
81 process_data_phase.tasks.back().birth.location.file_name = "c\\d\\file210"; | 86 process_data_phase.tasks.back().birth.location.file_name = "c\\d\\file210"; |
82 process_data_phase.tasks.back().birth.location.function_name = | 87 process_data_phase.tasks.back().birth.location.function_name = |
83 "function210"; | 88 "function210"; |
84 process_data_phase.tasks.back().birth.location.line_number = 101773; | 89 process_data_phase.tasks.back().birth.location.line_number = 101773; |
85 process_data_phase.tasks.back().birth.thread_name = "birth_thread_ten2"; | 90 process_data_phase.tasks.back().birth.sanitized_thread_name = |
| 91 "birth_thread_ten*"; |
86 process_data_phase.tasks.back().death_data.count = 1019; | 92 process_data_phase.tasks.back().death_data.count = 1019; |
87 process_data_phase.tasks.back().death_data.run_duration_sum = 1023; | 93 process_data_phase.tasks.back().death_data.run_duration_sum = 1023; |
88 process_data_phase.tasks.back().death_data.run_duration_max = 1011; | 94 process_data_phase.tasks.back().death_data.run_duration_max = 1011; |
89 process_data_phase.tasks.back().death_data.run_duration_sample = 107; | 95 process_data_phase.tasks.back().death_data.run_duration_sample = 107; |
90 process_data_phase.tasks.back().death_data.queue_duration_sum = 100; | 96 process_data_phase.tasks.back().death_data.queue_duration_sum = 100; |
91 process_data_phase.tasks.back().death_data.queue_duration_max = 100; | 97 process_data_phase.tasks.back().death_data.queue_duration_max = 100; |
92 process_data_phase.tasks.back().death_data.queue_duration_sample = 100; | 98 process_data_phase.tasks.back().death_data.queue_duration_sample = 100; |
93 process_data_phase.tasks.back().death_thread_name = "death_thread_ten"; | 99 process_data_phase.tasks.back().death_sanitized_thread_name = |
| 100 "death_thread_ten"; |
94 | 101 |
95 profiler_metrics_provider.RecordProfilerData( | 102 profiler_metrics_provider.RecordProfilerData( |
96 process_data_phase, 177, ProfilerEventProto::TrackedObject::BROWSER, 1, | 103 process_data_phase, 177, ProfilerEventProto::TrackedObject::BROWSER, 1, |
97 base::TimeDelta::FromMinutes(10), base::TimeDelta::FromMinutes(20), | 104 base::TimeDelta::FromMinutes(10), base::TimeDelta::FromMinutes(20), |
98 ProfilerEvents(1, ProfilerEventProto::EVENT_FIRST_NONEMPTY_PAINT)); | 105 ProfilerEvents(1, ProfilerEventProto::EVENT_FIRST_NONEMPTY_PAINT)); |
99 } | 106 } |
100 | 107 |
101 { | 108 { |
102 // Add data from a renderer process. | 109 // Add data from a renderer process. |
103 ProcessDataPhaseSnapshot process_data_phase; | 110 ProcessDataPhaseSnapshot process_data_phase; |
104 process_data_phase.tasks.push_back(TaskSnapshot()); | 111 process_data_phase.tasks.push_back(TaskSnapshot()); |
105 process_data_phase.tasks.back().birth.location.file_name = "file3"; | 112 process_data_phase.tasks.back().birth.location.file_name = "file3"; |
106 process_data_phase.tasks.back().birth.location.function_name = "function3"; | 113 process_data_phase.tasks.back().birth.location.function_name = "function3"; |
107 process_data_phase.tasks.back().birth.location.line_number = 7331; | 114 process_data_phase.tasks.back().birth.location.line_number = 7331; |
108 process_data_phase.tasks.back().birth.thread_name = "birth_thread3"; | 115 process_data_phase.tasks.back().birth.sanitized_thread_name = |
| 116 "birth_thread*"; |
109 process_data_phase.tasks.back().death_data.count = 137; | 117 process_data_phase.tasks.back().death_data.count = 137; |
110 process_data_phase.tasks.back().death_data.run_duration_sum = 131; | 118 process_data_phase.tasks.back().death_data.run_duration_sum = 131; |
111 process_data_phase.tasks.back().death_data.run_duration_max = 117; | 119 process_data_phase.tasks.back().death_data.run_duration_max = 117; |
112 process_data_phase.tasks.back().death_data.run_duration_sample = 113; | 120 process_data_phase.tasks.back().death_data.run_duration_sample = 113; |
113 process_data_phase.tasks.back().death_data.queue_duration_sum = 108; | 121 process_data_phase.tasks.back().death_data.queue_duration_sum = 108; |
114 process_data_phase.tasks.back().death_data.queue_duration_max = 105; | 122 process_data_phase.tasks.back().death_data.queue_duration_max = 105; |
115 process_data_phase.tasks.back().death_data.queue_duration_sample = 103; | 123 process_data_phase.tasks.back().death_data.queue_duration_sample = 103; |
116 process_data_phase.tasks.back().death_thread_name = "death_thread3"; | 124 process_data_phase.tasks.back().death_sanitized_thread_name = |
| 125 "death_thread*"; |
117 process_data_phase.tasks.push_back(TaskSnapshot()); | 126 process_data_phase.tasks.push_back(TaskSnapshot()); |
118 process_data_phase.tasks.back().birth.location.file_name = ""; | 127 process_data_phase.tasks.back().birth.location.file_name = ""; |
119 process_data_phase.tasks.back().birth.location.function_name = ""; | 128 process_data_phase.tasks.back().birth.location.function_name = ""; |
120 process_data_phase.tasks.back().birth.location.line_number = 7332; | 129 process_data_phase.tasks.back().birth.location.line_number = 7332; |
121 process_data_phase.tasks.back().birth.thread_name = ""; | 130 process_data_phase.tasks.back().birth.sanitized_thread_name = ""; |
122 process_data_phase.tasks.back().death_data.count = 138; | 131 process_data_phase.tasks.back().death_data.count = 138; |
123 process_data_phase.tasks.back().death_data.run_duration_sum = 132; | 132 process_data_phase.tasks.back().death_data.run_duration_sum = 132; |
124 process_data_phase.tasks.back().death_data.run_duration_max = 118; | 133 process_data_phase.tasks.back().death_data.run_duration_max = 118; |
125 process_data_phase.tasks.back().death_data.run_duration_sample = 114; | 134 process_data_phase.tasks.back().death_data.run_duration_sample = 114; |
126 process_data_phase.tasks.back().death_data.queue_duration_sum = 109; | 135 process_data_phase.tasks.back().death_data.queue_duration_sum = 109; |
127 process_data_phase.tasks.back().death_data.queue_duration_max = 106; | 136 process_data_phase.tasks.back().death_data.queue_duration_max = 106; |
128 process_data_phase.tasks.back().death_data.queue_duration_sample = 104; | 137 process_data_phase.tasks.back().death_data.queue_duration_sample = 104; |
129 process_data_phase.tasks.back().death_thread_name = ""; | 138 process_data_phase.tasks.back().death_sanitized_thread_name = ""; |
130 | 139 |
131 profiler_metrics_provider.RecordProfilerData( | 140 profiler_metrics_provider.RecordProfilerData( |
132 process_data_phase, 1177, ProfilerEventProto::TrackedObject::RENDERER, | 141 process_data_phase, 1177, ProfilerEventProto::TrackedObject::RENDERER, |
133 0, base::TimeDelta::FromMinutes(1), base::TimeDelta::FromMinutes(2), | 142 0, base::TimeDelta::FromMinutes(1), base::TimeDelta::FromMinutes(2), |
134 ProfilerEvents()); | 143 ProfilerEvents()); |
135 } | 144 } |
136 | 145 |
137 // Capture the data and verify that it is as expected. | 146 // Capture the data and verify that it is as expected. |
138 ChromeUserMetricsExtension uma_proto; | 147 ChromeUserMetricsExtension uma_proto; |
139 profiler_metrics_provider.ProvideGeneralMetrics(&uma_proto); | 148 profiler_metrics_provider.ProvideGeneralMetrics(&uma_proto); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 EXPECT_EQ(100, tracked_object->queue_time_total()); | 277 EXPECT_EQ(100, tracked_object->queue_time_total()); |
269 EXPECT_EQ(100, tracked_object->queue_time_sampled()); | 278 EXPECT_EQ(100, tracked_object->queue_time_sampled()); |
270 EXPECT_EQ(base::HashMetricName("death_thread_ten"), | 279 EXPECT_EQ(base::HashMetricName("death_thread_ten"), |
271 tracked_object->exec_thread_name_hash()); | 280 tracked_object->exec_thread_name_hash()); |
272 EXPECT_EQ(177U, tracked_object->process_id()); | 281 EXPECT_EQ(177U, tracked_object->process_id()); |
273 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, | 282 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, |
274 tracked_object->process_type()); | 283 tracked_object->process_type()); |
275 } | 284 } |
276 | 285 |
277 } // namespace metrics | 286 } // namespace metrics |
OLD | NEW |