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

Side by Side Diff: content/browser/service_worker/service_worker_metrics_unittest.cc

Issue 2652603002: service worker: Add UMA for navigation preload response timing. (Closed)
Patch Set: patch for landing? Created 3 years, 10 months 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "content/browser/service_worker/service_worker_metrics.h" 5 #include "content/browser/service_worker/service_worker_metrics.h"
6 6
7 #include "base/test/histogram_tester.h" 7 #include "base/test/histogram_tester.h"
8 #include "content/browser/service_worker/embedded_worker_status.h" 8 #include "content/browser/service_worker/embedded_worker_status.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 histogram_tester.ExpectTimeBucketCount(kPreparationTime, time, 1); 96 histogram_tester.ExpectTimeBucketCount(kPreparationTime, time, 1);
97 histogram_tester.ExpectTimeBucketCount( 97 histogram_tester.ExpectTimeBucketCount(
98 kPreparationTime + kNavigationPreloadSuffix, time, 1); 98 kPreparationTime + kNavigationPreloadSuffix, time, 1);
99 histogram_tester.ExpectTimeBucketCount( 99 histogram_tester.ExpectTimeBucketCount(
100 kPreparationTime + kStartWorkerExistingProcessSuffix + 100 kPreparationTime + kStartWorkerExistingProcessSuffix +
101 kNavigationPreloadSuffix, 101 kNavigationPreloadSuffix,
102 time, 1); 102 time, 1);
103 } 103 }
104 } 104 }
105 105
106 TEST(ServiceWorkerMetricsTest, NavigationPreloadResponse) {
107 // The worker was already running.
108 {
109 base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(123);
110 base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(789);
111 EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::RUNNING;
112 ServiceWorkerMetrics::StartSituation start_situation =
113 ServiceWorkerMetrics::StartSituation::UNKNOWN;
114 base::HistogramTester histogram_tester;
115 ServiceWorkerMetrics::RecordNavigationPreloadResponse(
116 worker_start, response_start, initial_worker_status, start_situation);
117 histogram_tester.ExpectTimeBucketCount(
118 "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
119 histogram_tester.ExpectUniqueSample(
120 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", false, 1);
121 histogram_tester.ExpectTotalCount(
122 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
123 "StartWorkerExistingProcess",
124 0);
125 histogram_tester.ExpectTimeBucketCount(
126 "ServiceWorker.NavigationPreload.ConcurrentTime", worker_start, 1);
127 histogram_tester.ExpectTimeBucketCount(
128 "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst",
129 worker_start, 1);
130 histogram_tester.ExpectTotalCount(
131 "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst_"
132 "StartWorkerExistingProcess",
133 0);
134 histogram_tester.ExpectTimeBucketCount(
135 "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart",
136 response_start - worker_start, 1);
137 histogram_tester.ExpectTotalCount(
138 "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart_"
139 "StartWorkerExistingProcess",
140 0);
141 }
142
143 // The worker had to start up.
144 {
145 base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(234);
146 base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(789);
147 EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::STOPPED;
148 ServiceWorkerMetrics::StartSituation start_situation =
149 ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS;
150 base::HistogramTester histogram_tester;
151 ServiceWorkerMetrics::RecordNavigationPreloadResponse(
152 worker_start, response_start, initial_worker_status, start_situation);
153 histogram_tester.ExpectTimeBucketCount(
154 "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
155 histogram_tester.ExpectUniqueSample(
156 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", false, 1);
157 histogram_tester.ExpectUniqueSample(
158 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
159 "StartWorkerExistingProcess",
160 false, 1);
161 histogram_tester.ExpectTimeBucketCount(
162 "ServiceWorker.NavigationPreload.ConcurrentTime", worker_start, 1);
163 histogram_tester.ExpectTimeBucketCount(
164 "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst",
165 worker_start, 1);
166 histogram_tester.ExpectTimeBucketCount(
167 "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst_"
168 "StartWorkerExistingProcess",
169 worker_start, 1);
170 histogram_tester.ExpectTimeBucketCount(
171 "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart",
172 response_start - worker_start, 1);
173 histogram_tester.ExpectTimeBucketCount(
174 "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart_"
175 "StartWorkerExistingProcess",
176 response_start - worker_start, 1);
177 }
178
179 // The worker had to start up. But it happened during browser startup.
180 {
181 base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(456);
182 base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(789);
183 EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::STOPPED;
184 ServiceWorkerMetrics::StartSituation start_situation =
185 ServiceWorkerMetrics::StartSituation::DURING_STARTUP;
186 base::HistogramTester histogram_tester;
187 ServiceWorkerMetrics::RecordNavigationPreloadResponse(
188 worker_start, response_start, initial_worker_status, start_situation);
189 histogram_tester.ExpectTimeBucketCount(
190 "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
191 histogram_tester.ExpectUniqueSample(
192 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", false, 1);
193 histogram_tester.ExpectTotalCount(
194 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
195 "StartWorkerExistingProcess",
196 0);
197 histogram_tester.ExpectTimeBucketCount(
198 "ServiceWorker.NavigationPreload.ConcurrentTime", worker_start, 1);
199 histogram_tester.ExpectTimeBucketCount(
200 "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst",
201 worker_start, 1);
202 histogram_tester.ExpectTotalCount(
203 "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst_"
204 "StartWorkerExistingProcess",
205 0);
206 histogram_tester.ExpectTimeBucketCount(
207 "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart",
208 response_start - worker_start, 1);
209 histogram_tester.ExpectTotalCount(
210 "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart_"
211 "StartWorkerExistingProcess",
212 0);
213 }
214
215 // The worker had to start up, and navigation preload finished first.
216 {
217 base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(2345);
218 base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(456);
219 EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::STOPPED;
220 ServiceWorkerMetrics::StartSituation start_situation =
221 ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS;
222 base::HistogramTester histogram_tester;
223 ServiceWorkerMetrics::RecordNavigationPreloadResponse(
224 worker_start, response_start, initial_worker_status, start_situation);
225 histogram_tester.ExpectTimeBucketCount(
226 "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
227 histogram_tester.ExpectUniqueSample(
228 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", true, 1);
229 histogram_tester.ExpectUniqueSample(
230 "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
231 "StartWorkerExistingProcess",
232 true, 1);
233 histogram_tester.ExpectTimeBucketCount(
234 "ServiceWorker.NavigationPreload.ConcurrentTime", response_start, 1);
235 histogram_tester.ExpectTimeBucketCount(
236 "ServiceWorker.NavigationPreload.ConcurrentTime_NavPreloadFirst",
237 response_start, 1);
238 histogram_tester.ExpectTimeBucketCount(
239 "ServiceWorker.NavigationPreload.ConcurrentTime_NavPreloadFirst_"
240 "StartWorkerExistingProcess",
241 response_start, 1);
242 histogram_tester.ExpectTimeBucketCount(
243 "ServiceWorker.NavigationPreload.SWStartAfterNavPreload",
244 worker_start - response_start, 1);
245 histogram_tester.ExpectTimeBucketCount(
246 "ServiceWorker.NavigationPreload.SWStartAfterNavPreload_"
247 "StartWorkerExistingProcess",
248 worker_start - response_start, 1);
249 }
250 }
251
106 } // namespace content 252 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698