OLD | NEW |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/browser_watcher/watcher_metrics_provider_win.h" | 5 #include "components/browser_watcher/watcher_metrics_provider_win.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <cstdlib> | 10 #include <cstdlib> |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 } // namespace | 80 } // namespace |
81 | 81 |
82 TEST_F(WatcherMetricsProviderWinTest, RecordsStabilityHistogram) { | 82 TEST_F(WatcherMetricsProviderWinTest, RecordsStabilityHistogram) { |
83 // Record multiple success exits. | 83 // Record multiple success exits. |
84 for (size_t i = 0; i < 11; ++i) | 84 for (size_t i = 0; i < 11; ++i) |
85 AddProcessExitCode(false, 0); | 85 AddProcessExitCode(false, 0); |
86 | 86 |
87 // Record a single failure. | 87 // Record a single failure. |
88 AddProcessExitCode(false, 100); | 88 AddProcessExitCode(false, 100); |
89 | 89 |
90 WatcherMetricsProviderWin provider(kRegistryPath, test_task_runner_.get()); | 90 WatcherMetricsProviderWin provider(kRegistryPath, base::FilePath(), |
| 91 base::FilePath(), test_task_runner_.get()); |
91 | 92 |
92 provider.ProvideStabilityMetrics(NULL); | 93 provider.ProvideStabilityMetrics(NULL); |
93 histogram_tester_.ExpectBucketCount( | 94 histogram_tester_.ExpectBucketCount( |
94 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 0, 11); | 95 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 0, 11); |
95 histogram_tester_.ExpectBucketCount( | 96 histogram_tester_.ExpectBucketCount( |
96 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 100, 1); | 97 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 100, 1); |
97 histogram_tester_.ExpectTotalCount( | 98 histogram_tester_.ExpectTotalCount( |
98 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 12); | 99 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 12); |
99 | 100 |
100 // Verify that the reported values are gone. | 101 // Verify that the reported values are gone. |
101 EXPECT_EQ(0u, ExitCodeRegistryPathValueCount()); | 102 EXPECT_EQ(0u, ExitCodeRegistryPathValueCount()); |
102 } | 103 } |
103 | 104 |
104 TEST_F(WatcherMetricsProviderWinTest, DoesNotReportOwnProcessId) { | 105 TEST_F(WatcherMetricsProviderWinTest, DoesNotReportOwnProcessId) { |
105 // Record multiple success exits. | 106 // Record multiple success exits. |
106 for (size_t i = 0; i < 11; ++i) | 107 for (size_t i = 0; i < 11; ++i) |
107 AddProcessExitCode(i, 0); | 108 AddProcessExitCode(i, 0); |
108 | 109 |
109 // Record own process as STILL_ACTIVE. | 110 // Record own process as STILL_ACTIVE. |
110 AddProcessExitCode(true, STILL_ACTIVE); | 111 AddProcessExitCode(true, STILL_ACTIVE); |
111 | 112 |
112 WatcherMetricsProviderWin provider(kRegistryPath, test_task_runner_.get()); | 113 WatcherMetricsProviderWin provider(kRegistryPath, base::FilePath(), |
| 114 base::FilePath(), test_task_runner_.get()); |
113 | 115 |
114 provider.ProvideStabilityMetrics(NULL); | 116 provider.ProvideStabilityMetrics(NULL); |
115 histogram_tester_.ExpectUniqueSample( | 117 histogram_tester_.ExpectUniqueSample( |
116 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 0, 11); | 118 WatcherMetricsProviderWin::kBrowserExitCodeHistogramName, 0, 11); |
117 | 119 |
118 // Verify that the reported values are gone. | 120 // Verify that the reported values are gone. |
119 EXPECT_EQ(1u, ExitCodeRegistryPathValueCount()); | 121 EXPECT_EQ(1u, ExitCodeRegistryPathValueCount()); |
120 } | 122 } |
121 | 123 |
122 TEST_F(WatcherMetricsProviderWinTest, DeletesRecordedExitFunnelEvents) { | 124 TEST_F(WatcherMetricsProviderWinTest, DeletesRecordedExitFunnelEvents) { |
123 // Record an exit funnel and make sure the registry is cleaned up on | 125 // Record an exit funnel and make sure the registry is cleaned up on |
124 // reporting, without recording any events. | 126 // reporting, without recording any events. |
125 AddExitFunnelEvent(100, L"One", 1000 * 1000); | 127 AddExitFunnelEvent(100, L"One", 1000 * 1000); |
126 AddExitFunnelEvent(101, L"Two", 1010 * 1000); | 128 AddExitFunnelEvent(101, L"Two", 1010 * 1000); |
127 AddExitFunnelEvent(102, L"Three", 990 * 1000); | 129 AddExitFunnelEvent(102, L"Three", 990 * 1000); |
128 | 130 |
129 base::win::RegistryKeyIterator it(HKEY_CURRENT_USER, kRegistryPath); | 131 base::win::RegistryKeyIterator it(HKEY_CURRENT_USER, kRegistryPath); |
130 EXPECT_EQ(3u, it.SubkeyCount()); | 132 EXPECT_EQ(3u, it.SubkeyCount()); |
131 | 133 |
132 WatcherMetricsProviderWin provider(kRegistryPath, test_task_runner_.get()); | 134 WatcherMetricsProviderWin provider(kRegistryPath, base::FilePath(), |
| 135 base::FilePath(), test_task_runner_.get()); |
133 | 136 |
134 provider.ProvideStabilityMetrics(NULL); | 137 provider.ProvideStabilityMetrics(NULL); |
135 // Make sure the exit funnel events are no longer recorded in histograms. | 138 // Make sure the exit funnel events are no longer recorded in histograms. |
136 EXPECT_TRUE( | 139 EXPECT_TRUE( |
137 histogram_tester_.GetAllSamples("Stability.ExitFunnel.One").empty()); | 140 histogram_tester_.GetAllSamples("Stability.ExitFunnel.One").empty()); |
138 EXPECT_TRUE( | 141 EXPECT_TRUE( |
139 histogram_tester_.GetAllSamples("Stability.ExitFunnel.Two").empty()); | 142 histogram_tester_.GetAllSamples("Stability.ExitFunnel.Two").empty()); |
140 EXPECT_TRUE( | 143 EXPECT_TRUE( |
141 histogram_tester_.GetAllSamples("Stability.ExitFunnel.Three").empty()); | 144 histogram_tester_.GetAllSamples("Stability.ExitFunnel.Three").empty()); |
142 | 145 |
(...skipping 13 matching lines...) Expand all Loading... |
156 AddProcessExitCode(false, 100); | 159 AddProcessExitCode(false, 100); |
157 | 160 |
158 // Record an exit funnel. | 161 // Record an exit funnel. |
159 ASSERT_TRUE(funnel.InitImpl(kRegistryPath, 4, base::Time::Now())); | 162 ASSERT_TRUE(funnel.InitImpl(kRegistryPath, 4, base::Time::Now())); |
160 | 163 |
161 AddExitFunnelEvent(100, L"One", 1000 * 1000); | 164 AddExitFunnelEvent(100, L"One", 1000 * 1000); |
162 AddExitFunnelEvent(101, L"Two", 1010 * 1000); | 165 AddExitFunnelEvent(101, L"Two", 1010 * 1000); |
163 AddExitFunnelEvent(102, L"Three", 990 * 1000); | 166 AddExitFunnelEvent(102, L"Three", 990 * 1000); |
164 | 167 |
165 // Make like the user is opted out of reporting. | 168 // Make like the user is opted out of reporting. |
166 WatcherMetricsProviderWin provider(kRegistryPath, test_task_runner_.get()); | 169 WatcherMetricsProviderWin provider(kRegistryPath, base::FilePath(), |
| 170 base::FilePath(), test_task_runner_.get()); |
167 provider.OnRecordingDisabled(); | 171 provider.OnRecordingDisabled(); |
168 | 172 |
169 base::win::RegKey key; | 173 base::win::RegKey key; |
170 { | 174 { |
171 // The deletion should be scheduled to the test_task_runner, and not happen | 175 // The deletion should be scheduled to the test_task_runner, and not happen |
172 // immediately. | 176 // immediately. |
173 ASSERT_EQ(ERROR_SUCCESS, | 177 ASSERT_EQ(ERROR_SUCCESS, |
174 key.Open(HKEY_CURRENT_USER, kRegistryPath, KEY_READ)); | 178 key.Open(HKEY_CURRENT_USER, kRegistryPath, KEY_READ)); |
175 } | 179 } |
176 | 180 |
(...skipping 10 matching lines...) Expand all Loading... |
187 for (size_t i = 0; i < 200; ++i) { | 191 for (size_t i = 0; i < 200; ++i) { |
188 AddExitFunnelEvent(i, L"One", 10); | 192 AddExitFunnelEvent(i, L"One", 10); |
189 AddExitFunnelEvent(i, L"Two", 10); | 193 AddExitFunnelEvent(i, L"Two", 10); |
190 } | 194 } |
191 | 195 |
192 base::win::RegistryKeyIterator it(HKEY_CURRENT_USER, kRegistryPath); | 196 base::win::RegistryKeyIterator it(HKEY_CURRENT_USER, kRegistryPath); |
193 EXPECT_EQ(200u, it.SubkeyCount()); | 197 EXPECT_EQ(200u, it.SubkeyCount()); |
194 | 198 |
195 { | 199 { |
196 // Make like the user is opted out of reporting. | 200 // Make like the user is opted out of reporting. |
197 WatcherMetricsProviderWin provider(kRegistryPath, test_task_runner_.get()); | 201 WatcherMetricsProviderWin provider(kRegistryPath, base::FilePath(), |
| 202 base::FilePath(), |
| 203 test_task_runner_.get()); |
198 provider.OnRecordingDisabled(); | 204 provider.OnRecordingDisabled(); |
199 // Flush the task(s). | 205 // Flush the task(s). |
200 test_task_runner_->RunPendingTasks(); | 206 test_task_runner_->RunPendingTasks(); |
201 } | 207 } |
202 | 208 |
203 // We expect only 100 of the funnels have been scrubbed. | 209 // We expect only 100 of the funnels have been scrubbed. |
204 EXPECT_EQ(100u, it.SubkeyCount()); | 210 EXPECT_EQ(100u, it.SubkeyCount()); |
205 } | 211 } |
206 | 212 |
207 } // namespace browser_watcher | 213 } // namespace browser_watcher |
OLD | NEW |