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

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

Issue 282093012: Remove dependencies of Metrics{Service,Log} on g_browser_process->local_state() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove cruft 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_log.h" 5 #include "chrome/browser/metrics/metrics_log.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 public: 122 public:
123 explicit TestMetricsLogChromeOS( 123 explicit TestMetricsLogChromeOS(
124 metrics::ChromeUserMetricsExtension* uma_proto) 124 metrics::ChromeUserMetricsExtension* uma_proto)
125 : MetricsLogChromeOS(uma_proto) { 125 : MetricsLogChromeOS(uma_proto) {
126 } 126 }
127 }; 127 };
128 #endif // OS_CHROMEOS 128 #endif // OS_CHROMEOS
129 129
130 class TestMetricsLog : public MetricsLog { 130 class TestMetricsLog : public MetricsLog {
131 public: 131 public:
132 TestMetricsLog(const std::string& client_id, int session_id, LogType log_type)
133 : MetricsLog(client_id, session_id, log_type),
134 prefs_(&scoped_prefs_),
135 brand_for_testing_(kBrandForTesting) {
136 #if defined(OS_CHROMEOS)
137 metrics_log_chromeos_.reset(new TestMetricsLogChromeOS(
138 MetricsLog::uma_proto()));
139 #endif // OS_CHROMEOS
140 chrome::RegisterLocalState(scoped_prefs_.registry());
141 InitPrefs();
142 }
143 // Creates a TestMetricsLog that will use |prefs| as the fake local state.
144 // Useful for tests that need to re-use the local state prefs between logs.
145 TestMetricsLog(const std::string& client_id, 132 TestMetricsLog(const std::string& client_id,
146 int session_id, 133 int session_id,
147 LogType log_type, 134 LogType log_type,
148 TestingPrefServiceSimple* prefs) 135 TestingPrefServiceSimple* prefs)
149 : MetricsLog(client_id, session_id, log_type), 136 : MetricsLog(client_id, session_id, log_type, prefs),
150 prefs_(prefs), 137 prefs_(prefs),
151 brand_for_testing_(kBrandForTesting) { 138 brand_for_testing_(kBrandForTesting) {
152 #if defined(OS_CHROMEOS) 139 #if defined(OS_CHROMEOS)
153 metrics_log_chromeos_.reset(new TestMetricsLogChromeOS( 140 metrics_log_chromeos_.reset(new TestMetricsLogChromeOS(
154 MetricsLog::uma_proto())); 141 MetricsLog::uma_proto()));
155 #endif // OS_CHROMEOS 142 #endif // OS_CHROMEOS
156 InitPrefs(); 143 InitPrefs();
157 } 144 }
158 virtual ~TestMetricsLog() {} 145 virtual ~TestMetricsLog() {}
159 146
160 virtual PrefService* GetPrefService() OVERRIDE {
161 return prefs_;
162 }
163
164 const metrics::ChromeUserMetricsExtension& uma_proto() const { 147 const metrics::ChromeUserMetricsExtension& uma_proto() const {
165 return *MetricsLog::uma_proto(); 148 return *MetricsLog::uma_proto();
166 } 149 }
167 150
168 const metrics::SystemProfileProto& system_profile() const { 151 const metrics::SystemProfileProto& system_profile() const {
169 return uma_proto().system_profile(); 152 return uma_proto().system_profile();
170 } 153 }
171 154
172 private: 155 private:
173 void InitPrefs() { 156 void InitPrefs() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 }; 198 };
216 199
217 } // namespace 200 } // namespace
218 201
219 class MetricsLogTest : public testing::Test { 202 class MetricsLogTest : public testing::Test {
220 public: 203 public:
221 MetricsLogTest() {} 204 MetricsLogTest() {}
222 205
223 protected: 206 protected:
224 virtual void SetUp() OVERRIDE { 207 virtual void SetUp() OVERRIDE {
208 chrome::RegisterLocalState(prefs_.registry());
209
225 #if defined(OS_CHROMEOS) 210 #if defined(OS_CHROMEOS)
226 // Enable multi-profiles. 211 // Enable multi-profiles.
227 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kMultiProfiles); 212 CommandLine::ForCurrentProcess()->AppendSwitch(switches::kMultiProfiles);
228 213
229 // Set up the fake Bluetooth environment, 214 // Set up the fake Bluetooth environment,
230 scoped_ptr<FakeDBusThreadManager> fake_dbus_thread_manager( 215 scoped_ptr<FakeDBusThreadManager> fake_dbus_thread_manager(
231 new FakeDBusThreadManager); 216 new FakeDBusThreadManager);
232 fake_dbus_thread_manager->SetBluetoothAdapterClient( 217 fake_dbus_thread_manager->SetBluetoothAdapterClient(
233 scoped_ptr<BluetoothAdapterClient>(new FakeBluetoothAdapterClient)); 218 scoped_ptr<BluetoothAdapterClient>(new FakeBluetoothAdapterClient));
234 fake_dbus_thread_manager->SetBluetoothDeviceClient( 219 fake_dbus_thread_manager->SetBluetoothDeviceClient(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 281
297 EXPECT_TRUE(hardware.has_cpu()); 282 EXPECT_TRUE(hardware.has_cpu());
298 EXPECT_TRUE(hardware.cpu().has_vendor_name()); 283 EXPECT_TRUE(hardware.cpu().has_vendor_name());
299 EXPECT_TRUE(hardware.cpu().has_signature()); 284 EXPECT_TRUE(hardware.cpu().has_signature());
300 285
301 // TODO(isherman): Verify other data written into the protobuf as a result 286 // TODO(isherman): Verify other data written into the protobuf as a result
302 // of this call. 287 // of this call.
303 } 288 }
304 289
305 protected: 290 protected:
291 TestingPrefServiceSimple prefs_;
306 #if defined(OS_CHROMEOS) 292 #if defined(OS_CHROMEOS)
307 FakeBluetoothAdapterClient* fake_bluetooth_adapter_client_; 293 FakeBluetoothAdapterClient* fake_bluetooth_adapter_client_;
308 FakeBluetoothDeviceClient* fake_bluetooth_device_client_; 294 FakeBluetoothDeviceClient* fake_bluetooth_device_client_;
309 #endif // OS_CHROMEOS 295 #endif // OS_CHROMEOS
310 296
311 private: 297 private:
312 content::TestBrowserThreadBundle thread_bundle_; 298 content::TestBrowserThreadBundle thread_bundle_;
313 299
314 DISALLOW_COPY_AND_ASSIGN(MetricsLogTest); 300 DISALLOW_COPY_AND_ASSIGN(MetricsLogTest);
315 }; 301 };
316 302
317 TEST_F(MetricsLogTest, RecordEnvironment) { 303 TEST_F(MetricsLogTest, RecordEnvironment) {
318 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 304 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
319 305
320 std::vector<content::WebPluginInfo> plugins; 306 std::vector<content::WebPluginInfo> plugins;
321 GoogleUpdateMetrics google_update_metrics; 307 GoogleUpdateMetrics google_update_metrics;
322 std::vector<chrome_variations::ActiveGroupId> synthetic_trials; 308 std::vector<chrome_variations::ActiveGroupId> synthetic_trials;
323 // Add two synthetic trials. 309 // Add two synthetic trials.
324 synthetic_trials.push_back(kSyntheticTrials[0]); 310 synthetic_trials.push_back(kSyntheticTrials[0]);
325 synthetic_trials.push_back(kSyntheticTrials[1]); 311 synthetic_trials.push_back(kSyntheticTrials[1]);
326 312
327 log.RecordEnvironment(plugins, google_update_metrics, synthetic_trials); 313 log.RecordEnvironment(plugins, google_update_metrics, synthetic_trials);
328 // Check that the system profile on the log has the correct values set. 314 // Check that the system profile on the log has the correct values set.
329 CheckSystemProfile(log.system_profile()); 315 CheckSystemProfile(log.system_profile());
330 316
331 // Check that the system profile has also been written to prefs. 317 // Check that the system profile has also been written to prefs.
332 PrefService* local_state = log.GetPrefService();
333 const std::string base64_system_profile = 318 const std::string base64_system_profile =
334 local_state->GetString(prefs::kStabilitySavedSystemProfile); 319 prefs_.GetString(prefs::kStabilitySavedSystemProfile);
335 EXPECT_FALSE(base64_system_profile.empty()); 320 EXPECT_FALSE(base64_system_profile.empty());
336 std::string serialied_system_profile; 321 std::string serialied_system_profile;
337 EXPECT_TRUE(base::Base64Decode(base64_system_profile, 322 EXPECT_TRUE(base::Base64Decode(base64_system_profile,
338 &serialied_system_profile)); 323 &serialied_system_profile));
339 SystemProfileProto decoded_system_profile; 324 SystemProfileProto decoded_system_profile;
340 EXPECT_TRUE(decoded_system_profile.ParseFromString(serialied_system_profile)); 325 EXPECT_TRUE(decoded_system_profile.ParseFromString(serialied_system_profile));
341 CheckSystemProfile(decoded_system_profile); 326 CheckSystemProfile(decoded_system_profile);
342 } 327 }
343 328
344 TEST_F(MetricsLogTest, LoadSavedEnvironmentFromPrefs) { 329 TEST_F(MetricsLogTest, LoadSavedEnvironmentFromPrefs) {
345 const char* kSystemProfilePref = prefs::kStabilitySavedSystemProfile; 330 const char* kSystemProfilePref = prefs::kStabilitySavedSystemProfile;
346 const char* kSystemProfileHashPref = prefs::kStabilitySavedSystemProfileHash; 331 const char* kSystemProfileHashPref = prefs::kStabilitySavedSystemProfileHash;
347 332
348 TestingPrefServiceSimple prefs;
349 chrome::RegisterLocalState(prefs.registry());
350
351 // The pref value is empty, so loading it from prefs should fail. 333 // The pref value is empty, so loading it from prefs should fail.
352 { 334 {
353 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs); 335 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
354 EXPECT_FALSE(log.LoadSavedEnvironmentFromPrefs()); 336 EXPECT_FALSE(log.LoadSavedEnvironmentFromPrefs());
355 } 337 }
356 338
357 // Do a RecordEnvironment() call and check whether the pref is recorded. 339 // Do a RecordEnvironment() call and check whether the pref is recorded.
358 { 340 {
359 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs); 341 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
360 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 342 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
361 GoogleUpdateMetrics(), 343 GoogleUpdateMetrics(),
362 std::vector<chrome_variations::ActiveGroupId>()); 344 std::vector<chrome_variations::ActiveGroupId>());
363 EXPECT_FALSE(prefs.GetString(kSystemProfilePref).empty()); 345 EXPECT_FALSE(prefs_.GetString(kSystemProfilePref).empty());
364 EXPECT_FALSE(prefs.GetString(kSystemProfileHashPref).empty()); 346 EXPECT_FALSE(prefs_.GetString(kSystemProfileHashPref).empty());
365 } 347 }
366 348
367 { 349 {
368 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs); 350 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
369 EXPECT_TRUE(log.LoadSavedEnvironmentFromPrefs()); 351 EXPECT_TRUE(log.LoadSavedEnvironmentFromPrefs());
370 // Check some values in the system profile. 352 // Check some values in the system profile.
371 EXPECT_EQ(kInstallDateExpected, log.system_profile().install_date()); 353 EXPECT_EQ(kInstallDateExpected, log.system_profile().install_date());
372 EXPECT_EQ(kEnabledDateExpected, log.system_profile().uma_enabled_date()); 354 EXPECT_EQ(kEnabledDateExpected, log.system_profile().uma_enabled_date());
373 // Ensure that the call cleared the prefs. 355 // Ensure that the call cleared the prefs.
374 EXPECT_TRUE(prefs.GetString(kSystemProfilePref).empty()); 356 EXPECT_TRUE(prefs_.GetString(kSystemProfilePref).empty());
375 EXPECT_TRUE(prefs.GetString(kSystemProfileHashPref).empty()); 357 EXPECT_TRUE(prefs_.GetString(kSystemProfileHashPref).empty());
376 } 358 }
377 359
378 // Ensure that a non-matching hash results in the pref being invalid. 360 // Ensure that a non-matching hash results in the pref being invalid.
379 { 361 {
380 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs); 362 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
381 // Call RecordEnvironment() to record the pref again. 363 // Call RecordEnvironment() to record the pref again.
382 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 364 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
383 GoogleUpdateMetrics(), 365 GoogleUpdateMetrics(),
384 std::vector<chrome_variations::ActiveGroupId>()); 366 std::vector<chrome_variations::ActiveGroupId>());
385 } 367 }
386 368
387 { 369 {
388 // Set the hash to a bad value. 370 // Set the hash to a bad value.
389 prefs.SetString(kSystemProfileHashPref, "deadbeef"); 371 prefs_.SetString(kSystemProfileHashPref, "deadbeef");
390 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs); 372 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
391 EXPECT_FALSE(log.LoadSavedEnvironmentFromPrefs()); 373 EXPECT_FALSE(log.LoadSavedEnvironmentFromPrefs());
392 // Ensure that the prefs are cleared, even if the call failed. 374 // Ensure that the prefs are cleared, even if the call failed.
393 EXPECT_TRUE(prefs.GetString(kSystemProfilePref).empty()); 375 EXPECT_TRUE(prefs_.GetString(kSystemProfilePref).empty());
394 EXPECT_TRUE(prefs.GetString(kSystemProfileHashPref).empty()); 376 EXPECT_TRUE(prefs_.GetString(kSystemProfileHashPref).empty());
395 } 377 }
396 } 378 }
397 379
398 TEST_F(MetricsLogTest, InitialLogStabilityMetrics) { 380 TEST_F(MetricsLogTest, InitialLogStabilityMetrics) {
399 TestMetricsLog log(kClientId, kSessionId, MetricsLog::INITIAL_STABILITY_LOG); 381 TestMetricsLog log(
382 kClientId, kSessionId, MetricsLog::INITIAL_STABILITY_LOG, &prefs_);
400 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 383 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
401 GoogleUpdateMetrics(), 384 GoogleUpdateMetrics(),
402 std::vector<chrome_variations::ActiveGroupId>()); 385 std::vector<chrome_variations::ActiveGroupId>());
403 log.RecordStabilityMetrics(base::TimeDelta(), base::TimeDelta()); 386 log.RecordStabilityMetrics(base::TimeDelta(), base::TimeDelta());
404 const metrics::SystemProfileProto_Stability& stability = 387 const metrics::SystemProfileProto_Stability& stability =
405 log.system_profile().stability(); 388 log.system_profile().stability();
406 // Required metrics: 389 // Required metrics:
407 EXPECT_TRUE(stability.has_launch_count()); 390 EXPECT_TRUE(stability.has_launch_count());
408 EXPECT_TRUE(stability.has_crash_count()); 391 EXPECT_TRUE(stability.has_crash_count());
409 // Initial log metrics: 392 // Initial log metrics:
410 EXPECT_TRUE(stability.has_incomplete_shutdown_count()); 393 EXPECT_TRUE(stability.has_incomplete_shutdown_count());
411 EXPECT_TRUE(stability.has_breakpad_registration_success_count()); 394 EXPECT_TRUE(stability.has_breakpad_registration_success_count());
412 EXPECT_TRUE(stability.has_breakpad_registration_failure_count()); 395 EXPECT_TRUE(stability.has_breakpad_registration_failure_count());
413 EXPECT_TRUE(stability.has_debugger_present_count()); 396 EXPECT_TRUE(stability.has_debugger_present_count());
414 EXPECT_TRUE(stability.has_debugger_not_present_count()); 397 EXPECT_TRUE(stability.has_debugger_not_present_count());
415 } 398 }
416 399
417 TEST_F(MetricsLogTest, OngoingLogStabilityMetrics) { 400 TEST_F(MetricsLogTest, OngoingLogStabilityMetrics) {
418 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 401 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
419 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 402 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
420 GoogleUpdateMetrics(), 403 GoogleUpdateMetrics(),
421 std::vector<chrome_variations::ActiveGroupId>()); 404 std::vector<chrome_variations::ActiveGroupId>());
422 log.RecordStabilityMetrics(base::TimeDelta(), base::TimeDelta()); 405 log.RecordStabilityMetrics(base::TimeDelta(), base::TimeDelta());
423 const metrics::SystemProfileProto_Stability& stability = 406 const metrics::SystemProfileProto_Stability& stability =
424 log.system_profile().stability(); 407 log.system_profile().stability();
425 // Required metrics: 408 // Required metrics:
426 EXPECT_TRUE(stability.has_launch_count()); 409 EXPECT_TRUE(stability.has_launch_count());
427 EXPECT_TRUE(stability.has_crash_count()); 410 EXPECT_TRUE(stability.has_crash_count());
428 // Initial log metrics: 411 // Initial log metrics:
429 EXPECT_FALSE(stability.has_incomplete_shutdown_count()); 412 EXPECT_FALSE(stability.has_incomplete_shutdown_count());
430 EXPECT_FALSE(stability.has_breakpad_registration_success_count()); 413 EXPECT_FALSE(stability.has_breakpad_registration_success_count());
431 EXPECT_FALSE(stability.has_breakpad_registration_failure_count()); 414 EXPECT_FALSE(stability.has_breakpad_registration_failure_count());
432 EXPECT_FALSE(stability.has_debugger_present_count()); 415 EXPECT_FALSE(stability.has_debugger_present_count());
433 EXPECT_FALSE(stability.has_debugger_not_present_count()); 416 EXPECT_FALSE(stability.has_debugger_not_present_count());
434 } 417 }
435 418
436 #if defined(ENABLE_PLUGINS) 419 #if defined(ENABLE_PLUGINS)
437 TEST_F(MetricsLogTest, Plugins) { 420 TEST_F(MetricsLogTest, Plugins) {
438 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 421 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
439 422
440 std::vector<content::WebPluginInfo> plugins; 423 std::vector<content::WebPluginInfo> plugins;
441 plugins.push_back(CreateFakePluginInfo("p1", FILE_PATH_LITERAL("p1.plugin"), 424 plugins.push_back(CreateFakePluginInfo("p1", FILE_PATH_LITERAL("p1.plugin"),
442 "1.5", true)); 425 "1.5", true));
443 plugins.push_back(CreateFakePluginInfo("p2", FILE_PATH_LITERAL("p2.plugin"), 426 plugins.push_back(CreateFakePluginInfo("p2", FILE_PATH_LITERAL("p2.plugin"),
444 "2.0", false)); 427 "2.0", false));
445 log.RecordEnvironment(plugins, GoogleUpdateMetrics(), 428 log.RecordEnvironment(plugins, GoogleUpdateMetrics(),
446 std::vector<chrome_variations::ActiveGroupId>()); 429 std::vector<chrome_variations::ActiveGroupId>());
447 430
448 const metrics::SystemProfileProto& system_profile = log.system_profile(); 431 const metrics::SystemProfileProto& system_profile = log.system_profile();
449 ASSERT_EQ(2, system_profile.plugin_size()); 432 ASSERT_EQ(2, system_profile.plugin_size());
450 EXPECT_EQ("p1", system_profile.plugin(0).name()); 433 EXPECT_EQ("p1", system_profile.plugin(0).name());
451 EXPECT_EQ("p1.plugin", system_profile.plugin(0).filename()); 434 EXPECT_EQ("p1.plugin", system_profile.plugin(0).filename());
452 EXPECT_EQ("1.5", system_profile.plugin(0).version()); 435 EXPECT_EQ("1.5", system_profile.plugin(0).version());
453 EXPECT_TRUE(system_profile.plugin(0).is_pepper()); 436 EXPECT_TRUE(system_profile.plugin(0).is_pepper());
454 EXPECT_EQ("p2", system_profile.plugin(1).name()); 437 EXPECT_EQ("p2", system_profile.plugin(1).name());
455 EXPECT_EQ("p2.plugin", system_profile.plugin(1).filename()); 438 EXPECT_EQ("p2.plugin", system_profile.plugin(1).filename());
456 EXPECT_EQ("2.0", system_profile.plugin(1).version()); 439 EXPECT_EQ("2.0", system_profile.plugin(1).version());
457 EXPECT_FALSE(system_profile.plugin(1).is_pepper()); 440 EXPECT_FALSE(system_profile.plugin(1).is_pepper());
458 441
459 // Now set some plugin stability stats for p2 and verify they're recorded. 442 // Now set some plugin stability stats for p2 and verify they're recorded.
460 scoped_ptr<base::DictionaryValue> plugin_dict(new base::DictionaryValue); 443 scoped_ptr<base::DictionaryValue> plugin_dict(new base::DictionaryValue);
461 plugin_dict->SetString(prefs::kStabilityPluginName, "p2"); 444 plugin_dict->SetString(prefs::kStabilityPluginName, "p2");
462 plugin_dict->SetInteger(prefs::kStabilityPluginLaunches, 1); 445 plugin_dict->SetInteger(prefs::kStabilityPluginLaunches, 1);
463 plugin_dict->SetInteger(prefs::kStabilityPluginCrashes, 2); 446 plugin_dict->SetInteger(prefs::kStabilityPluginCrashes, 2);
464 plugin_dict->SetInteger(prefs::kStabilityPluginInstances, 3); 447 plugin_dict->SetInteger(prefs::kStabilityPluginInstances, 3);
465 plugin_dict->SetInteger(prefs::kStabilityPluginLoadingErrors, 4); 448 plugin_dict->SetInteger(prefs::kStabilityPluginLoadingErrors, 4);
466 { 449 {
467 ListPrefUpdate update(log.GetPrefService(), prefs::kStabilityPluginStats); 450 ListPrefUpdate update(&prefs_, prefs::kStabilityPluginStats);
468 update.Get()->Append(plugin_dict.release()); 451 update.Get()->Append(plugin_dict.release());
469 } 452 }
470 453
471 log.RecordStabilityMetrics(base::TimeDelta(), base::TimeDelta()); 454 log.RecordStabilityMetrics(base::TimeDelta(), base::TimeDelta());
472 const metrics::SystemProfileProto_Stability& stability = 455 const metrics::SystemProfileProto_Stability& stability =
473 log.system_profile().stability(); 456 log.system_profile().stability();
474 ASSERT_EQ(1, stability.plugin_stability_size()); 457 ASSERT_EQ(1, stability.plugin_stability_size());
475 EXPECT_EQ("p2", stability.plugin_stability(0).plugin().name()); 458 EXPECT_EQ("p2", stability.plugin_stability(0).plugin().name());
476 EXPECT_EQ("p2.plugin", stability.plugin_stability(0).plugin().filename()); 459 EXPECT_EQ("p2.plugin", stability.plugin_stability(0).plugin().filename());
477 EXPECT_EQ("2.0", stability.plugin_stability(0).plugin().version()); 460 EXPECT_EQ("2.0", stability.plugin_stability(0).plugin().version());
478 EXPECT_FALSE(stability.plugin_stability(0).plugin().is_pepper()); 461 EXPECT_FALSE(stability.plugin_stability(0).plugin().is_pepper());
479 EXPECT_EQ(1, stability.plugin_stability(0).launch_count()); 462 EXPECT_EQ(1, stability.plugin_stability(0).launch_count());
480 EXPECT_EQ(2, stability.plugin_stability(0).crash_count()); 463 EXPECT_EQ(2, stability.plugin_stability(0).crash_count());
481 EXPECT_EQ(3, stability.plugin_stability(0).instance_count()); 464 EXPECT_EQ(3, stability.plugin_stability(0).instance_count());
482 EXPECT_EQ(4, stability.plugin_stability(0).loading_error_count()); 465 EXPECT_EQ(4, stability.plugin_stability(0).loading_error_count());
483 } 466 }
484 #endif // defined(ENABLE_PLUGINS) 467 #endif // defined(ENABLE_PLUGINS)
485 468
486 // Test that we properly write profiler data to the log. 469 // Test that we properly write profiler data to the log.
487 TEST_F(MetricsLogTest, RecordProfilerData) { 470 TEST_F(MetricsLogTest, RecordProfilerData) {
488 // WARNING: If you broke the below check, you've modified how 471 // WARNING: If you broke the below check, you've modified how
489 // metrics::HashMetricName works. Please also modify all server-side code that 472 // metrics::HashMetricName works. Please also modify all server-side code that
490 // relies on the existing way of hashing. 473 // relies on the existing way of hashing.
491 EXPECT_EQ(GG_UINT64_C(1518842999910132863), 474 EXPECT_EQ(GG_UINT64_C(1518842999910132863),
492 metrics::HashMetricName("birth_thread*")); 475 metrics::HashMetricName("birth_thread*"));
493 476
494 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 477 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
495 EXPECT_EQ(0, log.uma_proto().profiler_event_size()); 478 EXPECT_EQ(0, log.uma_proto().profiler_event_size());
496 479
497 { 480 {
498 ProcessDataSnapshot process_data; 481 ProcessDataSnapshot process_data;
499 process_data.process_id = 177; 482 process_data.process_id = 177;
500 process_data.tasks.push_back(TaskSnapshot()); 483 process_data.tasks.push_back(TaskSnapshot());
501 process_data.tasks.back().birth.location.file_name = "a/b/file.h"; 484 process_data.tasks.back().birth.location.file_name = "a/b/file.h";
502 process_data.tasks.back().birth.location.function_name = "function"; 485 process_data.tasks.back().birth.location.function_name = "function";
503 process_data.tasks.back().birth.location.line_number = 1337; 486 process_data.tasks.back().birth.location.line_number = 1337;
504 process_data.tasks.back().birth.thread_name = "birth_thread"; 487 process_data.tasks.back().birth.thread_name = "birth_thread";
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 EXPECT_EQ(109, tracked_object->queue_time_total()); 628 EXPECT_EQ(109, tracked_object->queue_time_total());
646 EXPECT_EQ(104, tracked_object->queue_time_sampled()); 629 EXPECT_EQ(104, tracked_object->queue_time_sampled());
647 EXPECT_EQ(metrics::HashMetricName(""), 630 EXPECT_EQ(metrics::HashMetricName(""),
648 tracked_object->exec_thread_name_hash()); 631 tracked_object->exec_thread_name_hash());
649 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, 632 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER,
650 tracked_object->process_type()); 633 tracked_object->process_type());
651 } 634 }
652 } 635 }
653 636
654 TEST_F(MetricsLogTest, ChromeChannelWrittenToProtobuf) { 637 TEST_F(MetricsLogTest, ChromeChannelWrittenToProtobuf) {
655 TestMetricsLog log("user@test.com", kSessionId, MetricsLog::ONGOING_LOG); 638 TestMetricsLog log(
639 "user@test.com", kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
656 EXPECT_TRUE(log.uma_proto().system_profile().has_channel()); 640 EXPECT_TRUE(log.uma_proto().system_profile().has_channel());
657 } 641 }
658 642
659 #if defined(OS_CHROMEOS) 643 #if defined(OS_CHROMEOS)
660 TEST_F(MetricsLogTest, MultiProfileUserCount) { 644 TEST_F(MetricsLogTest, MultiProfileUserCount) {
661 std::string user1("user1@example.com"); 645 std::string user1("user1@example.com");
662 std::string user2("user2@example.com"); 646 std::string user2("user2@example.com");
663 std::string user3("user3@example.com"); 647 std::string user3("user3@example.com");
664 648
665 // |scoped_enabler| takes over the lifetime of |user_manager|. 649 // |scoped_enabler| takes over the lifetime of |user_manager|.
666 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager(); 650 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager();
667 chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager); 651 chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager);
668 user_manager->AddKioskAppUser(user1); 652 user_manager->AddKioskAppUser(user1);
669 user_manager->AddKioskAppUser(user2); 653 user_manager->AddKioskAppUser(user2);
670 user_manager->AddKioskAppUser(user3); 654 user_manager->AddKioskAppUser(user3);
671 655
672 user_manager->LoginUser(user1); 656 user_manager->LoginUser(user1);
673 user_manager->LoginUser(user3); 657 user_manager->LoginUser(user3);
674 658
675 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 659 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
676 std::vector<content::WebPluginInfo> plugins; 660 std::vector<content::WebPluginInfo> plugins;
677 GoogleUpdateMetrics google_update_metrics; 661 GoogleUpdateMetrics google_update_metrics;
678 std::vector<chrome_variations::ActiveGroupId> synthetic_trials; 662 std::vector<chrome_variations::ActiveGroupId> synthetic_trials;
679 log.RecordEnvironment(plugins, google_update_metrics, synthetic_trials); 663 log.RecordEnvironment(plugins, google_update_metrics, synthetic_trials);
680 EXPECT_EQ(2u, log.system_profile().multi_profile_user_count()); 664 EXPECT_EQ(2u, log.system_profile().multi_profile_user_count());
681 } 665 }
682 666
683 TEST_F(MetricsLogTest, MultiProfileCountInvalidated) { 667 TEST_F(MetricsLogTest, MultiProfileCountInvalidated) {
684 std::string user1("user1@example.com"); 668 std::string user1("user1@example.com");
685 std::string user2("user2@example.com"); 669 std::string user2("user2@example.com");
686 std::string user3("user3@example.com"); 670 std::string user3("user3@example.com");
687 671
688 // |scoped_enabler| takes over the lifetime of |user_manager|. 672 // |scoped_enabler| takes over the lifetime of |user_manager|.
689 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager(); 673 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager();
690 chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager); 674 chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager);
691 user_manager->AddKioskAppUser(user1); 675 user_manager->AddKioskAppUser(user1);
692 user_manager->AddKioskAppUser(user2); 676 user_manager->AddKioskAppUser(user2);
693 user_manager->AddKioskAppUser(user3); 677 user_manager->AddKioskAppUser(user3);
694 678
695 user_manager->LoginUser(user1); 679 user_manager->LoginUser(user1);
696 680
697 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 681 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
698 EXPECT_EQ(1u, log.system_profile().multi_profile_user_count()); 682 EXPECT_EQ(1u, log.system_profile().multi_profile_user_count());
699 683
700 user_manager->LoginUser(user2); 684 user_manager->LoginUser(user2);
701 std::vector<chrome_variations::ActiveGroupId> synthetic_trials; 685 std::vector<chrome_variations::ActiveGroupId> synthetic_trials;
702 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 686 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
703 GoogleUpdateMetrics(), synthetic_trials); 687 GoogleUpdateMetrics(), synthetic_trials);
704 EXPECT_EQ(0u, log.system_profile().multi_profile_user_count()); 688 EXPECT_EQ(0u, log.system_profile().multi_profile_user_count());
705 } 689 }
706 690
707 TEST_F(MetricsLogTest, BluetoothHardwareDisabled) { 691 TEST_F(MetricsLogTest, BluetoothHardwareDisabled) {
708 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 692 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
709 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 693 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
710 GoogleUpdateMetrics(), 694 GoogleUpdateMetrics(),
711 std::vector<chrome_variations::ActiveGroupId>()); 695 std::vector<chrome_variations::ActiveGroupId>());
712 696
713 EXPECT_TRUE(log.system_profile().has_hardware()); 697 EXPECT_TRUE(log.system_profile().has_hardware());
714 EXPECT_TRUE(log.system_profile().hardware().has_bluetooth()); 698 EXPECT_TRUE(log.system_profile().hardware().has_bluetooth());
715 699
716 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_present()); 700 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_present());
717 EXPECT_FALSE(log.system_profile().hardware().bluetooth().is_enabled()); 701 EXPECT_FALSE(log.system_profile().hardware().bluetooth().is_enabled());
718 } 702 }
719 703
720 TEST_F(MetricsLogTest, BluetoothHardwareEnabled) { 704 TEST_F(MetricsLogTest, BluetoothHardwareEnabled) {
721 FakeBluetoothAdapterClient::Properties* properties = 705 FakeBluetoothAdapterClient::Properties* properties =
722 fake_bluetooth_adapter_client_->GetProperties( 706 fake_bluetooth_adapter_client_->GetProperties(
723 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath)); 707 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath));
724 properties->powered.ReplaceValue(true); 708 properties->powered.ReplaceValue(true);
725 709
726 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 710 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
727 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 711 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
728 GoogleUpdateMetrics(), 712 GoogleUpdateMetrics(),
729 std::vector<chrome_variations::ActiveGroupId>()); 713 std::vector<chrome_variations::ActiveGroupId>());
730 714
731 EXPECT_TRUE(log.system_profile().has_hardware()); 715 EXPECT_TRUE(log.system_profile().has_hardware());
732 EXPECT_TRUE(log.system_profile().hardware().has_bluetooth()); 716 EXPECT_TRUE(log.system_profile().hardware().has_bluetooth());
733 717
734 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_present()); 718 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_present());
735 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_enabled()); 719 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_enabled());
736 } 720 }
737 721
738 TEST_F(MetricsLogTest, BluetoothPairedDevices) { 722 TEST_F(MetricsLogTest, BluetoothPairedDevices) {
739 // The fake bluetooth adapter class already claims to be paired with one 723 // The fake bluetooth adapter class already claims to be paired with one
740 // device when initialized. Add a second and third fake device to it so we 724 // device when initialized. Add a second and third fake device to it so we
741 // can test the cases where a device is not paired (LE device, generally) 725 // can test the cases where a device is not paired (LE device, generally)
742 // and a device that does not have Device ID information. 726 // and a device that does not have Device ID information.
743 fake_bluetooth_device_client_->CreateDevice( 727 fake_bluetooth_device_client_->CreateDevice(
744 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 728 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
745 dbus::ObjectPath(FakeBluetoothDeviceClient::kRequestPinCodePath)); 729 dbus::ObjectPath(FakeBluetoothDeviceClient::kRequestPinCodePath));
746 730
747 fake_bluetooth_device_client_->CreateDevice( 731 fake_bluetooth_device_client_->CreateDevice(
748 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 732 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
749 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath)); 733 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath));
750 734
751 FakeBluetoothDeviceClient::Properties* properties = 735 FakeBluetoothDeviceClient::Properties* properties =
752 fake_bluetooth_device_client_->GetProperties( 736 fake_bluetooth_device_client_->GetProperties(
753 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath)); 737 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath));
754 properties->paired.ReplaceValue(true); 738 properties->paired.ReplaceValue(true);
755 739
756 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 740 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG, &prefs_);
757 log.RecordEnvironment(std::vector<content::WebPluginInfo>(), 741 log.RecordEnvironment(std::vector<content::WebPluginInfo>(),
758 GoogleUpdateMetrics(), 742 GoogleUpdateMetrics(),
759 std::vector<chrome_variations::ActiveGroupId>()); 743 std::vector<chrome_variations::ActiveGroupId>());
760 744
761 ASSERT_TRUE(log.system_profile().has_hardware()); 745 ASSERT_TRUE(log.system_profile().has_hardware());
762 ASSERT_TRUE(log.system_profile().hardware().has_bluetooth()); 746 ASSERT_TRUE(log.system_profile().hardware().has_bluetooth());
763 747
764 // Only two of the devices should appear. 748 // Only two of the devices should appear.
765 EXPECT_EQ(2, 749 EXPECT_EQ(2,
766 log.system_profile().hardware().bluetooth().paired_device_size()); 750 log.system_profile().hardware().bluetooth().paired_device_size());
(...skipping 20 matching lines...) Expand all
787 PairedDevice device2 = 771 PairedDevice device2 =
788 log.system_profile().hardware().bluetooth().paired_device(1); 772 log.system_profile().hardware().bluetooth().paired_device(1);
789 773
790 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, 774 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass,
791 device2.bluetooth_class()); 775 device2.bluetooth_class());
792 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); 776 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type());
793 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); 777 EXPECT_EQ(0x207D74U, device2.vendor_prefix());
794 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); 778 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source());
795 } 779 }
796 #endif // OS_CHROMEOS 780 #endif // OS_CHROMEOS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698