Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(521)

Side by Side Diff: components/metrics/profiler/profiler_metrics_provider_unittest.cc

Issue 2488073002: Reuse ThreadData instances associated with terminated named threads. (Closed)
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698