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

Side by Side Diff: components/sync/engine_impl/get_updates_processor_unittest.cc

Issue 2130453004: [Sync] Move //sync to //components/sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "sync/engine/get_updates_processor.h" 5 #include "components/sync/engine_impl/get_updates_processor.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/stl_util.h" 13 #include "base/stl_util.h"
14 #include "sync/engine/get_updates_delegate.h" 14 #include "components/sync/base/model_type_test_util.h"
15 #include "sync/engine/update_handler.h" 15 #include "components/sync/engine_impl/get_updates_delegate.h"
16 #include "sync/internal_api/public/base/model_type_test_util.h" 16 #include "components/sync/engine_impl/update_handler.h"
17 #include "sync/protocol/sync.pb.h" 17 #include "components/sync/protocol/sync.pb.h"
18 #include "sync/sessions/debug_info_getter.h" 18 #include "components/sync/sessions_impl/debug_info_getter.h"
19 #include "sync/sessions/nudge_tracker.h" 19 #include "components/sync/sessions_impl/nudge_tracker.h"
20 #include "sync/sessions/status_controller.h" 20 #include "components/sync/sessions_impl/status_controller.h"
21 #include "sync/test/engine/fake_model_worker.h" 21 #include "components/sync/test/engine/fake_model_worker.h"
22 #include "sync/test/engine/mock_update_handler.h" 22 #include "components/sync/test/engine/mock_update_handler.h"
23 #include "sync/test/mock_invalidation.h" 23 #include "components/sync/test/mock_invalidation.h"
24 #include "sync/test/sessions/mock_debug_info_getter.h" 24 #include "components/sync/test/sessions/mock_debug_info_getter.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 26
27 namespace syncer { 27 namespace syncer {
28 28
29 namespace { 29 namespace {
30 30
31 std::unique_ptr<InvalidationInterface> BuildInvalidation( 31 std::unique_ptr<InvalidationInterface> BuildInvalidation(
32 int64_t version, 32 int64_t version,
33 const std::string& payload) { 33 const std::string& payload) {
34 return MockInvalidation::Build(version, payload); 34 return MockInvalidation::Build(version, payload);
35 } 35 }
36 36
37 } // namespace 37 } // namespace
38 38
39 using sessions::MockDebugInfoGetter; 39 using sessions::MockDebugInfoGetter;
40 40
41 // A test fixture for tests exercising download updates functions. 41 // A test fixture for tests exercising download updates functions.
42 class GetUpdatesProcessorTest : public ::testing::Test { 42 class GetUpdatesProcessorTest : public ::testing::Test {
43 protected: 43 protected:
44 GetUpdatesProcessorTest() : 44 GetUpdatesProcessorTest()
45 kTestStartTime(base::TimeTicks::Now()), 45 : kTestStartTime(base::TimeTicks::Now()),
46 update_handler_deleter_(&update_handler_map_) {} 46 update_handler_deleter_(&update_handler_map_) {}
47 47
48 void SetUp() override { 48 void SetUp() override {
49 AddUpdateHandler(AUTOFILL); 49 AddUpdateHandler(AUTOFILL);
50 AddUpdateHandler(BOOKMARKS); 50 AddUpdateHandler(BOOKMARKS);
51 AddUpdateHandler(PREFERENCES); 51 AddUpdateHandler(PREFERENCES);
52 } 52 }
53 53
54 ModelTypeSet enabled_types() { 54 ModelTypeSet enabled_types() { return enabled_types_; }
55 return enabled_types_;
56 }
57 55
58 std::unique_ptr<GetUpdatesProcessor> BuildGetUpdatesProcessor( 56 std::unique_ptr<GetUpdatesProcessor> BuildGetUpdatesProcessor(
59 const GetUpdatesDelegate& delegate) { 57 const GetUpdatesDelegate& delegate) {
60 return std::unique_ptr<GetUpdatesProcessor>( 58 return std::unique_ptr<GetUpdatesProcessor>(
61 new GetUpdatesProcessor(&update_handler_map_, delegate)); 59 new GetUpdatesProcessor(&update_handler_map_, delegate));
62 } 60 }
63 61
64 void InitFakeUpdateResponse(sync_pb::GetUpdatesResponse* response) { 62 void InitFakeUpdateResponse(sync_pb::GetUpdatesResponse* response) {
65 ModelTypeSet types = enabled_types(); 63 ModelTypeSet types = enabled_types();
66 64
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 328
331 // This field is essential for making the client stop looping. If it's unset 329 // This field is essential for making the client stop looping. If it's unset
332 // then something is very wrong. The client should detect this. 330 // then something is very wrong. The client should detect this.
333 gu_response.clear_changes_remaining(); 331 gu_response.clear_changes_remaining();
334 332
335 sessions::NudgeTracker nudge_tracker; 333 sessions::NudgeTracker nudge_tracker;
336 NormalGetUpdatesDelegate normal_delegate(nudge_tracker); 334 NormalGetUpdatesDelegate normal_delegate(nudge_tracker);
337 sessions::StatusController status; 335 sessions::StatusController status;
338 std::unique_ptr<GetUpdatesProcessor> processor( 336 std::unique_ptr<GetUpdatesProcessor> processor(
339 BuildGetUpdatesProcessor(normal_delegate)); 337 BuildGetUpdatesProcessor(normal_delegate));
340 SyncerError error = processor->ProcessResponse(gu_response, 338 SyncerError error =
341 enabled_types(), 339 processor->ProcessResponse(gu_response, enabled_types(), &status);
342 &status);
343 EXPECT_EQ(error, SERVER_RESPONSE_VALIDATION_FAILED); 340 EXPECT_EQ(error, SERVER_RESPONSE_VALIDATION_FAILED);
344 } 341 }
345 342
346 // Verify that we correctly detect when there's more work to be done. 343 // Verify that we correctly detect when there's more work to be done.
347 TEST_F(GetUpdatesProcessorTest, MoreToDownloadResponse) { 344 TEST_F(GetUpdatesProcessorTest, MoreToDownloadResponse) {
348 sync_pb::GetUpdatesResponse gu_response; 345 sync_pb::GetUpdatesResponse gu_response;
349 InitFakeUpdateResponse(&gu_response); 346 InitFakeUpdateResponse(&gu_response);
350 gu_response.set_changes_remaining(1); 347 gu_response.set_changes_remaining(1);
351 348
352 sessions::NudgeTracker nudge_tracker; 349 sessions::NudgeTracker nudge_tracker;
353 NormalGetUpdatesDelegate normal_delegate(nudge_tracker); 350 NormalGetUpdatesDelegate normal_delegate(nudge_tracker);
354 sessions::StatusController status; 351 sessions::StatusController status;
355 std::unique_ptr<GetUpdatesProcessor> processor( 352 std::unique_ptr<GetUpdatesProcessor> processor(
356 BuildGetUpdatesProcessor(normal_delegate)); 353 BuildGetUpdatesProcessor(normal_delegate));
357 SyncerError error = processor->ProcessResponse(gu_response, 354 SyncerError error =
358 enabled_types(), 355 processor->ProcessResponse(gu_response, enabled_types(), &status);
359 &status);
360 EXPECT_EQ(error, SERVER_MORE_TO_DOWNLOAD); 356 EXPECT_EQ(error, SERVER_MORE_TO_DOWNLOAD);
361 } 357 }
362 358
363 // A simple scenario: No updates returned and nothing more to download. 359 // A simple scenario: No updates returned and nothing more to download.
364 TEST_F(GetUpdatesProcessorTest, NormalResponseTest) { 360 TEST_F(GetUpdatesProcessorTest, NormalResponseTest) {
365 sync_pb::GetUpdatesResponse gu_response; 361 sync_pb::GetUpdatesResponse gu_response;
366 InitFakeUpdateResponse(&gu_response); 362 InitFakeUpdateResponse(&gu_response);
367 gu_response.set_changes_remaining(0); 363 gu_response.set_changes_remaining(0);
368 364
369 sessions::NudgeTracker nudge_tracker; 365 sessions::NudgeTracker nudge_tracker;
370 NormalGetUpdatesDelegate normal_delegate(nudge_tracker); 366 NormalGetUpdatesDelegate normal_delegate(nudge_tracker);
371 sessions::StatusController status; 367 sessions::StatusController status;
372 std::unique_ptr<GetUpdatesProcessor> processor( 368 std::unique_ptr<GetUpdatesProcessor> processor(
373 BuildGetUpdatesProcessor(normal_delegate)); 369 BuildGetUpdatesProcessor(normal_delegate));
374 SyncerError error = processor->ProcessResponse(gu_response, 370 SyncerError error =
375 enabled_types(), 371 processor->ProcessResponse(gu_response, enabled_types(), &status);
376 &status);
377 EXPECT_EQ(error, SYNCER_OK); 372 EXPECT_EQ(error, SYNCER_OK);
378 } 373 }
379 374
380 // Variant of GetUpdatesProcessor test designed to test update application. 375 // Variant of GetUpdatesProcessor test designed to test update application.
381 // 376 //
382 // Maintains two enabled types, but requests that updates be applied for only 377 // Maintains two enabled types, but requests that updates be applied for only
383 // one of them. 378 // one of them.
384 class GetUpdatesProcessorApplyUpdatesTest : public GetUpdatesProcessorTest { 379 class GetUpdatesProcessorApplyUpdatesTest : public GetUpdatesProcessorTest {
385 public: 380 public:
386 GetUpdatesProcessorApplyUpdatesTest() {} 381 GetUpdatesProcessorApplyUpdatesTest() {}
387 ~GetUpdatesProcessorApplyUpdatesTest() override {} 382 ~GetUpdatesProcessorApplyUpdatesTest() override {}
388 383
389 void SetUp() override { 384 void SetUp() override {
390 bookmarks_handler_ = AddUpdateHandler(BOOKMARKS); 385 bookmarks_handler_ = AddUpdateHandler(BOOKMARKS);
391 autofill_handler_ = AddUpdateHandler(AUTOFILL); 386 autofill_handler_ = AddUpdateHandler(AUTOFILL);
392 } 387 }
393 388
394 ModelTypeSet GetGuTypes() { 389 ModelTypeSet GetGuTypes() { return ModelTypeSet(AUTOFILL); }
395 return ModelTypeSet(AUTOFILL);
396 }
397 390
398 MockUpdateHandler* GetNonAppliedHandler() { 391 MockUpdateHandler* GetNonAppliedHandler() { return bookmarks_handler_; }
399 return bookmarks_handler_;
400 }
401 392
402 MockUpdateHandler* GetAppliedHandler() { 393 MockUpdateHandler* GetAppliedHandler() { return autofill_handler_; }
403 return autofill_handler_;
404 }
405 394
406 private: 395 private:
407 MockUpdateHandler* bookmarks_handler_; 396 MockUpdateHandler* bookmarks_handler_;
408 MockUpdateHandler* autofill_handler_; 397 MockUpdateHandler* autofill_handler_;
409 }; 398 };
410 399
411 // Verify that a normal cycle applies updates non-passively to the specified 400 // Verify that a normal cycle applies updates non-passively to the specified
412 // types. 401 // types.
413 TEST_F(GetUpdatesProcessorApplyUpdatesTest, Normal) { 402 TEST_F(GetUpdatesProcessorApplyUpdatesTest, Normal) {
414 sessions::NudgeTracker nudge_tracker; 403 sessions::NudgeTracker nudge_tracker;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 EXPECT_EQ(0, GetAppliedHandler()->GetPassiveApplyUpdatesCount()); 463 EXPECT_EQ(0, GetAppliedHandler()->GetPassiveApplyUpdatesCount());
475 464
476 EXPECT_EQ(GetGuTypes(), status.get_updates_request_types()); 465 EXPECT_EQ(GetGuTypes(), status.get_updates_request_types());
477 } 466 }
478 467
479 class DownloadUpdatesDebugInfoTest : public ::testing::Test { 468 class DownloadUpdatesDebugInfoTest : public ::testing::Test {
480 public: 469 public:
481 DownloadUpdatesDebugInfoTest() {} 470 DownloadUpdatesDebugInfoTest() {}
482 ~DownloadUpdatesDebugInfoTest() override {} 471 ~DownloadUpdatesDebugInfoTest() override {}
483 472
484 sessions::StatusController* status() { 473 sessions::StatusController* status() { return &status_; }
485 return &status_;
486 }
487 474
488 sessions::DebugInfoGetter* debug_info_getter() { 475 sessions::DebugInfoGetter* debug_info_getter() { return &debug_info_getter_; }
489 return &debug_info_getter_;
490 }
491 476
492 void AddDebugEvent() { 477 void AddDebugEvent() { debug_info_getter_.AddDebugEvent(); }
493 debug_info_getter_.AddDebugEvent();
494 }
495 478
496 private: 479 private:
497 sessions::StatusController status_; 480 sessions::StatusController status_;
498 MockDebugInfoGetter debug_info_getter_; 481 MockDebugInfoGetter debug_info_getter_;
499 }; 482 };
500 483
501 // Verify CopyClientDebugInfo when there are no events to upload. 484 // Verify CopyClientDebugInfo when there are no events to upload.
502 TEST_F(DownloadUpdatesDebugInfoTest, VerifyCopyClientDebugInfo_Empty) { 485 TEST_F(DownloadUpdatesDebugInfoTest, VerifyCopyClientDebugInfo_Empty) {
503 sync_pb::DebugInfo debug_info; 486 sync_pb::DebugInfo debug_info;
504 GetUpdatesProcessor::CopyClientDebugInfo(debug_info_getter(), &debug_info); 487 GetUpdatesProcessor::CopyClientDebugInfo(debug_info_getter(), &debug_info);
505 EXPECT_EQ(0, debug_info.events_size()); 488 EXPECT_EQ(0, debug_info.events_size());
506 } 489 }
507 490
508 TEST_F(DownloadUpdatesDebugInfoTest, VerifyCopyOverwrites) { 491 TEST_F(DownloadUpdatesDebugInfoTest, VerifyCopyOverwrites) {
509 sync_pb::DebugInfo debug_info; 492 sync_pb::DebugInfo debug_info;
510 AddDebugEvent(); 493 AddDebugEvent();
511 GetUpdatesProcessor::CopyClientDebugInfo(debug_info_getter(), &debug_info); 494 GetUpdatesProcessor::CopyClientDebugInfo(debug_info_getter(), &debug_info);
512 EXPECT_EQ(1, debug_info.events_size()); 495 EXPECT_EQ(1, debug_info.events_size());
513 GetUpdatesProcessor::CopyClientDebugInfo(debug_info_getter(), &debug_info); 496 GetUpdatesProcessor::CopyClientDebugInfo(debug_info_getter(), &debug_info);
514 EXPECT_EQ(1, debug_info.events_size()); 497 EXPECT_EQ(1, debug_info.events_size());
515 } 498 }
516 499
517 } // namespace syncer 500 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/engine_impl/get_updates_processor.cc ('k') | components/sync/engine_impl/model_type_worker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698