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

Side by Side Diff: sync/engine/sync_scheduler_unittest.cc

Issue 915373002: Migrate sync/ to base::RunLoop::RunUntilIdle() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix build error Created 5 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | sync/internal_api/attachments/attachment_service_proxy_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/run_loop.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
11 #include "sync/engine/backoff_delay_provider.h" 11 #include "sync/engine/backoff_delay_provider.h"
12 #include "sync/engine/sync_scheduler_impl.h" 12 #include "sync/engine/sync_scheduler_impl.h"
13 #include "sync/engine/syncer.h" 13 #include "sync/engine/syncer.h"
14 #include "sync/internal_api/public/base/cancelation_signal.h" 14 #include "sync/internal_api/public/base/cancelation_signal.h"
15 #include "sync/internal_api/public/base/model_type_test_util.h" 15 #include "sync/internal_api/public/base/model_type_test_util.h"
16 #include "sync/sessions/test_util.h" 16 #include "sync/sessions/test_util.h"
17 #include "sync/test/callback_counter.h" 17 #include "sync/test/callback_counter.h"
18 #include "sync/test/engine/fake_model_worker.h" 18 #include "sync/test/engine/fake_model_worker.h"
19 #include "sync/test/engine/mock_connection_manager.h" 19 #include "sync/test/engine/mock_connection_manager.h"
(...skipping 1137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1157 connection()->UpdateConnectionStatus(); 1157 connection()->UpdateConnectionStatus();
1158 EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) 1158 EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_))
1159 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure), 1159 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure),
1160 Return(true))) 1160 Return(true)))
1161 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), 1161 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess),
1162 Return(true))); 1162 Return(true)));
1163 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 1163 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
1164 1164
1165 scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); 1165 scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE);
1166 // Should save the nudge for until after the server is reachable. 1166 // Should save the nudge for until after the server is reachable.
1167 base::MessageLoop::current()->RunUntilIdle(); 1167 base::RunLoop().RunUntilIdle();
1168 1168
1169 scheduler()->OnConnectionStatusChange(); 1169 scheduler()->OnConnectionStatusChange();
1170 connection()->SetServerReachable(); 1170 connection()->SetServerReachable();
1171 connection()->UpdateConnectionStatus(); 1171 connection()->UpdateConnectionStatus();
1172 base::MessageLoop::current()->RunUntilIdle(); 1172 base::RunLoop().RunUntilIdle();
1173 } 1173 }
1174 1174
1175 TEST_F(SyncSchedulerTest, ServerConnectionChangeDuringBackoff) { 1175 TEST_F(SyncSchedulerTest, ServerConnectionChangeDuringBackoff) {
1176 UseMockDelayProvider(); 1176 UseMockDelayProvider();
1177 EXPECT_CALL(*delay(), GetDelay(_)) 1177 EXPECT_CALL(*delay(), GetDelay(_))
1178 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(0))); 1178 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(0)));
1179 1179
1180 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 1180 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
1181 connection()->SetServerNotReachable(); 1181 connection()->SetServerNotReachable();
1182 connection()->UpdateConnectionStatus(); 1182 connection()->UpdateConnectionStatus();
1183 1183
1184 EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) 1184 EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_))
1185 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure), 1185 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure),
1186 Return(true))) 1186 Return(true)))
1187 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), 1187 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess),
1188 Return(true))); 1188 Return(true)));
1189 1189
1190 scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); 1190 scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE);
1191 PumpLoop(); // To get PerformDelayedNudge called. 1191 PumpLoop(); // To get PerformDelayedNudge called.
1192 PumpLoop(); // Run the nudge, that will fail and schedule a quick retry. 1192 PumpLoop(); // Run the nudge, that will fail and schedule a quick retry.
1193 ASSERT_TRUE(scheduler()->IsBackingOff()); 1193 ASSERT_TRUE(scheduler()->IsBackingOff());
1194 1194
1195 // Before we run the scheduled canary, trigger a server connection change. 1195 // Before we run the scheduled canary, trigger a server connection change.
1196 scheduler()->OnConnectionStatusChange(); 1196 scheduler()->OnConnectionStatusChange();
1197 connection()->SetServerReachable(); 1197 connection()->SetServerReachable();
1198 connection()->UpdateConnectionStatus(); 1198 connection()->UpdateConnectionStatus();
1199 base::MessageLoop::current()->RunUntilIdle(); 1199 base::RunLoop().RunUntilIdle();
1200 } 1200 }
1201 1201
1202 // This was supposed to test the scenario where we receive a nudge while a 1202 // This was supposed to test the scenario where we receive a nudge while a
1203 // connection change canary is scheduled, but has not run yet. Since we've made 1203 // connection change canary is scheduled, but has not run yet. Since we've made
1204 // the connection change canary synchronous, this is no longer possible. 1204 // the connection change canary synchronous, this is no longer possible.
1205 TEST_F(SyncSchedulerTest, ConnectionChangeCanaryPreemptedByNudge) { 1205 TEST_F(SyncSchedulerTest, ConnectionChangeCanaryPreemptedByNudge) {
1206 UseMockDelayProvider(); 1206 UseMockDelayProvider();
1207 EXPECT_CALL(*delay(), GetDelay(_)) 1207 EXPECT_CALL(*delay(), GetDelay(_))
1208 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(0))); 1208 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(0)));
1209 1209
(...skipping 14 matching lines...) Expand all
1224 PumpLoop(); // To get PerformDelayedNudge called. 1224 PumpLoop(); // To get PerformDelayedNudge called.
1225 PumpLoop(); // Run the nudge, that will fail and schedule a quick retry. 1225 PumpLoop(); // Run the nudge, that will fail and schedule a quick retry.
1226 ASSERT_TRUE(scheduler()->IsBackingOff()); 1226 ASSERT_TRUE(scheduler()->IsBackingOff());
1227 1227
1228 // Before we run the scheduled canary, trigger a server connection change. 1228 // Before we run the scheduled canary, trigger a server connection change.
1229 scheduler()->OnConnectionStatusChange(); 1229 scheduler()->OnConnectionStatusChange();
1230 PumpLoop(); 1230 PumpLoop();
1231 connection()->SetServerReachable(); 1231 connection()->SetServerReachable();
1232 connection()->UpdateConnectionStatus(); 1232 connection()->UpdateConnectionStatus();
1233 scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); 1233 scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE);
1234 base::MessageLoop::current()->RunUntilIdle(); 1234 base::RunLoop().RunUntilIdle();
1235 } 1235 }
1236 1236
1237 // Tests that we don't crash trying to run two canaries at once if we receive 1237 // Tests that we don't crash trying to run two canaries at once if we receive
1238 // extra connection status change notifications. See crbug.com/190085. 1238 // extra connection status change notifications. See crbug.com/190085.
1239 TEST_F(SyncSchedulerTest, DoubleCanaryInConfigure) { 1239 TEST_F(SyncSchedulerTest, DoubleCanaryInConfigure) {
1240 EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) 1240 EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_))
1241 .WillRepeatedly(DoAll( 1241 .WillRepeatedly(DoAll(
1242 Invoke(sessions::test_util::SimulateConfigureConnectionFailure), 1242 Invoke(sessions::test_util::SimulateConfigureConnectionFailure),
1243 Return(true))); 1243 Return(true)));
1244 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 1244 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1369 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), 1369 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess),
1370 RecordSyncShare(&times))); 1370 RecordSyncShare(&times)));
1371 1371
1372 // Run to wait for retrying. 1372 // Run to wait for retrying.
1373 RunLoop(); 1373 RunLoop();
1374 1374
1375 StopSyncScheduler(); 1375 StopSyncScheduler();
1376 } 1376 }
1377 1377
1378 } // namespace syncer 1378 } // namespace syncer
OLDNEW
« no previous file with comments | « no previous file | sync/internal_api/attachments/attachment_service_proxy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698