 Chromium Code Reviews
 Chromium Code Reviews Issue 792163002:
  Add ExitFunnel to prepare for instrumenting browser exits.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
    
  
    Issue 792163002:
  Add ExitFunnel to prepare for instrumenting browser exits.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr| Index: components/browser_watcher/watcher_metrics_provider_win_unittest.cc | 
| diff --git a/components/browser_watcher/watcher_metrics_provider_win_unittest.cc b/components/browser_watcher/watcher_metrics_provider_win_unittest.cc | 
| index 9002a171536660b2033955e549ef6ff5f841b989..9e4e31a45f1d15357bebafc8a12eb721bb7f320d 100644 | 
| --- a/components/browser_watcher/watcher_metrics_provider_win_unittest.cc | 
| +++ b/components/browser_watcher/watcher_metrics_provider_win_unittest.cc | 
| @@ -56,6 +56,15 @@ class WatcherMetricsProviderWinTest : public testing::Test { | 
| return key.GetValueCount(); | 
| } | 
| + void AddExitFunnelEvent(int pid, const base::char16* name, int64 value) { | 
| + base::string16 key_name = | 
| + base::StringPrintf(L"%ls\\%d-%d", kRegistryPath, pid, pid); | 
| 
erikwright (departed)
2014/12/11 15:00:46
Why dup the writing? You're testing (and overly co
 
Sigurður Ásgeirsson
2014/12/12 16:21:40
There's really not enough code there to worry abou
 | 
| + | 
| + base::win::RegKey key(HKEY_CURRENT_USER, key_name.c_str(), KEY_WRITE); | 
| + ASSERT_EQ(key.WriteValue(name, &value, sizeof(value), REG_QWORD), | 
| + ERROR_SUCCESS); | 
| + } | 
| + | 
| protected: | 
| registry_util::RegistryOverrideManager override_manager_; | 
| base::HistogramTester histogram_tester_; | 
| @@ -103,4 +112,23 @@ TEST_F(WatcherMetricsProviderWinTest, DoesNotReportOwnProcessId) { | 
| EXPECT_EQ(ExitCodeRegistryPathValueCount(), 1); | 
| } | 
| +TEST_F(WatcherMetricsProviderWinTest, RecordsExitFunnel) { | 
| + // Record an exit funnel - note the recorded times are in microseconds, | 
| + // but the reporting is in milliseconds, hence the times 1000. | 
| + AddExitFunnelEvent(100, L"One", 1000 * 1000); | 
| + AddExitFunnelEvent(100, L"Two", 1010 * 1000); | 
| + AddExitFunnelEvent(100, L"Three", 990 * 1000); | 
| + | 
| + WatcherMetricsProviderWin provider(kRegistryPath); | 
| + | 
| + provider.ProvideStabilityMetrics(NULL); | 
| 
erikwright (departed)
2014/12/11 15:00:46
Testing that the histograms are actually written i
 
Sigurður Ásgeirsson
2014/12/12 16:21:40
I added some testing to verify that the metrics pr
 | 
| + histogram_tester_.ExpectUniqueSample("Stability.ExitFunnel.Three", 0, 1); | 
| + histogram_tester_.ExpectUniqueSample("Stability.ExitFunnel.One", 10, 1); | 
| + histogram_tester_.ExpectUniqueSample("Stability.ExitFunnel.Two", 20, 1); | 
| + | 
| + // Make sure the subkey is deleted on reporting. | 
| + base::win::RegistryKeyIterator it(HKEY_CURRENT_USER, kRegistryPath); | 
| + ASSERT_EQ(it.SubkeyCount(), 0); | 
| +} | 
| + | 
| } // namespace browser_watcher |