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

Side by Side Diff: chrome/browser/sync/engine/syncer_thread_unittest.cc

Issue 6182004: [SYNC] Refactor SyncSourceInfo and add support in chrome invalidation client ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Self review. Fix compile error Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 <list> 5 #include <list>
6 #include <map> 6 #include <map>
7 7
8 #include "base/lock.h" 8 #include "base/lock.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 false); 449 false);
450 450
451 ASSERT_EQ(SyncerThread::kDefaultLongPollIntervalSeconds, 451 ASSERT_EQ(SyncerThread::kDefaultLongPollIntervalSeconds,
452 interval.poll_delta.InSeconds()); 452 interval.poll_delta.InSeconds());
453 ASSERT_EQ(WaitInterval::NORMAL, interval.mode); 453 ASSERT_EQ(WaitInterval::NORMAL, interval.mode);
454 ASSERT_FALSE(interval.had_nudge_during_backoff); 454 ASSERT_FALSE(interval.had_nudge_during_backoff);
455 ASSERT_FALSE(continue_sync_cycle_param); 455 ASSERT_FALSE(continue_sync_cycle_param);
456 } 456 }
457 457
458 { 458 {
459
460 // Now try with unsynced local items. 459 // Now try with unsynced local items.
461 context->set_last_snapshot(SessionSnapshotForTest(0, 0, 1)); 460 context->set_last_snapshot(SessionSnapshotForTest(0, 0, 1));
462 bool continue_sync_cycle_param = false; 461 bool continue_sync_cycle_param = false;
463 462
464 WaitInterval interval = syncer_thread->CalculatePollingWaitTime( 463 WaitInterval interval = syncer_thread->CalculatePollingWaitTime(
465 0, 464 0,
466 &user_idle_milliseconds_param, 465 &user_idle_milliseconds_param,
467 &continue_sync_cycle_param, 466 &continue_sync_cycle_param,
468 false); 467 false);
469 468
(...skipping 23 matching lines...) Expand all
493 492
494 ASSERT_EQ(SyncerThread::kDefaultLongPollIntervalSeconds, 493 ASSERT_EQ(SyncerThread::kDefaultLongPollIntervalSeconds,
495 interval.poll_delta.InSeconds()); 494 interval.poll_delta.InSeconds());
496 ASSERT_EQ(WaitInterval::NORMAL, interval.mode); 495 ASSERT_EQ(WaitInterval::NORMAL, interval.mode);
497 ASSERT_FALSE(interval.had_nudge_during_backoff); 496 ASSERT_FALSE(interval.had_nudge_during_backoff);
498 ASSERT_FALSE(continue_sync_cycle_param); 497 ASSERT_FALSE(continue_sync_cycle_param);
499 } 498 }
500 499
501 // Regression for exponential backoff reset when the syncer is nudged. 500 // Regression for exponential backoff reset when the syncer is nudged.
502 { 501 {
503
504 context->set_last_snapshot(SessionSnapshotForTest(0, 0, 1)); 502 context->set_last_snapshot(SessionSnapshotForTest(0, 0, 1));
505 bool continue_sync_cycle_param = false; 503 bool continue_sync_cycle_param = false;
506 504
507 // Expect move from default polling interval to exponential backoff due to 505 // Expect move from default polling interval to exponential backoff due to
508 // unsynced_count != 0. 506 // unsynced_count != 0.
509 WaitInterval interval = syncer_thread->CalculatePollingWaitTime( 507 WaitInterval interval = syncer_thread->CalculatePollingWaitTime(
510 3600, 508 3600,
511 &user_idle_milliseconds_param, 509 &user_idle_milliseconds_param,
512 &continue_sync_cycle_param, 510 &continue_sync_cycle_param,
513 false); 511 false);
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 769
772 interceptor.WaitForSyncShare(1, TimeDelta::FromSeconds(1)); 770 interceptor.WaitForSyncShare(1, TimeDelta::FromSeconds(1));
773 EXPECT_EQ(static_cast<unsigned int>(2), 771 EXPECT_EQ(static_cast<unsigned int>(2),
774 interceptor.times_sync_occured().size()); 772 interceptor.times_sync_occured().size());
775 773
776 // SyncerThread should be waiting again. Signal it to stop. 774 // SyncerThread should be waiting again. Signal it to stop.
777 EXPECT_TRUE(syncer_thread()->Stop(2000)); 775 EXPECT_TRUE(syncer_thread()->Stop(2000));
778 EXPECT_TRUE(syncer_thread()->vault_.pending_nudge_types_.none()); 776 EXPECT_TRUE(syncer_thread()->vault_.pending_nudge_types_.none());
779 } 777 }
780 778
779 TEST_F(SyncerThreadWithSyncerTest, NudgeWithPayloads) {
780 SyncShareIntercept interceptor;
781 connection()->SetMidCommitObserver(&interceptor);
782 // We don't want a poll to happen during this test (except the first one).
783 PreventThreadFromPolling();
784 EXPECT_TRUE(syncer_thread()->Start());
785 metadb()->Open();
786 syncer_thread()->CreateSyncer(metadb()->name());
787 const TimeDelta poll_interval = TimeDelta::FromMinutes(5);
788 interceptor.WaitForSyncShare(1, poll_interval + poll_interval);
789 EXPECT_EQ(static_cast<unsigned int>(1),
790 interceptor.times_sync_occured().size());
791
792 // The SyncerThread should be waiting for the poll now. Nudge it to sync
793 // immediately (5ms).
794 std::vector<std::string> payloads(syncable::MODEL_TYPE_COUNT);
795 payloads[syncable::BOOKMARKS] = "test";
796
797 // Paused so we can verify the nudge types safely.
798 syncer_thread()->RequestPause();
799 syncer_thread()->NudgeSyncerWithPayloads(5,
800 SyncerThread::kUnknown,
801 payloads);
802 EXPECT_EQ(payloads, syncer_thread()->vault_.datatype_payloads_);
803 syncable::ModelTypeBitSet model_types;
804 model_types[syncable::BOOKMARKS] = true;
805 EXPECT_EQ(model_types, syncer_thread()->vault_.pending_nudge_types_);
806 syncer_thread()->RequestResume();
807
808 interceptor.WaitForSyncShare(1, TimeDelta::FromSeconds(1));
809 EXPECT_EQ(static_cast<unsigned int>(2),
810 interceptor.times_sync_occured().size());
811
812 // SyncerThread should be waiting again. Signal it to stop.
813 EXPECT_TRUE(syncer_thread()->Stop(2000));
814 EXPECT_TRUE(syncer_thread()->vault_.pending_nudge_types_.none());
815 EXPECT_TRUE(syncer_thread()->vault_.datatype_payloads_.empty());
816 }
817
818 TEST_F(SyncerThreadWithSyncerTest, NudgeWithPayloadsCoalesced) {
819 SyncShareIntercept interceptor;
820 connection()->SetMidCommitObserver(&interceptor);
821 // We don't want a poll to happen during this test (except the first one).
822 PreventThreadFromPolling();
823 EXPECT_TRUE(syncer_thread()->Start());
824 metadb()->Open();
825 syncer_thread()->CreateSyncer(metadb()->name());
826 const TimeDelta poll_interval = TimeDelta::FromMinutes(5);
827 interceptor.WaitForSyncShare(1, poll_interval + poll_interval);
828 EXPECT_EQ(static_cast<unsigned int>(1),
829 interceptor.times_sync_occured().size());
830
831 // The SyncerThread should be waiting for the poll now. Nudge it to sync
832 // immediately (5ms).
833 std::vector<std::string> payloads(syncable::MODEL_TYPE_COUNT);
834 payloads[syncable::BOOKMARKS] = "books";
835 syncable::ModelTypeBitSet model_types;
836 model_types[syncable::BOOKMARKS] = true;
837
838 // Paused so we can verify the nudge types safely.
839 syncer_thread()->RequestPause();
840 syncer_thread()->NudgeSyncerWithPayloads(100,
841 SyncerThread::kUnknown,
842 payloads);
843 EXPECT_EQ(model_types, syncer_thread()->vault_.pending_nudge_types_);
844 EXPECT_EQ(payloads, syncer_thread()->vault_.datatype_payloads_);
845
846 payloads[syncable::BOOKMARKS] = "";
847 payloads[syncable::AUTOFILL] = "auto";
848 model_types[syncable::AUTOFILL] = true;
849 syncer_thread()->NudgeSyncerWithPayloads(0,
850 SyncerThread::kUnknown,
851 payloads);
852
853 // Reset BOOKMARKS for expectations.
854 payloads[syncable::BOOKMARKS] = "books";
855 EXPECT_EQ(model_types, syncer_thread()->vault_.pending_nudge_types_);
856 EXPECT_EQ(payloads, syncer_thread()->vault_.datatype_payloads_);
857
858 syncer_thread()->RequestResume();
859
860 interceptor.WaitForSyncShare(1, TimeDelta::FromSeconds(1));
861 EXPECT_EQ(static_cast<unsigned int>(2),
862 interceptor.times_sync_occured().size());
863
864 // SyncerThread should be waiting again. Signal it to stop.
865 EXPECT_TRUE(syncer_thread()->Stop(2000));
866 EXPECT_TRUE(syncer_thread()->vault_.pending_nudge_types_.none());
867 EXPECT_TRUE(syncer_thread()->vault_.datatype_payloads_.empty());
868 }
869
781 TEST_F(SyncerThreadWithSyncerTest, Throttling) { 870 TEST_F(SyncerThreadWithSyncerTest, Throttling) {
782 SyncShareIntercept interceptor; 871 SyncShareIntercept interceptor;
783 connection()->SetMidCommitObserver(&interceptor); 872 connection()->SetMidCommitObserver(&interceptor);
784 const TimeDelta poll_interval = TimeDelta::FromMilliseconds(10); 873 const TimeDelta poll_interval = TimeDelta::FromMilliseconds(10);
785 syncer_thread()->SetSyncerShortPollInterval(poll_interval); 874 syncer_thread()->SetSyncerShortPollInterval(poll_interval);
786 875
787 EXPECT_TRUE(syncer_thread()->Start()); 876 EXPECT_TRUE(syncer_thread()->Start());
788 metadb()->Open(); 877 metadb()->Open();
789 syncer_thread()->CreateSyncer(metadb()->name()); 878 syncer_thread()->CreateSyncer(metadb()->name());
790 879
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 EXPECT_CALL(listener, OnSyncEngineEvent( 1203 EXPECT_CALL(listener, OnSyncEngineEvent(
1115 Field(&SyncEngineEvent::what_happened, 1204 Field(&SyncEngineEvent::what_happened,
1116 SyncEngineEvent::SYNCER_THREAD_EXITING))); 1205 SyncEngineEvent::SYNCER_THREAD_EXITING)));
1117 1206
1118 ASSERT_TRUE(Resume(&listener)); 1207 ASSERT_TRUE(Resume(&listener));
1119 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_)); 1208 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
1120 EXPECT_TRUE(syncer_thread()->Stop(2000)); 1209 EXPECT_TRUE(syncer_thread()->Stop(2000));
1121 } 1210 }
1122 1211
1123 } // namespace browser_sync 1212 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698