| OLD | NEW |
| 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 Loading... |
| 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 |
| OLD | NEW |