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