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

Unified Diff: sync/engine/sync_session_job_unittest.cc

Issue 11342008: Revert 164565 - sync: make scheduling logic and job ownership more obvious. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1311/src/
Patch Set: Created 8 years, 2 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 | « sync/engine/sync_session_job.cc ('k') | sync/engine/syncer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/engine/sync_session_job_unittest.cc
===================================================================
--- sync/engine/sync_session_job_unittest.cc (revision 164641)
+++ sync/engine/sync_session_job_unittest.cc (working copy)
@@ -1,239 +0,0 @@
-// 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 "sync/engine/sync_session_job.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/time.h"
-#include "sync/internal_api/public/base/model_type_invalidation_map.h"
-#include "sync/sessions/sync_session.h"
-#include "sync/sessions/sync_session_context.h"
-#include "sync/sessions/test_util.h"
-#include "sync/test/engine/fake_model_worker.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using base::TimeTicks;
-
-namespace syncer {
-
-using sessions::SyncSession;
-
-class MockDelegate : public SyncSession::Delegate {
- public:
- MockDelegate() {}
- ~MockDelegate() {}
-
- MOCK_METHOD0(IsSyncingCurrentlySilenced, bool());
- MOCK_METHOD1(OnReceivedShortPollIntervalUpdate, void(const base::TimeDelta&));
- MOCK_METHOD1(OnReceivedLongPollIntervalUpdate ,void(const base::TimeDelta&));
- MOCK_METHOD1(OnReceivedSessionsCommitDelay, void(const base::TimeDelta&));
- MOCK_METHOD1(OnSyncProtocolError, void(const sessions::SyncSessionSnapshot&));
- MOCK_METHOD0(OnShouldStopSyncingPermanently, void());
- MOCK_METHOD1(OnSilencedUntil, void(const base::TimeTicks&));
-};
-
-class SyncSessionJobTest : public testing::Test {
- public:
- SyncSessionJobTest() : config_params_callback_invoked_(false) {}
- virtual void SetUp() {
- routes_.clear();
- workers_.clear();
- config_params_callback_invoked_ = false;
- routes_[BOOKMARKS] = GROUP_PASSIVE;
- scoped_refptr<ModelSafeWorker> passive_worker(
- new FakeModelWorker(GROUP_PASSIVE));
- workers_.push_back(passive_worker);
- std::vector<ModelSafeWorker*> workers;
- GetWorkers(&workers);
- context_.reset(new sessions::SyncSessionContext(
- NULL, // |connection_manager|
- NULL, // |directory|
- workers,
- NULL, // |extensions_activity_monitor|
- NULL, // |throttled_data_type_tracker|
- std::vector<SyncEngineEventListener*>(),
- NULL, // |debug_info_getter|
- NULL, // |traffic_recorder|
- true /* |enable keystore encryption| */));
- context_->set_routing_info(routes_);
- }
-
- scoped_ptr<SyncSession> NewLocalSession() {
- sessions::SyncSourceInfo info(
- sync_pb::GetUpdatesCallerInfo::LOCAL, ModelTypeInvalidationMap());
- return scoped_ptr<SyncSession>(new SyncSession(context_.get(),
- &delegate_, info, context_->routing_info(),
- context_->workers()));
- }
-
- void GetWorkers(std::vector<ModelSafeWorker*>* out) const {
- out->clear();
- for (std::vector<scoped_refptr<ModelSafeWorker> >::const_iterator it =
- workers_.begin(); it != workers_.end(); ++it) {
- out->push_back(it->get());
- }
- }
-
- void ConfigurationParamsCallback() {
- config_params_callback_invoked_ = true;
- }
-
- bool config_params_callback_invoked() const {
- return config_params_callback_invoked_;
- }
-
- sessions::SyncSessionContext* context() { return context_.get(); }
- SyncSession::Delegate* delegate() { return &delegate_; }
- const ModelSafeRoutingInfo& routes() { return routes_; }
-
- // Checks that the two jobs are "clones" as defined by SyncSessionJob,
- // minus location and SyncSession checking, for reuse in different
- // scenarios.
- void ExpectClonesBase(SyncSessionJob* job, SyncSessionJob* clone) {
- EXPECT_EQ(job->purpose(), clone->purpose());
- EXPECT_EQ(job->scheduled_start(), clone->scheduled_start());
- EXPECT_EQ(job->start_step(), clone->start_step());
- EXPECT_EQ(job->end_step(), clone->end_step());
- EXPECT_FALSE(clone->is_canary());
- }
-
- private:
- scoped_ptr<sessions::SyncSessionContext> context_;
- std::vector<scoped_refptr<ModelSafeWorker> > workers_;
- MockDelegate delegate_;
- ModelSafeRoutingInfo routes_;
- bool config_params_callback_invoked_;
-};
-
-TEST_F(SyncSessionJobTest, Clone) {
- SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(),
- NewLocalSession().Pass(), ConfigurationParams(), FROM_HERE);
-
- sessions::test_util::SimulateSuccess(job1.mutable_session(),
- job1.start_step(),
- job1.end_step());
- job1.Finish(false);
- ModelSafeRoutingInfo new_routes;
- new_routes[AUTOFILL] = GROUP_PASSIVE;
- context()->set_routing_info(new_routes);
- const tracked_objects::Location from_here1(FROM_HERE);
- scoped_ptr<SyncSessionJob> clone1 = job1.Clone();
- scoped_ptr<SyncSessionJob> clone1_loc = job1.CloneFromLocation(from_here1);
-
- ExpectClonesBase(&job1, clone1.get());
- ExpectClonesBase(&job1, clone1_loc.get());
- EXPECT_NE(job1.session(), clone1->session());
- EXPECT_EQ(job1.session()->routing_info(),
- clone1->session()->routing_info());
- EXPECT_EQ(job1.from_location().ToString(),
- clone1->from_location().ToString());
- EXPECT_NE(job1.session(), clone1_loc->session());
- EXPECT_EQ(job1.session()->routing_info(),
- clone1_loc->session()->routing_info());
- EXPECT_EQ(from_here1.ToString(), clone1_loc->from_location().ToString());
-
- context()->set_routing_info(routes());
- clone1->GrantCanaryPrivilege();
- sessions::test_util::SimulateSuccess(clone1->mutable_session(),
- clone1->start_step(),
- clone1->end_step());
- clone1->Finish(false);
- const tracked_objects::Location from_here2(FROM_HERE);
- scoped_ptr<SyncSessionJob> clone2 = clone1->Clone();
- scoped_ptr<SyncSessionJob> clone2_loc(clone1->CloneFromLocation(from_here2));
-
- ExpectClonesBase(clone1.get(), clone2.get());
- ExpectClonesBase(clone1.get(), clone2_loc.get());
- EXPECT_NE(clone1->session(), clone2->session());
- EXPECT_EQ(clone1->session()->routing_info(),
- clone2->session()->routing_info());
- EXPECT_EQ(clone1->from_location().ToString(),
- clone2->from_location().ToString());
- EXPECT_NE(clone1->session(), clone2->session());
- EXPECT_EQ(clone1->session()->routing_info(),
- clone2->session()->routing_info());
- EXPECT_EQ(from_here2.ToString(), clone2_loc->from_location().ToString());
-
- clone1.reset();
- clone1_loc.reset();
- ExpectClonesBase(&job1, clone2.get());
- EXPECT_NE(job1.session(), clone2->session());
- EXPECT_EQ(job1.session()->routing_info(),
- clone2->session()->routing_info());
- EXPECT_EQ(job1.from_location().ToString(),
- clone2->from_location().ToString());
-}
-
-TEST_F(SyncSessionJobTest, CloneAfterEarlyExit) {
- SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(),
- NewLocalSession().Pass(), ConfigurationParams(), FROM_HERE);
- job1.Finish(true);
- scoped_ptr<SyncSessionJob> job2 = job1.Clone();
- scoped_ptr<SyncSessionJob> job2_loc = job1.CloneFromLocation(FROM_HERE);
- ExpectClonesBase(&job1, job2.get());
- ExpectClonesBase(&job1, job2_loc.get());
-}
-
-TEST_F(SyncSessionJobTest, CloneAndAbandon) {
- scoped_ptr<SyncSession> session = NewLocalSession();
- SyncSession* session_ptr = session.get();
-
- SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(),
- session.Pass(), ConfigurationParams(), FROM_HERE);
- ModelSafeRoutingInfo new_routes;
- new_routes[AUTOFILL] = GROUP_PASSIVE;
- context()->set_routing_info(new_routes);
-
- scoped_ptr<SyncSessionJob> clone1 = job1.CloneAndAbandon();
- ExpectClonesBase(&job1, clone1.get());
- EXPECT_FALSE(job1.session());
- EXPECT_EQ(session_ptr, clone1->session());
- EXPECT_EQ(session_ptr->routing_info(), clone1->session()->routing_info());
-}
-
-// Tests interaction between Finish and sync cycle success / failure.
-TEST_F(SyncSessionJobTest, Finish) {
- SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(),
- NewLocalSession().Pass(), ConfigurationParams(), FROM_HERE);
-
- sessions::test_util::SimulateSuccess(job1.mutable_session(),
- job1.start_step(),
- job1.end_step());
- EXPECT_TRUE(job1.Finish(false /* early_exit */));
-
- scoped_ptr<SyncSessionJob> job2 = job1.Clone();
- sessions::test_util::SimulateConnectionFailure(job2->mutable_session(),
- job2->start_step(),
- job2->end_step());
- EXPECT_FALSE(job2->Finish(false));
-
- scoped_ptr<SyncSessionJob> job3 = job2->Clone();
- EXPECT_FALSE(job3->Finish(true));
-}
-
-TEST_F(SyncSessionJobTest, FinishCallsReadyTask) {
- ConfigurationParams params;
- params.ready_task = base::Bind(
- &SyncSessionJobTest::ConfigurationParamsCallback,
- base::Unretained(this));
-
- sessions::SyncSourceInfo info(
- sync_pb::GetUpdatesCallerInfo::RECONFIGURATION,
- ModelTypeInvalidationMap());
- scoped_ptr<SyncSession> session(new SyncSession(context(),
- delegate(), info, context()->routing_info(),
- context()->workers()));
-
- SyncSessionJob job1(SyncSessionJob::CONFIGURATION, TimeTicks::Now(),
- session.Pass(), params, FROM_HERE);
- sessions::test_util::SimulateSuccess(job1.mutable_session(),
- job1.start_step(),
- job1.end_step());
- job1.Finish(false);
- EXPECT_TRUE(config_params_callback_invoked());
-}
-
-} // namespace syncer
« no previous file with comments | « sync/engine/sync_session_job.cc ('k') | sync/engine/syncer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698