| Index: chrome/browser/policy/cloud/cloud_policy_invalidator_unittest.cc
|
| diff --git a/chrome/browser/policy/cloud/cloud_policy_invalidator_unittest.cc b/chrome/browser/policy/cloud/cloud_policy_invalidator_unittest.cc
|
| index 75f7ec41acda48d0483228d4143d754b47b62e86..50039f0c29fcde8314ec14d8995642a31dd69559 100644
|
| --- a/chrome/browser/policy/cloud/cloud_policy_invalidator_unittest.cc
|
| +++ b/chrome/browser/policy/cloud/cloud_policy_invalidator_unittest.cc
|
| @@ -46,8 +46,6 @@ class CloudPolicyInvalidatorTest : public testing::Test {
|
|
|
| CloudPolicyInvalidatorTest();
|
|
|
| - virtual void SetUp() OVERRIDE;
|
| -
|
| virtual void TearDown() OVERRIDE;
|
|
|
| // Starts the invalidator which will be tested.
|
| @@ -147,10 +145,6 @@ class CloudPolicyInvalidatorTest : public testing::Test {
|
| // invalidation service.
|
| bool IsInvalidatorRegistered();
|
|
|
| - // Get the current count for the given metric.
|
| - base::HistogramBase::Count GetCount(MetricPolicyRefresh metric);
|
| - base::HistogramBase::Count GetInvalidationCount(PolicyInvalidationType type);
|
| -
|
| // Advance the test clock.
|
| void AdvanceClock(base::TimeDelta delta);
|
|
|
| @@ -164,6 +158,10 @@ class CloudPolicyInvalidatorTest : public testing::Test {
|
| // Get an invalidation version for the given time.
|
| int64 GetVersion(base::Time time);
|
|
|
| + // Whether the |invalidator_| is responsible for user policy (as opposed to
|
| + // device policy).
|
| + virtual bool IsHandlingUserPolicy() const;
|
| +
|
| private:
|
| // Checks that the policy was refreshed due to an invalidation with the given
|
| // base delay.
|
| @@ -175,10 +173,6 @@ class CloudPolicyInvalidatorTest : public testing::Test {
|
| // Returns the object id of the given policy object.
|
| const invalidation::ObjectId& GetPolicyObjectId(PolicyObject object) const;
|
|
|
| - // Get histogram samples for the given histogram.
|
| - scoped_ptr<base::HistogramSamples> GetHistogramSamples(
|
| - const std::string& name) const;
|
| -
|
| base::MessageLoop loop_;
|
|
|
| // Objects the invalidator depends on.
|
| @@ -203,12 +197,6 @@ class CloudPolicyInvalidatorTest : public testing::Test {
|
|
|
| // The currently used policy value.
|
| const char* policy_value_cur_;
|
| -
|
| - // Stores starting histogram counts for kMetricPolicyRefresh.
|
| - scoped_ptr<base::HistogramSamples> refresh_samples_;
|
| -
|
| - // Stores starting histogram counts for kMetricPolicyInvalidations.
|
| - scoped_ptr<base::HistogramSamples> invalidations_samples_;
|
| };
|
|
|
| CloudPolicyInvalidatorTest::CloudPolicyInvalidatorTest()
|
| @@ -228,12 +216,6 @@ CloudPolicyInvalidatorTest::CloudPolicyInvalidatorTest()
|
| base::Time::UnixEpoch() + base::TimeDelta::FromSeconds(987654321));
|
| }
|
|
|
| -void CloudPolicyInvalidatorTest::SetUp() {
|
| - base::StatisticsRecorder::Initialize();
|
| - refresh_samples_ = GetHistogramSamples(kMetricPolicyRefresh);
|
| - invalidations_samples_ = GetHistogramSamples(kMetricPolicyInvalidations);
|
| -}
|
| -
|
| void CloudPolicyInvalidatorTest::TearDown() {
|
| if (invalidator_)
|
| invalidator_->Shutdown();
|
| @@ -244,6 +226,7 @@ void CloudPolicyInvalidatorTest::StartInvalidator(
|
| bool initialize,
|
| bool start_refresh_scheduler) {
|
| invalidator_.reset(new CloudPolicyInvalidator(
|
| + IsHandlingUserPolicy(),
|
| &core_,
|
| task_runner_,
|
| scoped_ptr<base::Clock>(clock_)));
|
| @@ -388,18 +371,6 @@ bool CloudPolicyInvalidatorTest::IsInvalidatorRegistered() {
|
| .GetRegisteredIds(invalidator_.get()).empty();
|
| }
|
|
|
| -base::HistogramBase::Count CloudPolicyInvalidatorTest::GetCount(
|
| - MetricPolicyRefresh metric) {
|
| - return GetHistogramSamples(kMetricPolicyRefresh)->GetCount(metric) -
|
| - refresh_samples_->GetCount(metric);
|
| -}
|
| -
|
| -base::HistogramBase::Count CloudPolicyInvalidatorTest::GetInvalidationCount(
|
| - PolicyInvalidationType type) {
|
| - return GetHistogramSamples(kMetricPolicyInvalidations)->GetCount(type) -
|
| - invalidations_samples_->GetCount(type);
|
| -}
|
| -
|
| void CloudPolicyInvalidatorTest::AdvanceClock(base::TimeDelta delta) {
|
| clock_->Advance(delta);
|
| }
|
| @@ -416,6 +387,10 @@ int64 CloudPolicyInvalidatorTest::GetVersion(base::Time time) {
|
| return (time - base::Time::UnixEpoch()).InMicroseconds();
|
| }
|
|
|
| +bool CloudPolicyInvalidatorTest::IsHandlingUserPolicy() const {
|
| + return true;
|
| +}
|
| +
|
| bool CloudPolicyInvalidatorTest::CheckPolicyRefreshed(base::TimeDelta delay) {
|
| base::TimeDelta max_delay = delay + base::TimeDelta::FromMilliseconds(
|
| CloudPolicyInvalidator::kMaxFetchDelayMin);
|
| @@ -453,16 +428,6 @@ const invalidation::ObjectId& CloudPolicyInvalidatorTest::GetPolicyObjectId(
|
| return object == POLICY_OBJECT_A ? object_id_a_ : object_id_b_;
|
| }
|
|
|
| -scoped_ptr<base::HistogramSamples>
|
| - CloudPolicyInvalidatorTest::GetHistogramSamples(
|
| - const std::string& name) const {
|
| - base::HistogramBase* histogram =
|
| - base::StatisticsRecorder::FindHistogram(name);
|
| - if (!histogram)
|
| - return scoped_ptr<base::HistogramSamples>(new base::SampleMap());
|
| - return histogram->SnapshotSamples();
|
| -}
|
| -
|
| TEST_F(CloudPolicyInvalidatorTest, Uninitialized) {
|
| // No invalidations should be processed if the invalidator is not initialized.
|
| StartInvalidator(false /* initialize */, true /* start_refresh_scheduler */);
|
| @@ -795,7 +760,77 @@ TEST_F(CloudPolicyInvalidatorTest, Disconnect) {
|
| EXPECT_FALSE(InvalidationsEnabled());
|
| }
|
|
|
| -TEST_F(CloudPolicyInvalidatorTest, RefreshMetricsUnregistered) {
|
| +class CloudPolicyInvalidatorUserAndDevicePolicyTest
|
| + : public CloudPolicyInvalidatorTest,
|
| + public ::testing::WithParamInterface<bool> {
|
| + protected:
|
| + // CloudPolicyInvalidatorTest:
|
| + virtual void SetUp() OVERRIDE;
|
| +
|
| + // Get the current count for the given metric.
|
| + base::HistogramBase::Count GetCount(MetricPolicyRefresh metric);
|
| + base::HistogramBase::Count GetInvalidationCount(PolicyInvalidationType type);
|
| +
|
| + private:
|
| + // CloudPolicyInvalidatorTest:
|
| + virtual bool IsHandlingUserPolicy() const OVERRIDE;
|
| +
|
| + // Get histogram samples for the given histogram.
|
| + scoped_ptr<base::HistogramSamples> GetHistogramSamples(
|
| + const std::string& name) const;
|
| +
|
| + // Stores starting histogram counts for kMetricPolicyRefresh.
|
| + scoped_ptr<base::HistogramSamples> refresh_samples_;
|
| +
|
| + // Stores starting histogram counts for kMetricPolicyInvalidations.
|
| + scoped_ptr<base::HistogramSamples> invalidations_samples_;
|
| +};
|
| +
|
| +void CloudPolicyInvalidatorUserAndDevicePolicyTest::SetUp() {
|
| + base::StatisticsRecorder::Initialize();
|
| + refresh_samples_ = GetHistogramSamples(
|
| + IsHandlingUserPolicy() ? kMetricUserPolicyRefresh
|
| + : kMetricDevicePolicyRefresh);
|
| + invalidations_samples_ = GetHistogramSamples(
|
| + IsHandlingUserPolicy() ? kMetricUserPolicyInvalidations
|
| + : kMetricDevicePolicyInvalidations);
|
| +}
|
| +
|
| +base::HistogramBase::Count
|
| +CloudPolicyInvalidatorUserAndDevicePolicyTest::GetCount(
|
| + MetricPolicyRefresh metric) {
|
| + return GetHistogramSamples(
|
| + IsHandlingUserPolicy() ? kMetricUserPolicyRefresh :
|
| + kMetricDevicePolicyRefresh)->GetCount(metric) -
|
| + refresh_samples_->GetCount(metric);
|
| +}
|
| +
|
| +base::HistogramBase::Count
|
| +CloudPolicyInvalidatorUserAndDevicePolicyTest::GetInvalidationCount(
|
| + PolicyInvalidationType type) {
|
| + return GetHistogramSamples(
|
| + IsHandlingUserPolicy() ? kMetricUserPolicyInvalidations
|
| + : kMetricDevicePolicyInvalidations)->
|
| + GetCount(type) - invalidations_samples_->GetCount(type);
|
| +}
|
| +
|
| +bool
|
| +CloudPolicyInvalidatorUserAndDevicePolicyTest::IsHandlingUserPolicy() const {
|
| + return GetParam();
|
| +}
|
| +
|
| +scoped_ptr<base::HistogramSamples>
|
| +CloudPolicyInvalidatorUserAndDevicePolicyTest::GetHistogramSamples(
|
| + const std::string& name) const {
|
| + base::HistogramBase* histogram =
|
| + base::StatisticsRecorder::FindHistogram(name);
|
| + if (!histogram)
|
| + return scoped_ptr<base::HistogramSamples>(new base::SampleMap());
|
| + return histogram->SnapshotSamples();
|
| +}
|
| +
|
| +TEST_P(CloudPolicyInvalidatorUserAndDevicePolicyTest,
|
| + RefreshMetricsUnregistered) {
|
| // Store loads occurring before invalidation registration are not counted.
|
| StartInvalidator();
|
| StorePolicy(POLICY_OBJECT_NONE, 0, false /* policy_changed */);
|
| @@ -807,7 +842,8 @@ TEST_F(CloudPolicyInvalidatorTest, RefreshMetricsUnregistered) {
|
| EXPECT_EQ(0, GetCount(METRIC_POLICY_REFRESH_INVALIDATED_UNCHANGED));
|
| }
|
|
|
| -TEST_F(CloudPolicyInvalidatorTest, RefreshMetricsNoInvalidations) {
|
| +TEST_P(CloudPolicyInvalidatorUserAndDevicePolicyTest,
|
| + RefreshMetricsNoInvalidations) {
|
| // Store loads occurring while registered should be differentiated depending
|
| // on whether the invalidation service was enabled or not.
|
| StorePolicy(POLICY_OBJECT_A);
|
| @@ -858,7 +894,8 @@ TEST_F(CloudPolicyInvalidatorTest, RefreshMetricsNoInvalidations) {
|
| EXPECT_EQ(0, GetCount(METRIC_POLICY_REFRESH_INVALIDATED_UNCHANGED));
|
| }
|
|
|
| -TEST_F(CloudPolicyInvalidatorTest, RefreshMetricsInvalidation) {
|
| +TEST_P(CloudPolicyInvalidatorUserAndDevicePolicyTest,
|
| + RefreshMetricsInvalidation) {
|
| // Store loads after an invalidation are counted as invalidated, even if
|
| // the loads do not result in the invalidation being acknowledged.
|
| StartInvalidator();
|
| @@ -887,7 +924,7 @@ TEST_F(CloudPolicyInvalidatorTest, RefreshMetricsInvalidation) {
|
| EXPECT_EQ(1, GetCount(METRIC_POLICY_REFRESH_INVALIDATED_UNCHANGED));
|
| }
|
|
|
| -TEST_F(CloudPolicyInvalidatorTest, ExpiredInvalidations) {
|
| +TEST_P(CloudPolicyInvalidatorUserAndDevicePolicyTest, ExpiredInvalidations) {
|
| StorePolicy(POLICY_OBJECT_A, 0, false, Now());
|
| StartInvalidator();
|
|
|
| @@ -948,4 +985,8 @@ TEST_F(CloudPolicyInvalidatorTest, ExpiredInvalidations) {
|
| EXPECT_EQ(2, GetInvalidationCount(POLICY_INVALIDATION_TYPE_EXPIRED));
|
| }
|
|
|
| +INSTANTIATE_TEST_CASE_P(CloudPolicyInvalidatorUserAndDevicePolicyTestInstance,
|
| + CloudPolicyInvalidatorUserAndDevicePolicyTest,
|
| + testing::Bool());
|
| +
|
| } // namespace policy
|
|
|