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

Side by Side Diff: components/sync/engine_impl/directory_commit_contribution_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/directory_commit_contribution.h" 5 #include "components/sync/engine_impl/directory_commit_contribution.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 11
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "sync/internal_api/public/base/attachment_id_proto.h" 13 #include "components/sync/base/attachment_id_proto.h"
14 #include "sync/sessions/status_controller.h" 14 #include "components/sync/sessions_impl/status_controller.h"
15 #include "sync/syncable/entry.h" 15 #include "components/sync/syncable/entry.h"
16 #include "sync/syncable/mutable_entry.h" 16 #include "components/sync/syncable/mutable_entry.h"
17 #include "sync/syncable/syncable_read_transaction.h" 17 #include "components/sync/syncable/syncable_read_transaction.h"
18 #include "sync/syncable/syncable_write_transaction.h" 18 #include "components/sync/syncable/syncable_write_transaction.h"
19 #include "sync/test/engine/test_directory_setter_upper.h" 19 #include "components/sync/test/engine/test_directory_setter_upper.h"
20 #include "sync/test/engine/test_id_factory.h" 20 #include "components/sync/test/engine/test_id_factory.h"
21 #include "sync/test/engine/test_syncable_utils.h" 21 #include "components/sync/test/engine/test_syncable_utils.h"
22 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
23 23
24 namespace syncer { 24 namespace syncer {
25 25
26 class DirectoryCommitContributionTest : public ::testing::Test { 26 class DirectoryCommitContributionTest : public ::testing::Test {
27 public: 27 public:
28 void SetUp() override { 28 void SetUp() override {
29 dir_maker_.SetUp(); 29 dir_maker_.SetUp();
30 30
31 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, dir()); 31 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, dir());
(...skipping 23 matching lines...) Expand all
55 if (attachment_metadata.record_size() > 0) { 55 if (attachment_metadata.record_size() > 0) {
56 entry.PutAttachmentMetadata(attachment_metadata); 56 entry.PutAttachmentMetadata(attachment_metadata);
57 } 57 }
58 entry.PutIsUnsynced(true); 58 entry.PutIsUnsynced(true);
59 return entry.GetMetahandle(); 59 return entry.GetMetahandle();
60 } 60 }
61 61
62 int64_t CreateUnsyncedItem(syncable::WriteTransaction* trans, 62 int64_t CreateUnsyncedItem(syncable::WriteTransaction* trans,
63 ModelType type, 63 ModelType type,
64 const std::string& tag) { 64 const std::string& tag) {
65 return CreateUnsyncedItemWithAttachments( 65 return CreateUnsyncedItemWithAttachments(trans, type, tag,
66 trans, type, tag, sync_pb::AttachmentMetadata()); 66 sync_pb::AttachmentMetadata());
67 } 67 }
68 68
69 int64_t CreateSyncedItem(syncable::WriteTransaction* trans, 69 int64_t CreateSyncedItem(syncable::WriteTransaction* trans,
70 ModelType type, 70 ModelType type,
71 const std::string& tag) { 71 const std::string& tag) {
72 syncable::Entry parent_entry(trans, syncable::GET_TYPE_ROOT, type); 72 syncable::Entry parent_entry(trans, syncable::GET_TYPE_ROOT, type);
73 syncable::MutableEntry entry( 73 syncable::MutableEntry entry(trans, syncable::CREATE, type,
74 trans, 74 parent_entry.GetId(), tag);
75 syncable::CREATE,
76 type,
77 parent_entry.GetId(),
78 tag);
79 75
80 entry.PutId(syncable::Id::CreateFromServerId( 76 entry.PutId(syncable::Id::CreateFromServerId(
81 id_factory_.NewServerId().GetServerId())); 77 id_factory_.NewServerId().GetServerId()));
82 entry.PutBaseVersion(10); 78 entry.PutBaseVersion(10);
83 entry.PutServerVersion(10); 79 entry.PutServerVersion(10);
84 entry.PutIsUnappliedUpdate(false); 80 entry.PutIsUnappliedUpdate(false);
85 entry.PutIsUnsynced(false); 81 entry.PutIsUnsynced(false);
86 entry.PutIsDel(false); 82 entry.PutIsDel(false);
87 entry.PutServerIsDel(false); 83 entry.PutServerIsDel(false);
88 84
89 return entry.GetMetahandle(); 85 return entry.GetMetahandle();
90 } 86 }
91 87
92 void CreateSuccessfulCommitResponse( 88 void CreateSuccessfulCommitResponse(
93 const sync_pb::SyncEntity& entity, 89 const sync_pb::SyncEntity& entity,
94 sync_pb::CommitResponse::EntryResponse* response) { 90 sync_pb::CommitResponse::EntryResponse* response) {
95 response->set_response_type(sync_pb::CommitResponse::SUCCESS); 91 response->set_response_type(sync_pb::CommitResponse::SUCCESS);
96 response->set_non_unique_name(entity.name()); 92 response->set_non_unique_name(entity.name());
97 response->set_version(entity.version() + 1); 93 response->set_version(entity.version() + 1);
98 response->set_parent_id_string(entity.parent_id_string()); 94 response->set_parent_id_string(entity.parent_id_string());
99 95
100 if (entity.id_string()[0] == '-') // Look for the - in 'c-1234' style IDs. 96 if (entity.id_string()[0] == '-') // Look for the - in 'c-1234' style IDs.
101 response->set_id_string(id_factory_.NewServerId().GetServerId()); 97 response->set_id_string(id_factory_.NewServerId().GetServerId());
102 else 98 else
103 response->set_id_string(entity.id_string()); 99 response->set_id_string(entity.id_string());
104 } 100 }
105 101
106 syncable::Directory* dir() { 102 syncable::Directory* dir() { return dir_maker_.directory(); }
107 return dir_maker_.directory();
108 }
109 103
110 TestIdFactory id_factory_; 104 TestIdFactory id_factory_;
111 105
112 // Used in construction of DirectoryTypeDebugInfoEmitters. 106 // Used in construction of DirectoryTypeDebugInfoEmitters.
113 base::ObserverList<TypeDebugInfoObserver> type_observers_; 107 base::ObserverList<TypeDebugInfoObserver> type_observers_;
114 108
115 private: 109 private:
116 base::MessageLoop loop_; // Neeed to initialize the directory. 110 base::MessageLoop loop_; // Neeed to initialize the directory.
117 TestDirectorySetterUpper dir_maker_; 111 TestDirectorySetterUpper dir_maker_;
118 }; 112 };
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 184
191 const sync_pb::CommitMessage& commit_message = message.commit(); 185 const sync_pb::CommitMessage& commit_message = message.commit();
192 186
193 std::set<syncable::Id> ids_for_commit; 187 std::set<syncable::Id> ids_for_commit;
194 ASSERT_EQ(3, commit_message.entries_size()); 188 ASSERT_EQ(3, commit_message.entries_size());
195 for (int i = 0; i < commit_message.entries_size(); ++i) { 189 for (int i = 0; i < commit_message.entries_size(); ++i) {
196 const sync_pb::SyncEntity& entity = commit_message.entries(i); 190 const sync_pb::SyncEntity& entity = commit_message.entries(i);
197 // The entities in this test have client-style IDs since they've never been 191 // The entities in this test have client-style IDs since they've never been
198 // committed before, so we must use CreateFromClientString to re-create them 192 // committed before, so we must use CreateFromClientString to re-create them
199 // from the commit message. 193 // from the commit message.
200 ids_for_commit.insert(syncable::Id::CreateFromClientString( 194 ids_for_commit.insert(
201 entity.id_string())); 195 syncable::Id::CreateFromClientString(entity.id_string()));
202 } 196 }
203 197
204 ASSERT_EQ(3U, ids_for_commit.size()); 198 ASSERT_EQ(3U, ids_for_commit.size());
205 { 199 {
206 syncable::ReadTransaction trans(FROM_HERE, dir()); 200 syncable::ReadTransaction trans(FROM_HERE, dir());
207 for (std::set<syncable::Id>::iterator it = ids_for_commit.begin(); 201 for (std::set<syncable::Id>::iterator it = ids_for_commit.begin();
208 it != ids_for_commit.end(); ++it) { 202 it != ids_for_commit.end(); ++it) {
209 SCOPED_TRACE(it->value()); 203 SCOPED_TRACE(it->value());
210 syncable::Entry entry(&trans, syncable::GET_BY_ID, *it); 204 syncable::Entry entry(&trans, syncable::GET_BY_ID, *it);
211 ASSERT_TRUE(entry.good()); 205 ASSERT_TRUE(entry.good());
(...skipping 22 matching lines...) Expand all
234 DirectoryTypeDebugInfoEmitter emitter(PREFERENCES, &type_observers_); 228 DirectoryTypeDebugInfoEmitter emitter(PREFERENCES, &type_observers_);
235 std::unique_ptr<DirectoryCommitContribution> pref_cc( 229 std::unique_ptr<DirectoryCommitContribution> pref_cc(
236 DirectoryCommitContribution::Build(dir(), PREFERENCES, 25, &emitter)); 230 DirectoryCommitContribution::Build(dir(), PREFERENCES, 25, &emitter));
237 ASSERT_TRUE(pref_cc); 231 ASSERT_TRUE(pref_cc);
238 232
239 sync_pb::ClientToServerMessage message; 233 sync_pb::ClientToServerMessage message;
240 pref_cc->AddToCommitMessage(&message); 234 pref_cc->AddToCommitMessage(&message);
241 235
242 const sync_pb::CommitMessage& commit_message = message.commit(); 236 const sync_pb::CommitMessage& commit_message = message.commit();
243 ASSERT_EQ(1, commit_message.entries_size()); 237 ASSERT_EQ(1, commit_message.entries_size());
244 EXPECT_TRUE( 238 EXPECT_TRUE(commit_message.entries(0).specifics().has_preference());
245 commit_message.entries(0).specifics().has_preference());
246 239
247 pref_cc->CleanUp(); 240 pref_cc->CleanUp();
248 } 241 }
249 242
250 // As ususal, bookmarks are special. Bookmark deletion is special. 243 // As ususal, bookmarks are special. Bookmark deletion is special.
251 // Deleted bookmarks include a valid "is folder" bit and their full specifics 244 // Deleted bookmarks include a valid "is folder" bit and their full specifics
252 // (especially the meta info, which is what server really wants). 245 // (especially the meta info, which is what server really wants).
253 TEST_F(DirectoryCommitContributionTest, DeletedBookmarksWithSpecifics) { 246 TEST_F(DirectoryCommitContributionTest, DeletedBookmarksWithSpecifics) {
254 int64_t bm1; 247 int64_t bm1;
255 { 248 {
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 int64_t art2_handle; 430 int64_t art2_handle;
438 int64_t art3_handle; 431 int64_t art3_handle;
439 { 432 {
440 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, dir()); 433 syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, dir());
441 434
442 // art1 has two attachments, both have been uploaded to the server. art1 is 435 // art1 has two attachments, both have been uploaded to the server. art1 is
443 // eligible to be committed. 436 // eligible to be committed.
444 sync_pb::AttachmentMetadata art1_attachments; 437 sync_pb::AttachmentMetadata art1_attachments;
445 AddAttachment(&art1_attachments, true /* is_on_server */); 438 AddAttachment(&art1_attachments, true /* is_on_server */);
446 AddAttachment(&art1_attachments, true /* is_on_server */); 439 AddAttachment(&art1_attachments, true /* is_on_server */);
447 art1_handle = CreateUnsyncedItemWithAttachments( 440 art1_handle = CreateUnsyncedItemWithAttachments(&trans, ARTICLES, "art1",
448 &trans, ARTICLES, "art1", art1_attachments); 441 art1_attachments);
449 442
450 // art2 has two attachments, one of which has been uploaded to the 443 // art2 has two attachments, one of which has been uploaded to the
451 // server. art2 is not eligible to be committed. 444 // server. art2 is not eligible to be committed.
452 sync_pb::AttachmentMetadata art2_attachments; 445 sync_pb::AttachmentMetadata art2_attachments;
453 AddAttachment(&art2_attachments, false /* is_on_server */); 446 AddAttachment(&art2_attachments, false /* is_on_server */);
454 AddAttachment(&art2_attachments, true /* is_on_server */); 447 AddAttachment(&art2_attachments, true /* is_on_server */);
455 art2_handle = CreateUnsyncedItemWithAttachments( 448 art2_handle = CreateUnsyncedItemWithAttachments(&trans, ARTICLES, "art2",
456 &trans, ARTICLES, "art2", art2_attachments); 449 art2_attachments);
457 450
458 // art3 has two attachments, neither of which have been uploaded to the 451 // art3 has two attachments, neither of which have been uploaded to the
459 // server. art2 is not eligible to be committed. 452 // server. art2 is not eligible to be committed.
460 sync_pb::AttachmentMetadata art3_attachments; 453 sync_pb::AttachmentMetadata art3_attachments;
461 AddAttachment(&art3_attachments, false /* is_on_server */); 454 AddAttachment(&art3_attachments, false /* is_on_server */);
462 AddAttachment(&art3_attachments, false /* is_on_server */); 455 AddAttachment(&art3_attachments, false /* is_on_server */);
463 art3_handle = CreateUnsyncedItemWithAttachments( 456 art3_handle = CreateUnsyncedItemWithAttachments(&trans, ARTICLES, "art3",
464 &trans, ARTICLES, "art3", art3_attachments); 457 art3_attachments);
465 } 458 }
466 459
467 DirectoryTypeDebugInfoEmitter emitter(ARTICLES, &type_observers_); 460 DirectoryTypeDebugInfoEmitter emitter(ARTICLES, &type_observers_);
468 std::unique_ptr<DirectoryCommitContribution> art_cc( 461 std::unique_ptr<DirectoryCommitContribution> art_cc(
469 DirectoryCommitContribution::Build(dir(), ARTICLES, 25, &emitter)); 462 DirectoryCommitContribution::Build(dir(), ARTICLES, 25, &emitter));
470 463
471 // Only art1 is ready. 464 // Only art1 is ready.
472 EXPECT_EQ(1U, art_cc->GetNumEntries()); 465 EXPECT_EQ(1U, art_cc->GetNumEntries());
473 466
474 sync_pb::ClientToServerMessage message; 467 sync_pb::ClientToServerMessage message;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 EXPECT_FALSE(a3.GetId().ServerKnows()); 499 EXPECT_FALSE(a3.GetId().ServerKnows());
507 EXPECT_FALSE(a3.GetSyncing()); 500 EXPECT_FALSE(a3.GetSyncing());
508 EXPECT_FALSE(a3.GetDirtySync()); 501 EXPECT_FALSE(a3.GetDirtySync());
509 EXPECT_EQ(0, a3.GetServerVersion()); 502 EXPECT_EQ(0, a3.GetServerVersion());
510 } 503 }
511 504
512 art_cc->CleanUp(); 505 art_cc->CleanUp();
513 } 506 }
514 507
515 } // namespace syncer 508 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698