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

Unified Diff: chrome/browser/policy/policy_statistics_collector_unittest.cc

Issue 10916235: Record policy usage statistics every 24 hours. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed compilation Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/policy/policy_statistics_collector.cc ('k') | chrome/browser/policy/test_task_runner.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/policy/policy_statistics_collector_unittest.cc
diff --git a/chrome/browser/policy/policy_statistics_collector_unittest.cc b/chrome/browser/policy/policy_statistics_collector_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..915b6f15be70c59b0edf28e43affc559422189a8
--- /dev/null
+++ b/chrome/browser/policy/policy_statistics_collector_unittest.cc
@@ -0,0 +1,170 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <cstring>
+#include <string>
+
+#include "base/compiler_specific.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/time.h"
+#include "base/values.h"
+#include "chrome/browser/policy/mock_policy_service.h"
+#include "chrome/browser/policy/policy_map.h"
+#include "chrome/browser/policy/policy_statistics_collector.h"
+#include "chrome/browser/policy/policy_types.h"
+#include "chrome/browser/policy/test_task_runner.h"
+#include "chrome/browser/prefs/browser_prefs.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/test/base/testing_pref_service.h"
+#include "policy/policy_constants.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace policy {
+
+namespace {
+
+using testing::_;
+using testing::Lt;
+using testing::Return;
+using testing::ReturnRef;
+
+// Arbitrary policy names used for testing.
+const char* const kTestPolicy1 = key::kHomepageIsNewTabPage;
+const char* const kTestPolicy2 = key::kInstantEnabled;
+
+class TestPolicyStatisticsCollector : public PolicyStatisticsCollector {
+ public:
+ TestPolicyStatisticsCollector(
+ PolicyService* policy_service,
+ PrefService* prefs,
+ const scoped_refptr<base::TaskRunner>& task_runner)
+ : PolicyStatisticsCollector(policy_service, prefs, task_runner) {
+ }
+
+ MOCK_METHOD1(RecordPolicyUse, void(int));
+};
+
+} // namespace
+
+class PolicyStatisticsCollectorTest : public testing::Test {
+ protected:
+ PolicyStatisticsCollectorTest()
+ : update_delay_(base::TimeDelta::FromMilliseconds(
+ PolicyStatisticsCollector::kStatisticsUpdateRate)),
+ test_policy_id1_(-1),
+ test_policy_id2_(-1),
+ task_runner_(new TestTaskRunner) {
+ }
+
+ virtual void SetUp() OVERRIDE {
+ chrome::RegisterLocalState(&prefs_);
+
+ // Find ids for kTestPolicy1 and kTestPolicy2.
+ const policy::PolicyDefinitionList* policy_list =
+ policy::GetChromePolicyDefinitionList();
+ for (const policy::PolicyDefinitionList::Entry* policy = policy_list->begin;
+ policy != policy_list->end; ++policy) {
+ if (strcmp(policy->name, kTestPolicy1) == 0)
+ test_policy_id1_ = policy->id;
+ else if (strcmp(policy->name, kTestPolicy2) == 0)
+ test_policy_id2_ = policy->id;
+ }
+ ASSERT_TRUE(test_policy_id1_ != -1);
+ ASSERT_TRUE(test_policy_id2_ != -1);
+
+ // Set up default function behaviour.
+ EXPECT_CALL(policy_service_, GetPolicies(POLICY_DOMAIN_CHROME,
+ std::string())).
+ WillRepeatedly(ReturnRef(policy_map_));
+
+ // Arbitrary negative value (so it'll be different from |update_delay_|).
+ last_delay_ = base::TimeDelta::FromDays(-1);
+ policy_map_.Clear();
+ policy_statistics_collector_.reset(new TestPolicyStatisticsCollector(
+ &policy_service_,
+ &prefs_,
+ task_runner_));
+ }
+
+ void SetPolicy(const std::string& name) {
+ policy_map_.Set(name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
+ base::Value::CreateBooleanValue(true));
+ }
+
+ const base::TimeDelta update_delay_;
+
+ int test_policy_id1_;
+ int test_policy_id2_;
+
+ base::TimeDelta last_delay_;
+
+ TestingPrefService prefs_;
+ MockPolicyService policy_service_;
+ PolicyMap policy_map_;
+
+ scoped_refptr<TestTaskRunner> task_runner_;
+ scoped_ptr<TestPolicyStatisticsCollector> policy_statistics_collector_;
+};
+
+TEST_F(PolicyStatisticsCollectorTest, CollectPending) {
+ SetPolicy(kTestPolicy1);
+
+ prefs_.SetInt64(prefs::kLastPolicyStatisticsUpdate,
+ (base::Time::Now() - update_delay_).ToInternalValue());
+
+ EXPECT_CALL(*policy_statistics_collector_.get(),
+ RecordPolicyUse(test_policy_id1_));
+ EXPECT_CALL(*task_runner_, PostDelayedTask(_, _, update_delay_)).
+ WillOnce(Return(true));
+
+ policy_statistics_collector_->Initialize();
+}
+
+TEST_F(PolicyStatisticsCollectorTest, CollectPendingVeryOld) {
+ SetPolicy(kTestPolicy1);
+
+ // Must not be 0.0 (read comment for Time::FromDoubleT).
+ prefs_.SetInt64(prefs::kLastPolicyStatisticsUpdate,
+ base::Time::FromDoubleT(1.0).ToInternalValue());
+
+ EXPECT_CALL(*policy_statistics_collector_.get(),
+ RecordPolicyUse(test_policy_id1_));
+ EXPECT_CALL(*task_runner_, PostDelayedTask(_, _, update_delay_)).
+ WillOnce(Return(true));
+
+ policy_statistics_collector_->Initialize();
+}
+
+TEST_F(PolicyStatisticsCollectorTest, CollectLater) {
+ SetPolicy(kTestPolicy1);
+
+ prefs_.SetInt64(prefs::kLastPolicyStatisticsUpdate,
+ (base::Time::Now() - update_delay_ / 2).ToInternalValue());
+
+ EXPECT_CALL(*task_runner_, PostDelayedTask(_, _, Lt(update_delay_))).
+ WillOnce(Return(true));
+
+ policy_statistics_collector_->Initialize();
+}
+
+TEST_F(PolicyStatisticsCollectorTest, MultiplePolicies) {
+ SetPolicy(kTestPolicy1);
+ SetPolicy(kTestPolicy2);
+
+ prefs_.SetInt64(prefs::kLastPolicyStatisticsUpdate,
+ (base::Time::Now() - update_delay_).ToInternalValue());
+
+ EXPECT_CALL(*policy_statistics_collector_.get(),
+ RecordPolicyUse(test_policy_id1_));
+ EXPECT_CALL(*policy_statistics_collector_.get(),
+ RecordPolicyUse(test_policy_id2_));
+ EXPECT_CALL(*task_runner_, PostDelayedTask(_, _, _)).
+ WillOnce(Return(true));
+
+ policy_statistics_collector_->Initialize();
+}
+
+} // namespace policy
« no previous file with comments | « chrome/browser/policy/policy_statistics_collector.cc ('k') | chrome/browser/policy/test_task_runner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698