Commit 83a8d3a4 authored by zea@chromium.org's avatar zea@chromium.org

[SYNC] Tests to catch datatype manager behavior when datatype controller is...

[SYNC] Tests to catch datatype manager behavior when datatype controller is busy when stop() is called.

BUG=61804
TEST=self

Review URL: http://codereview.chromium.org/6357018

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72803 0039d316-1c4b-4281-b951-d872f2087c98
parent 60616fcf
......@@ -97,6 +97,20 @@ class DataTypeManagerImplTest : public testing::Test {
WillRepeatedly(Return(DataTypeController::NOT_RUNNING));
}
void SetBusyStartStopExpectations(DataTypeControllerMock* mock_dtc,
DataTypeController::State busy_state) {
InSequence seq;
EXPECT_CALL(*mock_dtc, state()).
WillRepeatedly(Return(DataTypeController::NOT_RUNNING));
EXPECT_CALL(*mock_dtc, Start(_)).
WillOnce(InvokeCallback((DataTypeController::OK)));
EXPECT_CALL(*mock_dtc, state()).
WillRepeatedly(Return(busy_state));
EXPECT_CALL(*mock_dtc, Stop()).Times(1);
EXPECT_CALL(*mock_dtc, state()).
WillRepeatedly(Return(DataTypeController::NOT_RUNNING));
}
void SetNotUsedExpectations(DataTypeControllerMock* mock_dtc) {
EXPECT_CALL(*mock_dtc, Start(_)).Times(0);
EXPECT_CALL(*mock_dtc, Stop()).Times(0);
......@@ -160,6 +174,37 @@ TEST_F(DataTypeManagerImplTest, ConfigureOne) {
EXPECT_EQ(DataTypeManager::STOPPED, dtm.state());
}
TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileStarting) {
DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC();
SetBusyStartStopExpectations(bookmark_dtc,
DataTypeController::MODEL_STARTING);
controllers_[syncable::BOOKMARKS] = bookmark_dtc;
SetBackendExpectations(1);
DataTypeManagerImpl dtm(&backend_, controllers_);
types_.insert(syncable::BOOKMARKS);
SetConfigureStartExpectation();
SetConfigureDoneExpectation(DataTypeManager::OK);
dtm.Configure(types_);
EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state());
dtm.Stop();
EXPECT_EQ(DataTypeManager::STOPPED, dtm.state());
}
TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileAssociating) {
DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC();
SetBusyStartStopExpectations(bookmark_dtc, DataTypeController::ASSOCIATING);
controllers_[syncable::BOOKMARKS] = bookmark_dtc;
SetBackendExpectations(1);
DataTypeManagerImpl dtm(&backend_, controllers_);
types_.insert(syncable::BOOKMARKS);
SetConfigureStartExpectation();
SetConfigureDoneExpectation(DataTypeManager::OK);
dtm.Configure(types_);
EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state());
dtm.Stop();
EXPECT_EQ(DataTypeManager::STOPPED, dtm.state());
}
TEST_F(DataTypeManagerImplTest, OneWaitingForCrypto) {
DataTypeControllerMock* password_dtc = MakePasswordDTC();
EXPECT_CALL(*password_dtc, state()).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment