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

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

Issue 2923006: Handle birthday errors by disabling sync and deleting sync data. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 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
« no previous file with comments | « chrome/browser/sync/engine/syncer_thread.cc ('k') | chrome/browser/sync/engine/syncer_types.h » ('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) 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 #include <set> 7 #include <set>
8 8
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 709
710 // Wait until the syncer thread reports that it is throttled. Any further 710 // Wait until the syncer thread reports that it is throttled. Any further
711 // sync share interceptions will result in failure. If things are broken, 711 // sync share interceptions will result in failure. If things are broken,
712 // we may never halt. 712 // we may never halt.
713 ASSERT_TRUE(WaitForThrottle()); 713 ASSERT_TRUE(WaitForThrottle());
714 EXPECT_TRUE(syncer_thread()->IsSyncingCurrentlySilenced()); 714 EXPECT_TRUE(syncer_thread()->IsSyncingCurrentlySilenced());
715 715
716 EXPECT_TRUE(syncer_thread()->Stop(2000)); 716 EXPECT_TRUE(syncer_thread()->Stop(2000));
717 } 717 }
718 718
719 TEST_F(SyncerThreadWithSyncerTest, StopSyncPermanently) {
720 // The SyncerThread should request an exit from the Syncer and set
721 // conditions for termination.
722 const TimeDelta poll_interval = TimeDelta::FromMilliseconds(10);
723 syncer_thread()->SetSyncerShortPollInterval(poll_interval);
724
725 ListenerMock listener;
726 WaitableEvent sync_cycle_ended_event(false, false);
727 WaitableEvent syncer_thread_exiting_event(false, false);
728 scoped_ptr<ChannelHookup<SyncerEvent> > hookup;
729 hookup.reset(syncer_thread()->relay_channel()->AddObserver(&listener));
730
731 EXPECT_CALL(listener, HandleChannelEvent(
732 Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))).
733 Times(AnyNumber());
734
735 EXPECT_CALL(listener, HandleChannelEvent(
736 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
737 Times(AnyNumber()).
738 WillOnce(SignalEvent(&sync_cycle_ended_event));
739
740 EXPECT_CALL(listener, HandleChannelEvent(
741 Field(&SyncerEvent::what_happened,
742 SyncerEvent::STOP_SYNCING_PERMANENTLY)));
743 EXPECT_CALL(listener, HandleChannelEvent(
744 Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING))).
745 WillOnce(SignalEvent(&syncer_thread_exiting_event));
746
747 EXPECT_TRUE(syncer_thread()->Start());
748 metadb()->Open();
749 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
750
751 connection()->set_store_birthday("NotYourLuckyDay");
752 ASSERT_TRUE(syncer_thread_exiting_event.TimedWait(max_wait_time_));
753 EXPECT_TRUE(syncer_thread()->Stop(0));
754 }
755
719 TEST_F(SyncerThreadWithSyncerTest, AuthInvalid) { 756 TEST_F(SyncerThreadWithSyncerTest, AuthInvalid) {
720 SyncShareIntercept interceptor; 757 SyncShareIntercept interceptor;
721 connection()->SetMidCommitObserver(&interceptor); 758 connection()->SetMidCommitObserver(&interceptor);
722 const TimeDelta poll_interval = TimeDelta::FromMilliseconds(1); 759 const TimeDelta poll_interval = TimeDelta::FromMilliseconds(1);
723 760
724 syncer_thread()->SetSyncerShortPollInterval(poll_interval); 761 syncer_thread()->SetSyncerShortPollInterval(poll_interval);
725 EXPECT_TRUE(syncer_thread()->Start()); 762 EXPECT_TRUE(syncer_thread()->Start());
726 metadb()->Open(); 763 metadb()->Open();
727 764
728 // Wait for some healthy syncing. 765 // Wait for some healthy syncing.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 hookup.reset(syncer_thread()->relay_channel()->AddObserver(&listener)); 813 hookup.reset(syncer_thread()->relay_channel()->AddObserver(&listener));
777 814
778 EXPECT_CALL(listener, HandleChannelEvent( 815 EXPECT_CALL(listener, HandleChannelEvent(
779 Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))). 816 Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))).
780 Times(AnyNumber()); 817 Times(AnyNumber());
781 818
782 // Wait for the initial sync to complete. 819 // Wait for the initial sync to complete.
783 EXPECT_CALL(listener, HandleChannelEvent( 820 EXPECT_CALL(listener, HandleChannelEvent(
784 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))). 821 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
785 WillOnce(SignalEvent(&sync_cycle_ended_event)); 822 WillOnce(SignalEvent(&sync_cycle_ended_event));
823 EXPECT_CALL(listener, HandleChannelEvent(
824 Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
786 ASSERT_TRUE(syncer_thread()->Start()); 825 ASSERT_TRUE(syncer_thread()->Start());
787 metadb()->Open(); 826 metadb()->Open();
788 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_)); 827 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
789 828
790 // Request a pause. 829 // Request a pause.
791 ASSERT_TRUE(Pause(&listener)); 830 ASSERT_TRUE(Pause(&listener));
792 831
793 // Resuming the pause. 832 // Resuming the pause.
794 ASSERT_TRUE(Resume(&listener)); 833 ASSERT_TRUE(Resume(&listener));
795 834
(...skipping 20 matching lines...) Expand all
816 WaitableEvent sync_cycle_ended_event(false, false); 855 WaitableEvent sync_cycle_ended_event(false, false);
817 WaitableEvent event(false, false); 856 WaitableEvent event(false, false);
818 ListenerMock listener; 857 ListenerMock listener;
819 scoped_ptr<ChannelHookup<SyncerEvent> > hookup; 858 scoped_ptr<ChannelHookup<SyncerEvent> > hookup;
820 hookup.reset(syncer_thread()->relay_channel()->AddObserver(&listener)); 859 hookup.reset(syncer_thread()->relay_channel()->AddObserver(&listener));
821 PreventThreadFromPolling(); 860 PreventThreadFromPolling();
822 861
823 EXPECT_CALL(listener, HandleChannelEvent( 862 EXPECT_CALL(listener, HandleChannelEvent(
824 Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))). 863 Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))).
825 Times(AnyNumber()); 864 Times(AnyNumber());
865 EXPECT_CALL(listener, HandleChannelEvent(
866 Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
826 867
827 connection()->SetServerNotReachable(); 868 connection()->SetServerNotReachable();
828 metadb()->Open(); 869 metadb()->Open();
829 870
830 // Syncer thread will always go through once cycle at the start, 871 // Syncer thread will always go through once cycle at the start,
831 // then it will wait for a connection. 872 // then it will wait for a connection.
832 EXPECT_CALL(listener, HandleChannelEvent( 873 EXPECT_CALL(listener, HandleChannelEvent(
833 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))). 874 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
834 WillOnce(SignalEvent(&sync_cycle_ended_event)); 875 WillOnce(SignalEvent(&sync_cycle_ended_event));
835 EXPECT_CALL(listener, HandleChannelEvent( 876 EXPECT_CALL(listener, HandleChannelEvent(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 WillOnce(SignalEvent(&event)); 956 WillOnce(SignalEvent(&event));
916 connection()->SetServerReachable(); 957 connection()->SetServerReachable();
917 ASSERT_TRUE(event.TimedWait(max_wait_time_)); 958 ASSERT_TRUE(event.TimedWait(max_wait_time_));
918 959
919 ASSERT_TRUE(Resume(&listener)); 960 ASSERT_TRUE(Resume(&listener));
920 961
921 // Cycle the syncer to show we are not longer paused. 962 // Cycle the syncer to show we are not longer paused.
922 EXPECT_CALL(listener, HandleChannelEvent( 963 EXPECT_CALL(listener, HandleChannelEvent(
923 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))). 964 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
924 WillOnce(SignalEvent(&sync_cycle_ended_event)); 965 WillOnce(SignalEvent(&sync_cycle_ended_event));
966 EXPECT_CALL(listener, HandleChannelEvent(
967 Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
968
925 syncer_thread()->NudgeSyncer(0, SyncerThread::kUnknown); 969 syncer_thread()->NudgeSyncer(0, SyncerThread::kUnknown);
926 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_)); 970 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
927 971
928 EXPECT_TRUE(syncer_thread()->Stop(2000)); 972 EXPECT_TRUE(syncer_thread()->Stop(2000));
929 } 973 }
930 974
931 TEST_F(SyncerThreadWithSyncerTest, PauseResumeWhenNotRunning) { 975 TEST_F(SyncerThreadWithSyncerTest, PauseResumeWhenNotRunning) {
932 WaitableEvent sync_cycle_ended_event(false, false); 976 WaitableEvent sync_cycle_ended_event(false, false);
933 WaitableEvent event(false, false); 977 WaitableEvent event(false, false);
934 ListenerMock listener; 978 ListenerMock listener;
(...skipping 11 matching lines...) Expand all
946 990
947 // Pause the thread then start the syncer. 991 // Pause the thread then start the syncer.
948 ASSERT_TRUE(Pause(&listener)); 992 ASSERT_TRUE(Pause(&listener));
949 metadb()->Open(); 993 metadb()->Open();
950 ASSERT_TRUE(syncer_thread()->Start()); 994 ASSERT_TRUE(syncer_thread()->Start());
951 995
952 // Resume and let the syncer cycle. 996 // Resume and let the syncer cycle.
953 EXPECT_CALL(listener, HandleChannelEvent( 997 EXPECT_CALL(listener, HandleChannelEvent(
954 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))). 998 Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
955 WillOnce(SignalEvent(&sync_cycle_ended_event)); 999 WillOnce(SignalEvent(&sync_cycle_ended_event));
1000 EXPECT_CALL(listener, HandleChannelEvent(
1001 Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
1002
956 ASSERT_TRUE(Resume(&listener)); 1003 ASSERT_TRUE(Resume(&listener));
957 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_)); 1004 ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
958
959 EXPECT_TRUE(syncer_thread()->Stop(2000)); 1005 EXPECT_TRUE(syncer_thread()->Stop(2000));
960 } 1006 }
961 1007
962 } // namespace browser_sync 1008 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/engine/syncer_thread.cc ('k') | chrome/browser/sync/engine/syncer_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698