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

Side by Side Diff: chrome/browser/metrics/metrics_service_unittest.cc

Issue 290343005: Pass MetricsServiceClient into MetricsService, and create a simple stubbed TestMetricsServiceClient… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/metrics/metrics_service.h" 5 #include "chrome/browser/metrics/metrics_service.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/threading/platform_thread.h" 10 #include "base/threading/platform_thread.h"
11 #include "chrome/browser/metrics/metrics_service_observer.h" 11 #include "chrome/browser/metrics/metrics_service_observer.h"
12 #include "chrome/browser/metrics/metrics_state_manager.h" 12 #include "chrome/browser/metrics/metrics_state_manager.h"
13 #include "chrome/common/chrome_switches.h" 13 #include "chrome/common/chrome_switches.h"
14 #include "chrome/common/pref_names.h" 14 #include "chrome/common/pref_names.h"
15 #include "chrome/test/base/scoped_testing_local_state.h" 15 #include "chrome/test/base/scoped_testing_local_state.h"
16 #include "chrome/test/base/testing_browser_process.h" 16 #include "chrome/test/base/testing_browser_process.h"
17 #include "components/metrics/test_metrics_service_client.h"
17 #include "components/variations/metrics_util.h" 18 #include "components/variations/metrics_util.h"
18 #include "content/public/common/process_type.h" 19 #include "content/public/common/process_type.h"
19 #include "content/public/common/webplugininfo.h" 20 #include "content/public/common/webplugininfo.h"
20 #include "content/public/test/test_browser_thread_bundle.h" 21 #include "content/public/test/test_browser_thread_bundle.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 #include "ui/gfx/size.h" 23 #include "ui/gfx/size.h"
23 24
24 #if defined(OS_CHROMEOS) 25 #if defined(OS_CHROMEOS)
25 #include "chrome/browser/metrics/metrics_log_chromeos.h" 26 #include "chrome/browser/metrics/metrics_log_chromeos.h"
26 #endif // OS_CHROMEOS 27 #endif // OS_CHROMEOS
27 28
28 namespace { 29 namespace {
29 30
30 using metrics::MetricsLogManager; 31 using metrics::MetricsLogManager;
31 32
32 class TestMetricsService : public MetricsService { 33 class TestMetricsService : public MetricsService {
33 public: 34 public:
34 explicit TestMetricsService(metrics::MetricsStateManager* state_manager) 35 TestMetricsService(metrics::MetricsStateManager* state_manager,
35 : MetricsService(state_manager) { 36 metrics::MetricsServiceClient* client)
37 : MetricsService(state_manager, client) {
36 } 38 }
37 virtual ~TestMetricsService() {} 39 virtual ~TestMetricsService() {}
38 40
39 MetricsLogManager* log_manager() { 41 MetricsLogManager* log_manager() {
40 return &log_manager_; 42 return &log_manager_;
41 } 43 }
42 44
43 private: 45 private:
44 DISALLOW_COPY_AND_ASSIGN(TestMetricsService); 46 DISALLOW_COPY_AND_ASSIGN(TestMetricsService);
45 }; 47 };
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 EXPECT_TRUE( 172 EXPECT_TRUE(
171 MetricsService::IsPluginProcess(content::PROCESS_TYPE_PPAPI_PLUGIN)); 173 MetricsService::IsPluginProcess(content::PROCESS_TYPE_PPAPI_PLUGIN));
172 EXPECT_FALSE( 174 EXPECT_FALSE(
173 MetricsService::IsPluginProcess(content::PROCESS_TYPE_GPU)); 175 MetricsService::IsPluginProcess(content::PROCESS_TYPE_GPU));
174 } 176 }
175 177
176 TEST_F(MetricsServiceTest, InitialStabilityLogAfterCleanShutDown) { 178 TEST_F(MetricsServiceTest, InitialStabilityLogAfterCleanShutDown) {
177 EnableMetricsReporting(); 179 EnableMetricsReporting();
178 GetLocalState()->SetBoolean(prefs::kStabilityExitedCleanly, true); 180 GetLocalState()->SetBoolean(prefs::kStabilityExitedCleanly, true);
179 181
180 TestMetricsService service(GetMetricsStateManager()); 182 metrics::TestMetricsServiceClient client;
183 TestMetricsService service(GetMetricsStateManager(), &client);
181 service.InitializeMetricsRecordingState(); 184 service.InitializeMetricsRecordingState();
182 // No initial stability log should be generated. 185 // No initial stability log should be generated.
183 EXPECT_FALSE(service.log_manager()->has_unsent_logs()); 186 EXPECT_FALSE(service.log_manager()->has_unsent_logs());
184 EXPECT_FALSE(service.log_manager()->has_staged_log()); 187 EXPECT_FALSE(service.log_manager()->has_staged_log());
185 } 188 }
186 189
187 TEST_F(MetricsServiceTest, InitialStabilityLogAfterCrash) { 190 TEST_F(MetricsServiceTest, InitialStabilityLogAfterCrash) {
188 EnableMetricsReporting(); 191 EnableMetricsReporting();
189 GetLocalState()->ClearPref(prefs::kStabilityExitedCleanly); 192 GetLocalState()->ClearPref(prefs::kStabilityExitedCleanly);
190 193
191 // Set up prefs to simulate restarting after a crash. 194 // Set up prefs to simulate restarting after a crash.
192 195
193 // Save an existing system profile to prefs, to correspond to what would be 196 // Save an existing system profile to prefs, to correspond to what would be
194 // saved from a previous session. 197 // saved from a previous session.
195 TestMetricsLog log("client", 1); 198 TestMetricsLog log("client", 1);
196 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 199 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
197 GoogleUpdateMetrics(), 200 GoogleUpdateMetrics(),
198 std::vector<chrome_variations::ActiveGroupId>()); 201 std::vector<chrome_variations::ActiveGroupId>());
199 202
200 // Record stability build time and version from previous session, so that 203 // Record stability build time and version from previous session, so that
201 // stability metrics (including exited cleanly flag) won't be cleared. 204 // stability metrics (including exited cleanly flag) won't be cleared.
202 GetLocalState()->SetInt64(prefs::kStabilityStatsBuildTime, 205 GetLocalState()->SetInt64(prefs::kStabilityStatsBuildTime,
203 MetricsLog::GetBuildTime()); 206 MetricsLog::GetBuildTime());
204 GetLocalState()->SetString(prefs::kStabilityStatsVersion, 207 GetLocalState()->SetString(prefs::kStabilityStatsVersion,
205 MetricsLog::GetVersionString()); 208 MetricsLog::GetVersionString());
206 209
207 GetLocalState()->SetBoolean(prefs::kStabilityExitedCleanly, false); 210 GetLocalState()->SetBoolean(prefs::kStabilityExitedCleanly, false);
208 211
209 TestMetricsService service(GetMetricsStateManager()); 212 metrics::TestMetricsServiceClient client;
213 TestMetricsService service(GetMetricsStateManager(), &client);
210 service.InitializeMetricsRecordingState(); 214 service.InitializeMetricsRecordingState();
211 215
212 // The initial stability log should be generated and persisted in unsent logs. 216 // The initial stability log should be generated and persisted in unsent logs.
213 MetricsLogManager* log_manager = service.log_manager(); 217 MetricsLogManager* log_manager = service.log_manager();
214 EXPECT_TRUE(log_manager->has_unsent_logs()); 218 EXPECT_TRUE(log_manager->has_unsent_logs());
215 EXPECT_FALSE(log_manager->has_staged_log()); 219 EXPECT_FALSE(log_manager->has_staged_log());
216 220
217 // Stage the log and retrieve it. 221 // Stage the log and retrieve it.
218 log_manager->StageNextLogForUpload(); 222 log_manager->StageNextLogForUpload();
219 EXPECT_TRUE(log_manager->has_staged_log()); 223 EXPECT_TRUE(log_manager->has_staged_log());
220 224
221 metrics::ChromeUserMetricsExtension uma_log; 225 metrics::ChromeUserMetricsExtension uma_log;
222 EXPECT_TRUE(uma_log.ParseFromString(log_manager->staged_log())); 226 EXPECT_TRUE(uma_log.ParseFromString(log_manager->staged_log()));
223 227
224 EXPECT_TRUE(uma_log.has_client_id()); 228 EXPECT_TRUE(uma_log.has_client_id());
225 EXPECT_TRUE(uma_log.has_session_id()); 229 EXPECT_TRUE(uma_log.has_session_id());
226 EXPECT_TRUE(uma_log.has_system_profile()); 230 EXPECT_TRUE(uma_log.has_system_profile());
227 EXPECT_EQ(0, uma_log.user_action_event_size()); 231 EXPECT_EQ(0, uma_log.user_action_event_size());
228 EXPECT_EQ(0, uma_log.omnibox_event_size()); 232 EXPECT_EQ(0, uma_log.omnibox_event_size());
229 EXPECT_EQ(0, uma_log.histogram_event_size()); 233 EXPECT_EQ(0, uma_log.histogram_event_size());
230 EXPECT_EQ(0, uma_log.profiler_event_size()); 234 EXPECT_EQ(0, uma_log.profiler_event_size());
231 EXPECT_EQ(0, uma_log.perf_data_size()); 235 EXPECT_EQ(0, uma_log.perf_data_size());
232 236
233 EXPECT_EQ(1, uma_log.system_profile().stability().crash_count()); 237 EXPECT_EQ(1, uma_log.system_profile().stability().crash_count());
234 } 238 }
235 239
236 TEST_F(MetricsServiceTest, RegisterSyntheticTrial) { 240 TEST_F(MetricsServiceTest, RegisterSyntheticTrial) {
237 MetricsService service(GetMetricsStateManager()); 241 metrics::TestMetricsServiceClient client;
242 MetricsService service(GetMetricsStateManager(), &client);
238 243
239 // Add two synthetic trials and confirm that they show up in the list. 244 // Add two synthetic trials and confirm that they show up in the list.
240 SyntheticTrialGroup trial1(metrics::HashName("TestTrial1"), 245 SyntheticTrialGroup trial1(metrics::HashName("TestTrial1"),
241 metrics::HashName("Group1")); 246 metrics::HashName("Group1"));
242 service.RegisterSyntheticFieldTrial(trial1); 247 service.RegisterSyntheticFieldTrial(trial1);
243 248
244 SyntheticTrialGroup trial2(metrics::HashName("TestTrial2"), 249 SyntheticTrialGroup trial2(metrics::HashName("TestTrial2"),
245 metrics::HashName("Group2")); 250 metrics::HashName("Group2"));
246 service.RegisterSyntheticFieldTrial(trial2); 251 service.RegisterSyntheticFieldTrial(trial2);
247 // Ensure that time has advanced by at least a tick before proceeding. 252 // Ensure that time has advanced by at least a tick before proceeding.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 GetLocalState()->ClearPref(crash_pref); 330 GetLocalState()->ClearPref(crash_pref);
326 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled()); 331 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled());
327 #endif // !defined(OS_CHROMEOS) 332 #endif // !defined(OS_CHROMEOS)
328 #else // defined(GOOGLE_CHROME_BUILD) 333 #else // defined(GOOGLE_CHROME_BUILD)
329 // Chromium branded browsers never have crash reporting enabled. 334 // Chromium branded browsers never have crash reporting enabled.
330 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled()); 335 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled());
331 #endif // defined(GOOGLE_CHROME_BUILD) 336 #endif // defined(GOOGLE_CHROME_BUILD)
332 } 337 }
333 338
334 TEST_F(MetricsServiceTest, MetricsServiceObserver) { 339 TEST_F(MetricsServiceTest, MetricsServiceObserver) {
335 MetricsService service(GetMetricsStateManager()); 340 metrics::TestMetricsServiceClient client;
341 MetricsService service(GetMetricsStateManager(), &client);
336 TestMetricsServiceObserver observer1; 342 TestMetricsServiceObserver observer1;
337 TestMetricsServiceObserver observer2; 343 TestMetricsServiceObserver observer2;
338 344
339 service.AddObserver(&observer1); 345 service.AddObserver(&observer1);
340 EXPECT_EQ(0, observer1.observed()); 346 EXPECT_EQ(0, observer1.observed());
341 EXPECT_EQ(0, observer2.observed()); 347 EXPECT_EQ(0, observer2.observed());
342 348
343 service.OpenNewLog(); 349 service.OpenNewLog();
344 EXPECT_EQ(1, observer1.observed()); 350 EXPECT_EQ(1, observer1.observed());
345 EXPECT_EQ(0, observer2.observed()); 351 EXPECT_EQ(0, observer2.observed());
346 service.log_manager_.FinishCurrentLog(); 352 service.log_manager_.FinishCurrentLog();
347 353
348 service.AddObserver(&observer2); 354 service.AddObserver(&observer2);
349 355
350 service.OpenNewLog(); 356 service.OpenNewLog();
351 EXPECT_EQ(2, observer1.observed()); 357 EXPECT_EQ(2, observer1.observed());
352 EXPECT_EQ(1, observer2.observed()); 358 EXPECT_EQ(1, observer2.observed());
353 service.log_manager_.FinishCurrentLog(); 359 service.log_manager_.FinishCurrentLog();
354 360
355 service.RemoveObserver(&observer1); 361 service.RemoveObserver(&observer1);
356 362
357 service.OpenNewLog(); 363 service.OpenNewLog();
358 EXPECT_EQ(2, observer1.observed()); 364 EXPECT_EQ(2, observer1.observed());
359 EXPECT_EQ(2, observer2.observed()); 365 EXPECT_EQ(2, observer2.observed());
360 service.log_manager_.FinishCurrentLog(); 366 service.log_manager_.FinishCurrentLog();
361 367
362 service.RemoveObserver(&observer2); 368 service.RemoveObserver(&observer2);
363 } 369 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698