15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Utils to simulate various outcomes of a sync session. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SYNC_SESSIONS_TEST_UTIL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SYNC_SESSIONS_TEST_UTIL_H_ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/engine/syncer.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/sessions/sync_session.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sessions { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test_util { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Configure sync cycle successes and failures. 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void SimulateGetEncryptionKeyFailed( 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ModelTypeSet requested_types, 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sessions::SyncSession* session); 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void SimulateConfigureSuccess( 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ModelTypeSet requested_types, 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sessions::SyncSession* session); 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void SimulateConfigureFailed( 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ModelTypeSet requested_types, 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sessions::SyncSession* session); 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void SimulateConfigureConnectionFailure( 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ModelTypeSet requested_types, 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sync_pb::GetUpdatesCallerInfo::GetUpdatesSource source, 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) sessions::SyncSession* session); 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Normal mode sync cycle successes and failures. 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SimulateNormalSuccess(ModelTypeSet requested_types, 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const sessions::NudgeTracker& nudge_tracker, 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch sessions::SyncSession* session); 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SimulateDownloadUpdatesFailed(ModelTypeSet requested_types, 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const sessions::NudgeTracker& nudge_tracker, 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch sessions::SyncSession* session); 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SimulateCommitFailed(ModelTypeSet requested_types, 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const sessions::NudgeTracker& nudge_tracker, 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch sessions::SyncSession* session); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SimulateConnectionFailure(ModelTypeSet requested_types, 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const sessions::NudgeTracker& nudge_tracker, 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch sessions::SyncSession* session); 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Poll successes and failures. 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SimulatePollSuccess(ModelTypeSet requested_types, 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sessions::SyncSession* session); 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void SimulatePollFailed(ModelTypeSet requested_types, 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sessions::SyncSession* session); 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void SimulateGuRetryDelayCommandImpl(sessions::SyncSession* session, 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::TimeDelta delay); 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SimulateThrottledImpl(sessions::SyncSession* session, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::TimeDelta& delta); 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void SimulateTypesThrottledImpl( 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) sessions::SyncSession* session, 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ModelTypeSet types, 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::TimeDelta& delta); 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Works with poll cycles. 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SimulatePollIntervalUpdateImpl( 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ModelTypeSet requested_types, 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch sessions::SyncSession* session, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::TimeDelta& new_poll); 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Works with normal cycles. 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SimulateSessionsCommitDelayUpdateImpl( 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ModelTypeSet requested_types, 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const sessions::NudgeTracker& nudge_tracker, 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch sessions::SyncSession* session, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::TimeDelta& new_delay); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ACTION_P(SimulateThrottled, throttle) { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SimulateThrottledImpl(arg0, throttle); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ACTION_P2(SimulateTypesThrottled, types, throttle) { 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) SimulateTypesThrottledImpl(arg0, types, throttle); 8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ACTION_P(SimulatePollIntervalUpdate, poll) { 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SimulatePollIntervalUpdateImpl(arg0, arg1, poll); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ACTION_P(SimulateSessionsCommitDelayUpdate, poll) { 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SimulateSessionsCommitDelayUpdateImpl(arg0, arg1, arg2, poll); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ACTION_P(SimulateGuRetryDelayCommand, delay) { 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SimulateGuRetryDelayCommandImpl(arg0, delay); 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace test_util 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace sessions 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // SYNC_SESSIONS_TEST_UTIL_H_ 105