| OLD | NEW |
| 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/port.h" | 8 #include "base/port.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| 11 #include "base/time.h" | 11 #include "base/time.h" |
| 12 #include "base/tracked_objects.h" | 12 #include "base/tracked_objects.h" |
| 13 #include "chrome/browser/google/google_util.h" |
| 13 #include "chrome/browser/metrics/metrics_log.h" | 14 #include "chrome/browser/metrics/metrics_log.h" |
| 14 #include "chrome/browser/prefs/browser_prefs.h" | 15 #include "chrome/browser/prefs/browser_prefs.h" |
| 15 #include "chrome/browser/prefs/pref_service.h" | 16 #include "chrome/browser/prefs/pref_service.h" |
| 16 #include "chrome/common/metrics/variations/variations_util.h" | 17 #include "chrome/common/metrics/variations/variations_util.h" |
| 17 #include "chrome/common/metrics/proto/profiler_event.pb.h" | 18 #include "chrome/common/metrics/proto/profiler_event.pb.h" |
| 18 #include "chrome/common/metrics/proto/system_profile.pb.h" | 19 #include "chrome/common/metrics/proto/system_profile.pb.h" |
| 19 #include "chrome/common/pref_names.h" | 20 #include "chrome/common/pref_names.h" |
| 20 #include "chrome/installer/util/google_update_settings.h" | 21 #include "chrome/installer/util/google_update_settings.h" |
| 21 #include "chrome/test/base/testing_pref_service.h" | 22 #include "chrome/test/base/testing_pref_service.h" |
| 22 #include "googleurl/src/gurl.h" | 23 #include "googleurl/src/gurl.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
| 24 #include "ui/gfx/size.h" | 25 #include "ui/gfx/size.h" |
| 25 #include "webkit/plugins/webplugininfo.h" | 26 #include "webkit/plugins/webplugininfo.h" |
| 26 | 27 |
| 27 using base::TimeDelta; | 28 using base::TimeDelta; |
| 28 using metrics::ProfilerEventProto; | 29 using metrics::ProfilerEventProto; |
| 29 using tracked_objects::ProcessDataSnapshot; | 30 using tracked_objects::ProcessDataSnapshot; |
| 30 using tracked_objects::TaskSnapshot; | 31 using tracked_objects::TaskSnapshot; |
| 31 | 32 |
| 32 namespace { | 33 namespace { |
| 33 | 34 |
| 34 const char kClientId[] = "bogus client ID"; | 35 const char kClientId[] = "bogus client ID"; |
| 35 const int kSessionId = 127; | 36 const int kSessionId = 127; |
| 36 const int kScreenWidth = 1024; | 37 const int kScreenWidth = 1024; |
| 37 const int kScreenHeight = 768; | 38 const int kScreenHeight = 768; |
| 38 const int kScreenCount = 3; | 39 const int kScreenCount = 3; |
| 39 const float kScreenScaleFactor = 2; | 40 const float kScreenScaleFactor = 2; |
| 41 const char kBrandForTesting[] = "brand_for_testing"; |
| 40 const chrome_variations::ActiveGroupId kFieldTrialIds[] = { | 42 const chrome_variations::ActiveGroupId kFieldTrialIds[] = { |
| 41 {37, 43}, | 43 {37, 43}, |
| 42 {13, 47}, | 44 {13, 47}, |
| 43 {23, 17} | 45 {23, 17} |
| 44 }; | 46 }; |
| 45 | 47 |
| 46 class TestMetricsLog : public MetricsLog { | 48 class TestMetricsLog : public MetricsLog { |
| 47 public: | 49 public: |
| 48 TestMetricsLog(const std::string& client_id, int session_id) | 50 TestMetricsLog(const std::string& client_id, int session_id) |
| 49 : MetricsLog(client_id, session_id) { | 51 : MetricsLog(client_id, session_id), |
| 52 brand_for_testing_(kBrandForTesting) { |
| 50 chrome::RegisterLocalState(&prefs_); | 53 chrome::RegisterLocalState(&prefs_); |
| 51 | 54 |
| 52 #if defined(OS_CHROMEOS) | 55 #if defined(OS_CHROMEOS) |
| 53 prefs_.SetInteger(prefs::kStabilityChildProcessCrashCount, 10); | 56 prefs_.SetInteger(prefs::kStabilityChildProcessCrashCount, 10); |
| 54 prefs_.SetInteger(prefs::kStabilityOtherUserCrashCount, 11); | 57 prefs_.SetInteger(prefs::kStabilityOtherUserCrashCount, 11); |
| 55 prefs_.SetInteger(prefs::kStabilityKernelCrashCount, 12); | 58 prefs_.SetInteger(prefs::kStabilityKernelCrashCount, 12); |
| 56 prefs_.SetInteger(prefs::kStabilitySystemUncleanShutdownCount, 13); | 59 prefs_.SetInteger(prefs::kStabilitySystemUncleanShutdownCount, 13); |
| 57 #endif // OS_CHROMEOS | 60 #endif // OS_CHROMEOS |
| 58 } | 61 } |
| 59 virtual ~TestMetricsLog() {} | 62 virtual ~TestMetricsLog() {} |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 virtual float GetScreenDeviceScaleFactor() const OVERRIDE { | 95 virtual float GetScreenDeviceScaleFactor() const OVERRIDE { |
| 93 return kScreenScaleFactor; | 96 return kScreenScaleFactor; |
| 94 } | 97 } |
| 95 | 98 |
| 96 virtual int GetScreenCount() const OVERRIDE { | 99 virtual int GetScreenCount() const OVERRIDE { |
| 97 return kScreenCount; | 100 return kScreenCount; |
| 98 } | 101 } |
| 99 | 102 |
| 100 TestingPrefServiceSimple prefs_; | 103 TestingPrefServiceSimple prefs_; |
| 101 | 104 |
| 105 google_util::BrandForTesting brand_for_testing_; |
| 106 |
| 102 DISALLOW_COPY_AND_ASSIGN(TestMetricsLog); | 107 DISALLOW_COPY_AND_ASSIGN(TestMetricsLog); |
| 103 }; | 108 }; |
| 104 | 109 |
| 105 } // namespace | 110 } // namespace |
| 106 | 111 |
| 107 class MetricsLogTest : public testing::Test { | 112 class MetricsLogTest : public testing::Test { |
| 108 protected: | 113 protected: |
| 109 void TestRecordEnvironment(bool proto_only) { | 114 void TestRecordEnvironment(bool proto_only) { |
| 110 TestMetricsLog log(kClientId, kSessionId); | 115 TestMetricsLog log(kClientId, kSessionId); |
| 111 | 116 |
| 112 std::vector<webkit::WebPluginInfo> plugins; | 117 std::vector<webkit::WebPluginInfo> plugins; |
| 113 GoogleUpdateMetrics google_update_metrics; | 118 GoogleUpdateMetrics google_update_metrics; |
| 114 if (proto_only) | 119 if (proto_only) |
| 115 log.RecordEnvironmentProto(plugins, google_update_metrics); | 120 log.RecordEnvironmentProto(plugins, google_update_metrics); |
| 116 else | 121 else |
| 117 log.RecordEnvironment(plugins, google_update_metrics, NULL); | 122 log.RecordEnvironment(plugins, google_update_metrics, NULL); |
| 118 | 123 |
| 119 const metrics::SystemProfileProto& system_profile = log.system_profile(); | 124 const metrics::SystemProfileProto& system_profile = log.system_profile(); |
| 120 ASSERT_EQ(arraysize(kFieldTrialIds), | 125 ASSERT_EQ(arraysize(kFieldTrialIds), |
| 121 static_cast<size_t>(system_profile.field_trial_size())); | 126 static_cast<size_t>(system_profile.field_trial_size())); |
| 122 for (size_t i = 0; i < arraysize(kFieldTrialIds); ++i) { | 127 for (size_t i = 0; i < arraysize(kFieldTrialIds); ++i) { |
| 123 const metrics::SystemProfileProto::FieldTrial& field_trial = | 128 const metrics::SystemProfileProto::FieldTrial& field_trial = |
| 124 system_profile.field_trial(i); | 129 system_profile.field_trial(i); |
| 125 EXPECT_EQ(kFieldTrialIds[i].name, field_trial.name_id()); | 130 EXPECT_EQ(kFieldTrialIds[i].name, field_trial.name_id()); |
| 126 EXPECT_EQ(kFieldTrialIds[i].group, field_trial.group_id()); | 131 EXPECT_EQ(kFieldTrialIds[i].group, field_trial.group_id()); |
| 127 } | 132 } |
| 128 | 133 |
| 134 EXPECT_EQ(kBrandForTesting, system_profile.brand_code()); |
| 135 |
| 129 const metrics::SystemProfileProto::Hardware& hardware = | 136 const metrics::SystemProfileProto::Hardware& hardware = |
| 130 system_profile.hardware(); | 137 system_profile.hardware(); |
| 131 EXPECT_EQ(kScreenWidth, hardware.primary_screen_width()); | 138 EXPECT_EQ(kScreenWidth, hardware.primary_screen_width()); |
| 132 EXPECT_EQ(kScreenHeight, hardware.primary_screen_height()); | 139 EXPECT_EQ(kScreenHeight, hardware.primary_screen_height()); |
| 133 EXPECT_EQ(kScreenScaleFactor, hardware.primary_screen_scale_factor()); | 140 EXPECT_EQ(kScreenScaleFactor, hardware.primary_screen_scale_factor()); |
| 134 EXPECT_EQ(kScreenCount, hardware.screen_count()); | 141 EXPECT_EQ(kScreenCount, hardware.screen_count()); |
| 135 | 142 |
| 136 // TODO(isherman): Verify other data written into the protobuf as a result | 143 // TODO(isherman): Verify other data written into the protobuf as a result |
| 137 // of this call. | 144 // of this call. |
| 138 } | 145 } |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 EXPECT_NE(std::string::npos, | 314 EXPECT_NE(std::string::npos, |
| 308 encoded.find(" childprocesscrashcount=\"10\"")); | 315 encoded.find(" childprocesscrashcount=\"10\"")); |
| 309 EXPECT_EQ(std::string::npos, | 316 EXPECT_EQ(std::string::npos, |
| 310 encoded.find(" otherusercrashcount=")); | 317 encoded.find(" otherusercrashcount=")); |
| 311 EXPECT_EQ(std::string::npos, | 318 EXPECT_EQ(std::string::npos, |
| 312 encoded.find(" kernelcrashcount=")); | 319 encoded.find(" kernelcrashcount=")); |
| 313 EXPECT_EQ(std::string::npos, | 320 EXPECT_EQ(std::string::npos, |
| 314 encoded.find(" systemuncleanshutdowns=")); | 321 encoded.find(" systemuncleanshutdowns=")); |
| 315 } | 322 } |
| 316 #endif // OS_CHROMEOS | 323 #endif // OS_CHROMEOS |
| OLD | NEW |