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

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_state_manager.h" 11 #include "chrome/browser/metrics/metrics_state_manager.h"
12 #include "chrome/common/chrome_switches.h" 12 #include "chrome/common/chrome_switches.h"
13 #include "chrome/common/pref_names.h" 13 #include "chrome/common/pref_names.h"
14 #include "chrome/test/base/scoped_testing_local_state.h" 14 #include "chrome/test/base/scoped_testing_local_state.h"
15 #include "chrome/test/base/testing_browser_process.h" 15 #include "chrome/test/base/testing_browser_process.h"
16 #include "components/metrics/metrics_service_observer.h" 16 #include "components/metrics/metrics_service_observer.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<metrics::MetricsProvider*>(), 199 log.RecordEnvironment(std::vector<metrics::MetricsProvider*>(),
197 std::vector<content::WebPluginInfo>(), 200 std::vector<content::WebPluginInfo>(),
198 GoogleUpdateMetrics(), 201 GoogleUpdateMetrics(),
199 std::vector<variations::ActiveGroupId>()); 202 std::vector<variations::ActiveGroupId>());
200 203
201 // Record stability build time and version from previous session, so that 204 // Record stability build time and version from previous session, so that
202 // stability metrics (including exited cleanly flag) won't be cleared. 205 // stability metrics (including exited cleanly flag) won't be cleared.
203 GetLocalState()->SetInt64(prefs::kStabilityStatsBuildTime, 206 GetLocalState()->SetInt64(prefs::kStabilityStatsBuildTime,
204 MetricsLog::GetBuildTime()); 207 MetricsLog::GetBuildTime());
205 GetLocalState()->SetString(prefs::kStabilityStatsVersion, 208 GetLocalState()->SetString(prefs::kStabilityStatsVersion,
206 MetricsLog::GetVersionString()); 209 MetricsLog::GetVersionString());
207 210
208 GetLocalState()->SetBoolean(prefs::kStabilityExitedCleanly, false); 211 GetLocalState()->SetBoolean(prefs::kStabilityExitedCleanly, false);
209 212
210 TestMetricsService service(GetMetricsStateManager()); 213 metrics::TestMetricsServiceClient client;
214 TestMetricsService service(GetMetricsStateManager(), &client);
211 service.InitializeMetricsRecordingState(); 215 service.InitializeMetricsRecordingState();
212 216
213 // The initial stability log should be generated and persisted in unsent logs. 217 // The initial stability log should be generated and persisted in unsent logs.
214 MetricsLogManager* log_manager = service.log_manager(); 218 MetricsLogManager* log_manager = service.log_manager();
215 EXPECT_TRUE(log_manager->has_unsent_logs()); 219 EXPECT_TRUE(log_manager->has_unsent_logs());
216 EXPECT_FALSE(log_manager->has_staged_log()); 220 EXPECT_FALSE(log_manager->has_staged_log());
217 221
218 // Stage the log and retrieve it. 222 // Stage the log and retrieve it.
219 log_manager->StageNextLogForUpload(); 223 log_manager->StageNextLogForUpload();
220 EXPECT_TRUE(log_manager->has_staged_log()); 224 EXPECT_TRUE(log_manager->has_staged_log());
221 225
222 metrics::ChromeUserMetricsExtension uma_log; 226 metrics::ChromeUserMetricsExtension uma_log;
223 EXPECT_TRUE(uma_log.ParseFromString(log_manager->staged_log())); 227 EXPECT_TRUE(uma_log.ParseFromString(log_manager->staged_log()));
224 228
225 EXPECT_TRUE(uma_log.has_client_id()); 229 EXPECT_TRUE(uma_log.has_client_id());
226 EXPECT_TRUE(uma_log.has_session_id()); 230 EXPECT_TRUE(uma_log.has_session_id());
227 EXPECT_TRUE(uma_log.has_system_profile()); 231 EXPECT_TRUE(uma_log.has_system_profile());
228 EXPECT_EQ(0, uma_log.user_action_event_size()); 232 EXPECT_EQ(0, uma_log.user_action_event_size());
229 EXPECT_EQ(0, uma_log.omnibox_event_size()); 233 EXPECT_EQ(0, uma_log.omnibox_event_size());
230 EXPECT_EQ(0, uma_log.histogram_event_size()); 234 EXPECT_EQ(0, uma_log.histogram_event_size());
231 EXPECT_EQ(0, uma_log.profiler_event_size()); 235 EXPECT_EQ(0, uma_log.profiler_event_size());
232 EXPECT_EQ(0, uma_log.perf_data_size()); 236 EXPECT_EQ(0, uma_log.perf_data_size());
233 237
234 EXPECT_EQ(1, uma_log.system_profile().stability().crash_count()); 238 EXPECT_EQ(1, uma_log.system_profile().stability().crash_count());
235 } 239 }
236 240
237 TEST_F(MetricsServiceTest, RegisterSyntheticTrial) { 241 TEST_F(MetricsServiceTest, RegisterSyntheticTrial) {
238 MetricsService service(GetMetricsStateManager()); 242 metrics::TestMetricsServiceClient client;
243 MetricsService service(GetMetricsStateManager(), &client);
239 244
240 // Add two synthetic trials and confirm that they show up in the list. 245 // Add two synthetic trials and confirm that they show up in the list.
241 SyntheticTrialGroup trial1(metrics::HashName("TestTrial1"), 246 SyntheticTrialGroup trial1(metrics::HashName("TestTrial1"),
242 metrics::HashName("Group1")); 247 metrics::HashName("Group1"));
243 service.RegisterSyntheticFieldTrial(trial1); 248 service.RegisterSyntheticFieldTrial(trial1);
244 249
245 SyntheticTrialGroup trial2(metrics::HashName("TestTrial2"), 250 SyntheticTrialGroup trial2(metrics::HashName("TestTrial2"),
246 metrics::HashName("Group2")); 251 metrics::HashName("Group2"));
247 service.RegisterSyntheticFieldTrial(trial2); 252 service.RegisterSyntheticFieldTrial(trial2);
248 // Ensure that time has advanced by at least a tick before proceeding. 253 // Ensure that time has advanced by at least a tick before proceeding.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 GetLocalState()->ClearPref(crash_pref); 331 GetLocalState()->ClearPref(crash_pref);
327 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled()); 332 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled());
328 #endif // !defined(OS_CHROMEOS) 333 #endif // !defined(OS_CHROMEOS)
329 #else // defined(GOOGLE_CHROME_BUILD) 334 #else // defined(GOOGLE_CHROME_BUILD)
330 // Chromium branded browsers never have crash reporting enabled. 335 // Chromium branded browsers never have crash reporting enabled.
331 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled()); 336 EXPECT_FALSE(MetricsServiceHelper::IsCrashReportingEnabled());
332 #endif // defined(GOOGLE_CHROME_BUILD) 337 #endif // defined(GOOGLE_CHROME_BUILD)
333 } 338 }
334 339
335 TEST_F(MetricsServiceTest, MetricsServiceObserver) { 340 TEST_F(MetricsServiceTest, MetricsServiceObserver) {
336 MetricsService service(GetMetricsStateManager()); 341 metrics::TestMetricsServiceClient client;
342 MetricsService service(GetMetricsStateManager(), &client);
337 TestMetricsServiceObserver observer1; 343 TestMetricsServiceObserver observer1;
338 TestMetricsServiceObserver observer2; 344 TestMetricsServiceObserver observer2;
339 345
340 service.AddObserver(&observer1); 346 service.AddObserver(&observer1);
341 EXPECT_EQ(0, observer1.observed()); 347 EXPECT_EQ(0, observer1.observed());
342 EXPECT_EQ(0, observer2.observed()); 348 EXPECT_EQ(0, observer2.observed());
343 349
344 service.OpenNewLog(); 350 service.OpenNewLog();
345 EXPECT_EQ(1, observer1.observed()); 351 EXPECT_EQ(1, observer1.observed());
346 EXPECT_EQ(0, observer2.observed()); 352 EXPECT_EQ(0, observer2.observed());
347 service.log_manager_.FinishCurrentLog(); 353 service.log_manager_.FinishCurrentLog();
348 354
349 service.AddObserver(&observer2); 355 service.AddObserver(&observer2);
350 356
351 service.OpenNewLog(); 357 service.OpenNewLog();
352 EXPECT_EQ(2, observer1.observed()); 358 EXPECT_EQ(2, observer1.observed());
353 EXPECT_EQ(1, observer2.observed()); 359 EXPECT_EQ(1, observer2.observed());
354 service.log_manager_.FinishCurrentLog(); 360 service.log_manager_.FinishCurrentLog();
355 361
356 service.RemoveObserver(&observer1); 362 service.RemoveObserver(&observer1);
357 363
358 service.OpenNewLog(); 364 service.OpenNewLog();
359 EXPECT_EQ(2, observer1.observed()); 365 EXPECT_EQ(2, observer1.observed());
360 EXPECT_EQ(2, observer2.observed()); 366 EXPECT_EQ(2, observer2.observed());
361 service.log_manager_.FinishCurrentLog(); 367 service.log_manager_.FinishCurrentLog();
362 368
363 service.RemoveObserver(&observer2); 369 service.RemoveObserver(&observer2);
364 } 370 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_service.cc ('k') | chrome/browser/metrics/metrics_services_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698