| OLD | NEW |
| 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> |
| 11 #include <map> | 11 #include <map> |
| 12 #include <set> | 12 #include <set> |
| 13 #include <string> | 13 #include <string> |
| 14 | 14 |
| 15 #include "base/bind.h" | 15 #include "base/bind.h" |
| 16 #include "base/bind_helpers.h" | 16 #include "base/bind_helpers.h" |
| 17 #include "base/callback.h" | 17 #include "base/callback.h" |
| 18 #include "base/compiler_specific.h" | 18 #include "base/compiler_specific.h" |
| 19 #include "base/location.h" | 19 #include "base/location.h" |
| 20 #include "base/memory/scoped_ptr.h" | 20 #include "base/memory/scoped_ptr.h" |
| 21 #include "base/message_loop/message_loop.h" | 21 #include "base/message_loop/message_loop.h" |
| 22 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
| 23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 24 #include "base/time/time.h" | 24 #include "base/time/time.h" |
| 25 #include "build/build_config.h" | 25 #include "build/build_config.h" |
| 26 #include "sync/engine/get_commit_ids_command.h" | 26 #include "sync/engine/get_commit_ids.h" |
| 27 #include "sync/engine/net/server_connection_manager.h" | 27 #include "sync/engine/net/server_connection_manager.h" |
| 28 #include "sync/engine/process_updates_command.h" | 28 #include "sync/engine/process_updates_command.h" |
| 29 #include "sync/engine/sync_scheduler_impl.h" | 29 #include "sync/engine/sync_scheduler_impl.h" |
| 30 #include "sync/engine/syncer.h" | 30 #include "sync/engine/syncer.h" |
| 31 #include "sync/engine/syncer_proto_util.h" | 31 #include "sync/engine/syncer_proto_util.h" |
| 32 #include "sync/engine/traffic_recorder.h" | 32 #include "sync/engine/traffic_recorder.h" |
| 33 #include "sync/internal_api/public/base/model_type.h" | 33 #include "sync/internal_api/public/base/model_type.h" |
| 34 #include "sync/internal_api/public/engine/model_safe_worker.h" | 34 #include "sync/internal_api/public/engine/model_safe_worker.h" |
| 35 #include "sync/protocol/bookmark_specifics.pb.h" | 35 #include "sync/protocol/bookmark_specifics.pb.h" |
| 36 #include "sync/protocol/nigori_specifics.pb.h" | 36 #include "sync/protocol/nigori_specifics.pb.h" |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 } | 380 } |
| 381 } | 381 } |
| 382 test++; | 382 test++; |
| 383 } | 383 } |
| 384 } | 384 } |
| 385 SyncShareNudge(); | 385 SyncShareNudge(); |
| 386 ASSERT_TRUE(expected_positions.size() == | 386 ASSERT_TRUE(expected_positions.size() == |
| 387 mock_server_->committed_ids().size()); | 387 mock_server_->committed_ids().size()); |
| 388 // If this test starts failing, be aware other sort orders could be valid. | 388 // If this test starts failing, be aware other sort orders could be valid. |
| 389 for (size_t i = 0; i < expected_positions.size(); ++i) { | 389 for (size_t i = 0; i < expected_positions.size(); ++i) { |
| 390 SCOPED_TRACE(i); |
| 390 EXPECT_EQ(1u, expected_positions.count(i)); | 391 EXPECT_EQ(1u, expected_positions.count(i)); |
| 391 EXPECT_TRUE(expected_positions[i] == mock_server_->committed_ids()[i]); | 392 EXPECT_EQ(expected_positions[i], mock_server_->committed_ids()[i]); |
| 392 } | 393 } |
| 393 } | 394 } |
| 394 | 395 |
| 395 void DoTruncationTest(const vector<int64>& unsynced_handle_view, | 396 void DoTruncationTest(const vector<int64>& unsynced_handle_view, |
| 396 const vector<int64>& expected_handle_order) { | 397 const vector<int64>& expected_handle_order) { |
| 397 for (size_t limit = expected_handle_order.size() + 2; limit > 0; --limit) { | 398 for (size_t limit = expected_handle_order.size() + 2; limit > 0; --limit) { |
| 398 WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); | 399 WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
| 399 | 400 |
| 400 ModelSafeRoutingInfo routes; | 401 ModelSafeRoutingInfo routes; |
| 401 GetModelSafeRoutingInfo(&routes); | 402 GetModelSafeRoutingInfo(&routes); |
| 402 ModelTypeSet types = GetRoutingInfoTypes(routes); | 403 ModelTypeSet types = GetRoutingInfoTypes(routes); |
| 403 sessions::OrderedCommitSet output_set(routes); | 404 sessions::OrderedCommitSet output_set(routes); |
| 404 GetCommitIdsCommand command(&wtrans, types, limit, &output_set); | 405 GetCommitIds(&wtrans, types, limit, &output_set); |
| 405 std::set<int64> ready_unsynced_set; | |
| 406 command.FilterUnreadyEntries(&wtrans, types, | |
| 407 ModelTypeSet(), false, | |
| 408 unsynced_handle_view, &ready_unsynced_set); | |
| 409 command.BuildCommitIds(&wtrans, routes, ready_unsynced_set); | |
| 410 size_t truncated_size = std::min(limit, expected_handle_order.size()); | 406 size_t truncated_size = std::min(limit, expected_handle_order.size()); |
| 411 ASSERT_EQ(truncated_size, output_set.Size()); | 407 ASSERT_EQ(truncated_size, output_set.Size()); |
| 412 for (size_t i = 0; i < truncated_size; ++i) { | 408 for (size_t i = 0; i < truncated_size; ++i) { |
| 413 ASSERT_EQ(expected_handle_order[i], output_set.GetCommitHandleAt(i)) | 409 ASSERT_EQ(expected_handle_order[i], output_set.GetCommitHandleAt(i)) |
| 414 << "At index " << i << " with batch size limited to " << limit; | 410 << "At index " << i << " with batch size limited to " << limit; |
| 415 } | 411 } |
| 416 sessions::OrderedCommitSet::Projection proj; | 412 sessions::OrderedCommitSet::Projection proj; |
| 417 proj = output_set.GetCommitIdProjection(GROUP_PASSIVE); | 413 proj = output_set.GetCommitIdProjection(GROUP_PASSIVE); |
| 418 ASSERT_EQ(truncated_size, proj.size()); | 414 ASSERT_EQ(truncated_size, proj.size()); |
| 419 for (size_t i = 0; i < truncated_size; ++i) { | 415 for (size_t i = 0; i < truncated_size; ++i) { |
| (...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1179 TEST_F(SyncerTest, TestCommitListOrderingThreeItemsTall) { | 1175 TEST_F(SyncerTest, TestCommitListOrderingThreeItemsTall) { |
| 1180 CommitOrderingTest items[] = { | 1176 CommitOrderingTest items[] = { |
| 1181 {1, ids_.FromNumber(-2001), ids_.FromNumber(-2000)}, | 1177 {1, ids_.FromNumber(-2001), ids_.FromNumber(-2000)}, |
| 1182 {0, ids_.FromNumber(-2000), ids_.FromNumber(0)}, | 1178 {0, ids_.FromNumber(-2000), ids_.FromNumber(0)}, |
| 1183 {2, ids_.FromNumber(-2002), ids_.FromNumber(-2001)}, | 1179 {2, ids_.FromNumber(-2002), ids_.FromNumber(-2001)}, |
| 1184 CommitOrderingTest::MakeLastCommitItem(), | 1180 CommitOrderingTest::MakeLastCommitItem(), |
| 1185 }; | 1181 }; |
| 1186 RunCommitOrderingTest(items); | 1182 RunCommitOrderingTest(items); |
| 1187 } | 1183 } |
| 1188 | 1184 |
| 1185 TEST_F(SyncerTest, TestCommitListOrderingFourItemsTall) { |
| 1186 CommitOrderingTest items[] = { |
| 1187 {3, ids_.FromNumber(-2003), ids_.FromNumber(-2002)}, |
| 1188 {1, ids_.FromNumber(-2001), ids_.FromNumber(-2000)}, |
| 1189 {0, ids_.FromNumber(-2000), ids_.FromNumber(0)}, |
| 1190 {2, ids_.FromNumber(-2002), ids_.FromNumber(-2001)}, |
| 1191 CommitOrderingTest::MakeLastCommitItem(), |
| 1192 }; |
| 1193 RunCommitOrderingTest(items); |
| 1194 } |
| 1195 |
| 1189 TEST_F(SyncerTest, TestCommitListOrderingThreeItemsTallLimitedSize) { | 1196 TEST_F(SyncerTest, TestCommitListOrderingThreeItemsTallLimitedSize) { |
| 1190 context_->set_max_commit_batch_size(2); | 1197 context_->set_max_commit_batch_size(2); |
| 1191 CommitOrderingTest items[] = { | 1198 CommitOrderingTest items[] = { |
| 1192 {1, ids_.FromNumber(-2001), ids_.FromNumber(-2000)}, | 1199 {1, ids_.FromNumber(-2001), ids_.FromNumber(-2000)}, |
| 1193 {0, ids_.FromNumber(-2000), ids_.FromNumber(0)}, | 1200 {0, ids_.FromNumber(-2000), ids_.FromNumber(0)}, |
| 1194 {2, ids_.FromNumber(-2002), ids_.FromNumber(-2001)}, | 1201 {2, ids_.FromNumber(-2002), ids_.FromNumber(-2001)}, |
| 1195 CommitOrderingTest::MakeLastCommitItem(), | 1202 CommitOrderingTest::MakeLastCommitItem(), |
| 1196 }; | 1203 }; |
| 1197 RunCommitOrderingTest(items); | 1204 RunCommitOrderingTest(items); |
| 1198 } | 1205 } |
| (...skipping 3607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4806 EXPECT_EQ("xyz", final_monitor_records["xyz"].extension_id); | 4813 EXPECT_EQ("xyz", final_monitor_records["xyz"].extension_id); |
| 4807 EXPECT_EQ(2049U, final_monitor_records["ABC"].bookmark_write_count); | 4814 EXPECT_EQ(2049U, final_monitor_records["ABC"].bookmark_write_count); |
| 4808 EXPECT_EQ(4U, final_monitor_records["xyz"].bookmark_write_count); | 4815 EXPECT_EQ(4U, final_monitor_records["xyz"].bookmark_write_count); |
| 4809 } else { | 4816 } else { |
| 4810 EXPECT_TRUE(final_monitor_records.empty()) | 4817 EXPECT_TRUE(final_monitor_records.empty()) |
| 4811 << "Should not restore records after successful bookmark commit."; | 4818 << "Should not restore records after successful bookmark commit."; |
| 4812 } | 4819 } |
| 4813 } | 4820 } |
| 4814 | 4821 |
| 4815 } // namespace syncer | 4822 } // namespace syncer |
| OLD | NEW |