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

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

Issue 2706923003: Add UMA for how long service workers run for. (Closed)
Patch Set: tweaks, fmt Created 3 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/browser/service_worker/service_worker_lifetime_tracker.h"
6
7 #include "base/test/histogram_tester.h"
8 #include "base/test/simple_test_tick_clock.h"
9 #include "base/time/tick_clock.h"
10 #include "content/public/test/test_utils.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace content {
14
15 class ServiceWorkerLifetimeTrackerTest : public testing::Test {
16 public:
17 ServiceWorkerLifetimeTrackerTest()
18 : tick_clock_(new base::SimpleTestTickClock()),
19 tracker_(base::WrapUnique(tick_clock_)) {}
20
21 base::SimpleTestTickClock* tick_clock() { return tick_clock_; }
22 ServiceWorkerLifetimeTracker* tracker() { return &tracker_; }
23
24 private:
25 // Not owned.
26 base::SimpleTestTickClock* tick_clock_;
27
28 ServiceWorkerLifetimeTracker tracker_;
29 };
30
31 TEST_F(ServiceWorkerLifetimeTrackerTest, Metrics) {
32 int64_t kVersion1 = 13; // dummy value
33 int64_t kVersion2 = 14; // dummy value
34
35 tick_clock()->SetNowTicks(base::TimeTicks::Now());
36
37 // Start a worker.
38 tracker()->StartTiming(kVersion2);
39
40 // Run a worker for 10 seconds.
41 {
42 base::HistogramTester metrics;
43 tracker()->StartTiming(kVersion1);
44 tick_clock()->Advance(base::TimeDelta::FromSeconds(10));
45 tracker()->StopTiming(kVersion1);
46 metrics.ExpectTimeBucketCount("ServiceWorker.Runtime",
47 base::TimeDelta::FromSeconds(10), 1);
48 }
49
50 // Advance 10 minutes and stop the worker. It should record Runtime.
51 {
52 base::HistogramTester metrics;
53 tick_clock()->Advance(base::TimeDelta::FromMinutes(10));
54 tracker()->StopTiming(kVersion2);
55 metrics.ExpectTimeBucketCount(
56 "ServiceWorker.Runtime",
57 base::TimeDelta::FromMinutes(10) + base::TimeDelta::FromSeconds(10), 1);
58 }
59
60 {
61 base::HistogramTester metrics;
62 // Start a worker and abort the timing.
63 tracker()->StartTiming(kVersion1);
64 tick_clock()->Advance(base::TimeDelta::FromSeconds(10));
65 tracker()->AbortTiming(kVersion1);
66
67 // Aborting multiple times should be fine.
68 tracker()->AbortTiming(kVersion1);
69 tracker()->AbortTiming(kVersion1);
70 // StopTiming should not record a timing.
71 tracker()->StopTiming(kVersion1);
72 tracker()->StopTiming(kVersion1);
73
74 metrics.ExpectTotalCount("ServiceWorker.Runtime", 0);
75 }
76 }
77
78 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698