| 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 |