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

Unified Diff: content/browser/service_worker/service_worker_metrics_unittest.cc

Issue 2660423002: M57: service worker: Add UMA for navigation preload response timing. (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_metrics_unittest.cc
diff --git a/content/browser/service_worker/service_worker_metrics_unittest.cc b/content/browser/service_worker/service_worker_metrics_unittest.cc
index 3348d6c28ec19e8891cf2c6b6ad03f3e67e55bb8..6858630b173f17b4e3f6a86b9993773eb0bc1a3d 100644
--- a/content/browser/service_worker/service_worker_metrics_unittest.cc
+++ b/content/browser/service_worker/service_worker_metrics_unittest.cc
@@ -103,4 +103,150 @@ TEST(ServiceWorkerMetricsTest, ActivatedWorkerPreparation) {
}
}
+TEST(ServiceWorkerMetricsTest, NavigationPreloadResponse) {
+ // The worker was already running.
+ {
+ base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(123);
+ base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(789);
+ EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::RUNNING;
+ ServiceWorkerMetrics::StartSituation start_situation =
+ ServiceWorkerMetrics::StartSituation::UNKNOWN;
+ base::HistogramTester histogram_tester;
+ ServiceWorkerMetrics::RecordNavigationPreloadResponse(
+ worker_start, response_start, initial_worker_status, start_situation);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
+ histogram_tester.ExpectUniqueSample(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", false, 1);
+ histogram_tester.ExpectTotalCount(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
+ "StartWorkerExistingProcess",
+ 0);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime", worker_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst",
+ worker_start, 1);
+ histogram_tester.ExpectTotalCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst_"
+ "StartWorkerExistingProcess",
+ 0);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart",
+ response_start - worker_start, 1);
+ histogram_tester.ExpectTotalCount(
+ "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart_"
+ "StartWorkerExistingProcess",
+ 0);
+ }
+
+ // The worker had to start up.
+ {
+ base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(234);
+ base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(789);
+ EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::STOPPED;
+ ServiceWorkerMetrics::StartSituation start_situation =
+ ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS;
+ base::HistogramTester histogram_tester;
+ ServiceWorkerMetrics::RecordNavigationPreloadResponse(
+ worker_start, response_start, initial_worker_status, start_situation);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
+ histogram_tester.ExpectUniqueSample(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", false, 1);
+ histogram_tester.ExpectUniqueSample(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
+ "StartWorkerExistingProcess",
+ false, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime", worker_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst",
+ worker_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst_"
+ "StartWorkerExistingProcess",
+ worker_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart",
+ response_start - worker_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart_"
+ "StartWorkerExistingProcess",
+ response_start - worker_start, 1);
+ }
+
+ // The worker had to start up. But it happened during browser startup.
+ {
+ base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(456);
+ base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(789);
+ EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::STOPPED;
+ ServiceWorkerMetrics::StartSituation start_situation =
+ ServiceWorkerMetrics::StartSituation::DURING_STARTUP;
+ base::HistogramTester histogram_tester;
+ ServiceWorkerMetrics::RecordNavigationPreloadResponse(
+ worker_start, response_start, initial_worker_status, start_situation);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
+ histogram_tester.ExpectUniqueSample(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", false, 1);
+ histogram_tester.ExpectTotalCount(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
+ "StartWorkerExistingProcess",
+ 0);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime", worker_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst",
+ worker_start, 1);
+ histogram_tester.ExpectTotalCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_SWStartFirst_"
+ "StartWorkerExistingProcess",
+ 0);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart",
+ response_start - worker_start, 1);
+ histogram_tester.ExpectTotalCount(
+ "ServiceWorker.NavigationPreload.NavPreloadAfterSWStart_"
+ "StartWorkerExistingProcess",
+ 0);
+ }
+
+ // The worker had to start up, and navigation preload finished first.
+ {
+ base::TimeDelta worker_start = base::TimeDelta::FromMilliseconds(2345);
+ base::TimeDelta response_start = base::TimeDelta::FromMilliseconds(456);
+ EmbeddedWorkerStatus initial_worker_status = EmbeddedWorkerStatus::STOPPED;
+ ServiceWorkerMetrics::StartSituation start_situation =
+ ServiceWorkerMetrics::StartSituation::EXISTING_PROCESS;
+ base::HistogramTester histogram_tester;
+ ServiceWorkerMetrics::RecordNavigationPreloadResponse(
+ worker_start, response_start, initial_worker_status, start_situation);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ResponseTime", response_start, 1);
+ histogram_tester.ExpectUniqueSample(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker", true, 1);
+ histogram_tester.ExpectUniqueSample(
+ "ServiceWorker.NavigationPreload.FinishedBeforeStartWorker_"
+ "StartWorkerExistingProcess",
+ true, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime", response_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_NavPreloadFirst",
+ response_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.ConcurrentTime_NavPreloadFirst_"
+ "StartWorkerExistingProcess",
+ response_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.SWStartAfterNavPreload",
+ worker_start - response_start, 1);
+ histogram_tester.ExpectTimeBucketCount(
+ "ServiceWorker.NavigationPreload.SWStartAfterNavPreload_"
+ "StartWorkerExistingProcess",
+ worker_start - response_start, 1);
+ }
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698