Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 // Unit tests for the SyncApi. Note that a lot of the underlying | 5 // Unit tests for the SyncApi. Note that a lot of the underlying |
| 6 // functionality is provided by the Syncable layer, which has its own | 6 // functionality is provided by the Syncable layer, which has its own |
| 7 // unit tests. We'll test SyncApi specific things in this harness. | 7 // unit tests. We'll test SyncApi specific things in this harness. |
| 8 | 8 |
| 9 #include <cstddef> | 9 #include <cstddef> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 912 return false; | 912 return false; |
| 913 entry.Put(IS_UNSYNCED, false); | 913 entry.Put(IS_UNSYNCED, false); |
| 914 return true; | 914 return true; |
| 915 } | 915 } |
| 916 | 916 |
| 917 virtual InternalComponentsFactory* GetFactory() { | 917 virtual InternalComponentsFactory* GetFactory() { |
| 918 return new TestInternalComponentsFactory( | 918 return new TestInternalComponentsFactory( |
| 919 TestInternalComponentsFactory::IN_MEMORY); | 919 TestInternalComponentsFactory::IN_MEMORY); |
| 920 } | 920 } |
| 921 | 921 |
| 922 void SetProgressMarkerForType(ModelType type, bool set) { | |
| 923 if (set) { | |
| 924 sync_pb::DataTypeProgressMarker marker; | |
| 925 marker.set_token("token"); | |
| 926 marker.set_data_type_id(GetSpecificsFieldNumberFromModelType(type)); | |
| 927 sync_manager_.directory()->SetDownloadProgress(type, marker); | |
| 928 } else { | |
| 929 sync_pb::DataTypeProgressMarker marker; | |
| 930 sync_manager_.directory()->SetDownloadProgress(type, marker); | |
| 931 } | |
| 932 } | |
| 933 | |
| 934 void SetInitialSyncEndedForType(ModelType type, bool value) { | |
| 935 sync_manager_.directory()->set_initial_sync_ended_for_type(type, value); | |
| 936 } | |
| 937 | |
| 922 private: | 938 private: |
| 923 // Needed by |sync_manager_|. | 939 // Needed by |sync_manager_|. |
| 924 MessageLoop message_loop_; | 940 MessageLoop message_loop_; |
| 925 // Needed by |sync_manager_|. | 941 // Needed by |sync_manager_|. |
| 926 ScopedTempDir temp_dir_; | 942 ScopedTempDir temp_dir_; |
| 927 // Sync Id's for the roots of the enabled datatypes. | 943 // Sync Id's for the roots of the enabled datatypes. |
| 928 std::map<ModelType, int64> type_roots_; | 944 std::map<ModelType, int64> type_roots_; |
| 929 FakeExtensionsActivityMonitor extensions_activity_monitor_; | 945 FakeExtensionsActivityMonitor extensions_activity_monitor_; |
| 930 StrictMock<SyncNotifierMock>* sync_notifier_mock_; | 946 StrictMock<SyncNotifierMock>* sync_notifier_mock_; |
| 931 | 947 |
| (...skipping 1595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2527 public: | 2543 public: |
| 2528 SyncManagerTestWithMockScheduler() : scheduler_(NULL) {} | 2544 SyncManagerTestWithMockScheduler() : scheduler_(NULL) {} |
| 2529 virtual InternalComponentsFactory* GetFactory() OVERRIDE { | 2545 virtual InternalComponentsFactory* GetFactory() OVERRIDE { |
| 2530 scheduler_ = new MockSyncScheduler(); | 2546 scheduler_ = new MockSyncScheduler(); |
| 2531 return new ComponentsFactory(scheduler_); | 2547 return new ComponentsFactory(scheduler_); |
| 2532 } | 2548 } |
| 2533 MockSyncScheduler* scheduler_; | 2549 MockSyncScheduler* scheduler_; |
| 2534 }; | 2550 }; |
| 2535 | 2551 |
| 2536 // Test that the configuration params are properly created and sent to | 2552 // Test that the configuration params are properly created and sent to |
| 2537 // ScheduleConfigure. No callback should be invoked. | 2553 // ScheduleConfigure. No callback should be invoked. Any disabled datatypes |
| 2554 // should be purged (but only the types that were just disabled). | |
|
tim (not reviewing)
2012/07/26 21:39:45
I don't see a test that covers a case where both p
Nicolas Zea
2012/07/26 23:29:59
The purging of both at startup is actually going a
| |
| 2538 TEST_F(SyncManagerTestWithMockScheduler, BasicConfiguration) { | 2555 TEST_F(SyncManagerTestWithMockScheduler, BasicConfiguration) { |
| 2539 ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION; | 2556 ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION; |
| 2540 ModelTypeSet types_to_download(BOOKMARKS, PREFERENCES); | 2557 ModelTypeSet types_to_download(BOOKMARKS, PREFERENCES); |
| 2541 ModelSafeRoutingInfo new_routing_info; | 2558 ModelSafeRoutingInfo new_routing_info; |
| 2542 GetModelSafeRoutingInfo(&new_routing_info); | 2559 GetModelSafeRoutingInfo(&new_routing_info); |
| 2560 ModelTypeSet disabled_types(THEMES, SESSIONS); | |
| 2561 new_routing_info.erase(THEMES); | |
| 2562 new_routing_info.erase(SESSIONS); | |
| 2543 | 2563 |
| 2544 ConfigurationParams params; | 2564 ConfigurationParams params; |
| 2545 EXPECT_CALL(*scheduler_, Start(SyncScheduler::CONFIGURATION_MODE)); | 2565 EXPECT_CALL(*scheduler_, Start(SyncScheduler::CONFIGURATION_MODE)); |
| 2546 EXPECT_CALL(*scheduler_, ScheduleConfiguration(_)). | 2566 EXPECT_CALL(*scheduler_, ScheduleConfiguration(_)). |
| 2547 WillOnce(DoAll(SaveArg<0>(¶ms), Return(true))); | 2567 WillOnce(DoAll(SaveArg<0>(¶ms), Return(true))); |
| 2548 | 2568 |
| 2569 // Set data for all types. | |
| 2570 for (ModelTypeSet::Iterator iter = ModelTypeSet::All().First(); iter.Good(); | |
| 2571 iter.Inc()) { | |
| 2572 SetProgressMarkerForType(iter.Get(), true); | |
| 2573 SetInitialSyncEndedForType(iter.Get(), true); | |
| 2574 } | |
| 2575 | |
| 2549 CallbackCounter ready_task_counter, retry_task_counter; | 2576 CallbackCounter ready_task_counter, retry_task_counter; |
| 2550 sync_manager_.ConfigureSyncer( | 2577 sync_manager_.ConfigureSyncer( |
| 2551 reason, | 2578 reason, |
| 2552 types_to_download, | 2579 types_to_download, |
| 2553 new_routing_info, | 2580 new_routing_info, |
| 2554 base::Bind(&CallbackCounter::Callback, | 2581 base::Bind(&CallbackCounter::Callback, |
| 2555 base::Unretained(&ready_task_counter)), | 2582 base::Unretained(&ready_task_counter)), |
| 2556 base::Bind(&CallbackCounter::Callback, | 2583 base::Bind(&CallbackCounter::Callback, |
| 2557 base::Unretained(&retry_task_counter))); | 2584 base::Unretained(&retry_task_counter))); |
| 2558 EXPECT_EQ(0, ready_task_counter.times_called()); | 2585 EXPECT_EQ(0, ready_task_counter.times_called()); |
| 2559 EXPECT_EQ(0, retry_task_counter.times_called()); | 2586 EXPECT_EQ(0, retry_task_counter.times_called()); |
| 2560 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::RECONFIGURATION, | 2587 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::RECONFIGURATION, |
| 2561 params.source); | 2588 params.source); |
| 2562 EXPECT_TRUE(types_to_download.Equals(params.types_to_download)); | 2589 EXPECT_TRUE(types_to_download.Equals(params.types_to_download)); |
| 2563 EXPECT_EQ(new_routing_info, params.routing_info); | 2590 EXPECT_EQ(new_routing_info, params.routing_info); |
| 2591 | |
| 2592 // Verify only the disabled types were purged. | |
| 2593 EXPECT_TRUE(Intersection(sync_manager_.InitialSyncEndedTypes(), | |
| 2594 disabled_types).Empty()); | |
| 2595 EXPECT_TRUE(disabled_types.Equals( | |
| 2596 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | |
| 2564 } | 2597 } |
| 2565 | 2598 |
| 2566 // Test that the retry callback is invoked on configuration failure. | 2599 // Test that the retry callback is invoked on configuration failure. |
| 2567 TEST_F(SyncManagerTestWithMockScheduler, ConfigurationRetry) { | 2600 TEST_F(SyncManagerTestWithMockScheduler, ConfigurationRetry) { |
| 2568 ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION; | 2601 ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION; |
| 2569 ModelTypeSet types_to_download(BOOKMARKS, PREFERENCES); | 2602 ModelTypeSet types_to_download(BOOKMARKS, PREFERENCES); |
| 2570 ModelSafeRoutingInfo new_routing_info; | 2603 ModelSafeRoutingInfo new_routing_info; |
| 2571 GetModelSafeRoutingInfo(&new_routing_info); | 2604 GetModelSafeRoutingInfo(&new_routing_info); |
| 2572 | 2605 |
| 2573 ConfigurationParams params; | 2606 ConfigurationParams params; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2627 | 2660 |
| 2628 // Ensure only bookmarks and nigori lost their progress marker. Preferences | 2661 // Ensure only bookmarks and nigori lost their progress marker. Preferences |
| 2629 // should still have it. | 2662 // should still have it. |
| 2630 partial_types = | 2663 partial_types = |
| 2631 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()); | 2664 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()); |
| 2632 EXPECT_TRUE(partial_types.Has(NIGORI)); | 2665 EXPECT_TRUE(partial_types.Has(NIGORI)); |
| 2633 EXPECT_TRUE(partial_types.Has(BOOKMARKS)); | 2666 EXPECT_TRUE(partial_types.Has(BOOKMARKS)); |
| 2634 EXPECT_FALSE(partial_types.Has(PREFERENCES)); | 2667 EXPECT_FALSE(partial_types.Has(PREFERENCES)); |
| 2635 } | 2668 } |
| 2636 | 2669 |
| 2670 // Test CleanipDisabledTypes properly purges all disabled types as specified | |
| 2671 // by the previous and current enabled params. | |
| 2672 TEST_F(SyncManagerTest, CleanupDisabledTypes) { | |
| 2673 ModelSafeRoutingInfo routing_info; | |
| 2674 GetModelSafeRoutingInfo(&routing_info); | |
| 2675 ModelTypeSet enabled_types = GetRoutingInfoTypes(routing_info); | |
| 2676 ModelTypeSet disabled_types = Difference(ModelTypeSet::All(), enabled_types); | |
| 2677 | |
| 2678 // Set data for all types. | |
| 2679 for (ModelTypeSet::Iterator iter = ModelTypeSet::All().First(); iter.Good(); | |
| 2680 iter.Inc()) { | |
| 2681 SetProgressMarkerForType(iter.Get(), true); | |
| 2682 SetInitialSyncEndedForType(iter.Get(), true); | |
| 2683 } | |
| 2684 | |
| 2685 // Verify only the enabled types remain after cleanup. | |
| 2686 sync_manager_.CleanupDisabledTypes(ModelTypeSet::All(), enabled_types); | |
| 2687 EXPECT_TRUE(enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); | |
| 2688 EXPECT_TRUE(disabled_types.Equals( | |
| 2689 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | |
| 2690 | |
| 2691 // Disable some more types. | |
| 2692 disabled_types.Put(BOOKMARKS); | |
| 2693 disabled_types.Put(PREFERENCES); | |
| 2694 ModelTypeSet new_enabled_types = | |
| 2695 Difference(ModelTypeSet::All(), disabled_types); | |
| 2696 | |
| 2697 // Verify only the non-disabled types remain after cleanup. | |
| 2698 sync_manager_.CleanupDisabledTypes(enabled_types, new_enabled_types); | |
| 2699 EXPECT_TRUE(new_enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); | |
| 2700 EXPECT_TRUE(disabled_types.Equals( | |
| 2701 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | |
| 2702 } | |
| 2703 | |
| 2637 } // namespace | 2704 } // namespace |
| OLD | NEW |