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

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

Issue 82303002: Send debug event info on Commit requests, not just GetUpdates requests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dont-clear-debug-info-2
Patch Set: Created 7 years, 1 month 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 | « sync/engine/commit.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 // Syncer unit tests. Unfortunately a lot of these tests 5 // Syncer unit tests. Unfortunately a lot of these tests
6 // are outdated and need to be reworked and updated. 6 // are outdated and need to be reworked and updated.
7 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <limits> 9 #include <limits>
10 #include <list> 10 #include <list>
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 context_->set_routing_info(routing_info); 454 context_->set_routing_info(routing_info);
455 } 455 }
456 456
457 mock_server_->ExpectGetUpdatesRequestTypes(enabled_datatypes_); 457 mock_server_->ExpectGetUpdatesRequestTypes(enabled_datatypes_);
458 } 458 }
459 459
460 Cryptographer* GetCryptographer(syncable::BaseTransaction* trans) { 460 Cryptographer* GetCryptographer(syncable::BaseTransaction* trans) {
461 return directory()->GetCryptographer(trans); 461 return directory()->GetCryptographer(trans);
462 } 462 }
463 463
464 // Configures SyncSessionContext and NudgeTracker so Syncer won't call
465 // GetUpdates prior to Commit. This method can be used to ensure a Commit is
466 // not preceeded by GetUpdates.
467 void ConfigureNoGetUpdatesRequired() {
468 context_->set_server_enabled_pre_commit_update_avoidance(true);
469 nudge_tracker_.OnInvalidationsEnabled();
470 nudge_tracker_.RecordSuccessfulSyncCycle();
471
472 ASSERT_FALSE(context_->ShouldFetchUpdatesBeforeCommit());
473 ASSERT_FALSE(nudge_tracker_.IsGetUpdatesRequired());
474 }
475
464 base::MessageLoop message_loop_; 476 base::MessageLoop message_loop_;
465 477
466 // Some ids to aid tests. Only the root one's value is specific. The rest 478 // Some ids to aid tests. Only the root one's value is specific. The rest
467 // are named for test clarity. 479 // are named for test clarity.
468 // TODO(chron): Get rid of these inbuilt IDs. They only make it 480 // TODO(chron): Get rid of these inbuilt IDs. They only make it
469 // more confusing. 481 // more confusing.
470 syncable::Id root_id_; 482 syncable::Id root_id_;
471 syncable::Id parent_id_; 483 syncable::Id parent_id_;
472 syncable::Id child_id_; 484 syncable::Id child_id_;
473 485
(...skipping 2039 matching lines...) Expand 10 before | Expand all | Expand 10 after
2513 mock_server_->set_conflict_n_commits(1); 2525 mock_server_->set_conflict_n_commits(1);
2514 SyncShareNudge(); 2526 SyncShareNudge();
2515 2527
2516 // We should stop looping at the first sign of trouble. 2528 // We should stop looping at the first sign of trouble.
2517 EXPECT_EQ(1U, mock_server_->commit_messages().size()); 2529 EXPECT_EQ(1U, mock_server_->commit_messages().size());
2518 EXPECT_EQ(items_to_commit - (kDefaultMaxCommitBatchSize - 1), 2530 EXPECT_EQ(items_to_commit - (kDefaultMaxCommitBatchSize - 1),
2519 directory()->unsynced_entity_count()); 2531 directory()->unsynced_entity_count());
2520 } 2532 }
2521 2533
2522 // Tests that sending debug info events works. 2534 // Tests that sending debug info events works.
2523 TEST_F(SyncerTest, SendDebugInfoEvents_HappyCase) { 2535 TEST_F(SyncerTest, SendDebugInfoEventsOnGetUpdates_HappyCase) {
2524 debug_info_getter_->AddDebugEvent(); 2536 debug_info_getter_->AddDebugEvent();
2525 debug_info_getter_->AddDebugEvent(); 2537 debug_info_getter_->AddDebugEvent();
2526 2538
2527 SyncShareNudge(); 2539 SyncShareNudge();
2528 2540
2529 // Verify we received one request with two debug info events. 2541 // Verify we received one GetUpdates request with two debug info events.
2530 EXPECT_EQ(1U, mock_server_->requests().size()); 2542 EXPECT_EQ(1U, mock_server_->requests().size());
2531 EXPECT_EQ(2, mock_server_->requests().back().debug_info().events_size()); 2543 ASSERT_TRUE(mock_server_->last_request().has_get_updates());
2544 EXPECT_EQ(2, mock_server_->last_request().debug_info().events_size());
2532 2545
2533 SyncShareNudge(); 2546 SyncShareNudge();
2534 2547
2535 // See that we received another request, but that it contains no debug info 2548 // See that we received another GetUpdates request, but that it contains no
2536 // events. 2549 // debug info events.
2537 EXPECT_EQ(2U, mock_server_->requests().size()); 2550 EXPECT_EQ(2U, mock_server_->requests().size());
2538 EXPECT_EQ(0, mock_server_->requests().back().debug_info().events_size()); 2551 ASSERT_TRUE(mock_server_->last_request().has_get_updates());
2552 EXPECT_EQ(0, mock_server_->last_request().debug_info().events_size());
2539 2553
2540 debug_info_getter_->AddDebugEvent(); 2554 debug_info_getter_->AddDebugEvent();
2541 2555
2542 SyncShareNudge(); 2556 SyncShareNudge();
2543 2557
2544 // See that we received another request and it contains one debug info event. 2558 // See that we received another GetUpdates request and it contains one debug
2559 // info event.
2545 EXPECT_EQ(3U, mock_server_->requests().size()); 2560 EXPECT_EQ(3U, mock_server_->requests().size());
2546 EXPECT_EQ(1, mock_server_->requests().back().debug_info().events_size()); 2561 ASSERT_TRUE(mock_server_->last_request().has_get_updates());
2562 EXPECT_EQ(1, mock_server_->last_request().debug_info().events_size());
2547 } 2563 }
2548 2564
2549 // Tests that debug info events are dropped on server error. 2565 // Tests that debug info events are dropped on server error.
2550 TEST_F(SyncerTest, SendDebugInfoEvents_PostFailsDontDrop) { 2566 TEST_F(SyncerTest, SendDebugInfoEventsOnGetUpdates_PostFailsDontDrop) {
2551 debug_info_getter_->AddDebugEvent(); 2567 debug_info_getter_->AddDebugEvent();
2552 debug_info_getter_->AddDebugEvent(); 2568 debug_info_getter_->AddDebugEvent();
2553 2569
2554 mock_server_->FailNextPostBufferToPathCall(); 2570 mock_server_->FailNextPostBufferToPathCall();
2555 SyncShareNudge(); 2571 SyncShareNudge();
2556 2572
2557 // Verify we attempted to send one request with two debug info events. 2573 // Verify we attempted to send one GetUpdates request with two debug info
2574 // events.
2558 EXPECT_EQ(1U, mock_server_->requests().size()); 2575 EXPECT_EQ(1U, mock_server_->requests().size());
2559 EXPECT_EQ(2, mock_server_->requests().back().debug_info().events_size()); 2576 ASSERT_TRUE(mock_server_->last_request().has_get_updates());
2577 EXPECT_EQ(2, mock_server_->last_request().debug_info().events_size());
2560 2578
2561 SyncShareNudge(); 2579 SyncShareNudge();
2562 2580
2563 // See that the client resent the two debug info events. 2581 // See that the client resent the two debug info events.
2564 EXPECT_EQ(2U, mock_server_->requests().size()); 2582 EXPECT_EQ(2U, mock_server_->requests().size());
2565 EXPECT_EQ(2, mock_server_->requests().back().debug_info().events_size()); 2583 ASSERT_TRUE(mock_server_->last_request().has_get_updates());
2584 EXPECT_EQ(2, mock_server_->last_request().debug_info().events_size());
2566 2585
2567 // The previous send was successful so this next one shouldn't generate any 2586 // The previous send was successful so this next one shouldn't generate any
2568 // debug info events. 2587 // debug info events.
2569 SyncShareNudge(); 2588 SyncShareNudge();
2570 EXPECT_EQ(3U, mock_server_->requests().size()); 2589 EXPECT_EQ(3U, mock_server_->requests().size());
2571 EXPECT_EQ(0, mock_server_->requests().back().debug_info().events_size()); 2590 ASSERT_TRUE(mock_server_->last_request().has_get_updates());
2591 EXPECT_EQ(0, mock_server_->last_request().debug_info().events_size());
2592 }
2593
2594 // Tests that sending debug info events on Commit works.
2595 TEST_F(SyncerTest, SendDebugInfoEventsOnCommit_HappyCase) {
2596 // Make sure GetUpdate isn't call as it would "steal" debug info events before
2597 // Commit has a chance to send them.
2598 ConfigureNoGetUpdatesRequired();
2599
2600 // Generate a debug info event and trigger a commit.
2601 debug_info_getter_->AddDebugEvent();
2602 CreateUnsyncedDirectory("X", "id_X");
2603 SyncShareNudge();
2604
2605 // Verify that the last request received is a Commit and that it contains a
2606 // debug info event.
2607 EXPECT_EQ(1U, mock_server_->requests().size());
2608 ASSERT_TRUE(mock_server_->last_request().has_commit());
2609 EXPECT_EQ(1, mock_server_->last_request().debug_info().events_size());
2610
2611 // Generate another commit, but no debug info event.
2612 CreateUnsyncedDirectory("Y", "id_Y");
2613 SyncShareNudge();
2614
2615 // See that it was received and contains no debug info events.
2616 EXPECT_EQ(2U, mock_server_->requests().size());
2617 ASSERT_TRUE(mock_server_->last_request().has_commit());
2618 EXPECT_EQ(0, mock_server_->last_request().debug_info().events_size());
2619 }
2620
2621 // Tests that debug info events are not dropped on server error.
2622 TEST_F(SyncerTest, SendDebugInfoEventsOnCommit_PostFailsDontDrop) {
2623 // Make sure GetUpdate isn't call as it would "steal" debug info events before
2624 // Commit has a chance to send them.
2625 ConfigureNoGetUpdatesRequired();
2626
2627 mock_server_->FailNextPostBufferToPathCall();
2628
2629 // Generate a debug info event and trigger a commit.
2630 debug_info_getter_->AddDebugEvent();
2631 CreateUnsyncedDirectory("X", "id_X");
2632 SyncShareNudge();
2633
2634 // Verify that the last request sent is a Commit and that it contains a debug
2635 // info event.
2636 EXPECT_EQ(1U, mock_server_->requests().size());
2637 ASSERT_TRUE(mock_server_->last_request().has_commit());
2638 EXPECT_EQ(1, mock_server_->last_request().debug_info().events_size());
2639
2640 // Try again.
2641 SyncShareNudge();
2642
2643 // Verify that we've received another Commit and that it contains a debug info
2644 // event (just like the previous one).
2645 EXPECT_EQ(2U, mock_server_->requests().size());
2646 ASSERT_TRUE(mock_server_->last_request().has_commit());
2647 EXPECT_EQ(1, mock_server_->last_request().debug_info().events_size());
2648
2649 // Generate another commit and try again.
2650 CreateUnsyncedDirectory("Y", "id_Y");
2651 SyncShareNudge();
2652
2653 // See that it was received and contains no debug info events.
2654 EXPECT_EQ(3U, mock_server_->requests().size());
2655 ASSERT_TRUE(mock_server_->last_request().has_commit());
2656 EXPECT_EQ(0, mock_server_->last_request().debug_info().events_size());
2572 } 2657 }
2573 2658
2574 TEST_F(SyncerTest, HugeConflict) { 2659 TEST_F(SyncerTest, HugeConflict) {
2575 int item_count = 300; // We should be able to do 300 or 3000 w/o issue. 2660 int item_count = 300; // We should be able to do 300 or 3000 w/o issue.
2576 2661
2577 syncable::Id parent_id = ids_.NewServerId(); 2662 syncable::Id parent_id = ids_.NewServerId();
2578 syncable::Id last_id = parent_id; 2663 syncable::Id last_id = parent_id;
2579 vector<syncable::Id> tree_ids; 2664 vector<syncable::Id> tree_ids;
2580 2665
2581 // Create a lot of updates for which the parent does not exist yet. 2666 // Create a lot of updates for which the parent does not exist yet.
(...skipping 2132 matching lines...) Expand 10 before | Expand all | Expand 10 after
4714 EXPECT_EQ("xyz", final_monitor_records["xyz"].extension_id); 4799 EXPECT_EQ("xyz", final_monitor_records["xyz"].extension_id);
4715 EXPECT_EQ(2049U, final_monitor_records["ABC"].bookmark_write_count); 4800 EXPECT_EQ(2049U, final_monitor_records["ABC"].bookmark_write_count);
4716 EXPECT_EQ(4U, final_monitor_records["xyz"].bookmark_write_count); 4801 EXPECT_EQ(4U, final_monitor_records["xyz"].bookmark_write_count);
4717 } else { 4802 } else {
4718 EXPECT_TRUE(final_monitor_records.empty()) 4803 EXPECT_TRUE(final_monitor_records.empty())
4719 << "Should not restore records after successful bookmark commit."; 4804 << "Should not restore records after successful bookmark commit.";
4720 } 4805 }
4721 } 4806 }
4722 4807
4723 } // namespace syncer 4808 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/commit.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698