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

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

Issue 351523003: sync: Mass rename of non-blocking sync classes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: const ref some smart pointers Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « sync/engine/entity_tracker.cc ('k') | sync/engine/model_thread_sync_entity.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Copyright 2014 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
6 #include "sync/engine/sync_thread_sync_entity.h" 6 #include "sync/engine/entity_tracker.h"
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "sync/internal_api/public/base/model_type.h" 10 #include "sync/internal_api/public/base/model_type.h"
11 #include "sync/syncable/syncable_util.h" 11 #include "sync/syncable/syncable_util.h"
12 #include "sync/util/time.h" 12 #include "sync/util/time.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace syncer { 15 namespace syncer {
16 16
17 // Some simple tests for the SyncThreadSyncEntity. 17 // Some simple tests for the EntityTracker.
18 // 18 //
19 // The SyncThreadSyncEntity is an implementation detail of the 19 // The EntityTracker is an implementation detail of the ModelTypeSyncWorker.
20 // NonBlockingTypeProcessorCore. As such, it doesn't make much sense to test 20 // As such, it doesn't make much sense to test it exhaustively, since it
21 // it exhaustively, since it already gets a lot of test coverage from the 21 // already gets a lot of test coverage from the ModelTypeSyncWorker unit tests.
22 // NonBlockingTypeProcessorCore unit tests.
23 // 22 //
24 // These tests are intended as a basic sanity check. Anything more complicated 23 // These tests are intended as a basic sanity check. Anything more complicated
25 // would be redundant. 24 // would be redundant.
26 class SyncThreadSyncEntityTest : public ::testing::Test { 25 class EntityTrackerTest : public ::testing::Test {
27 public: 26 public:
28 SyncThreadSyncEntityTest() 27 EntityTrackerTest()
29 : kServerId("ServerID"), 28 : kServerId("ServerID"),
30 kClientTag("some.sample.tag"), 29 kClientTag("some.sample.tag"),
31 kClientTagHash(syncable::GenerateSyncableHash(PREFERENCES, kClientTag)), 30 kClientTagHash(syncable::GenerateSyncableHash(PREFERENCES, kClientTag)),
32 kCtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(10)), 31 kCtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(10)),
33 kMtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(20)) { 32 kMtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(20)) {
34 specifics.mutable_preference()->set_name(kClientTag); 33 specifics.mutable_preference()->set_name(kClientTag);
35 specifics.mutable_preference()->set_value("pref.value"); 34 specifics.mutable_preference()->set_value("pref.value");
36 } 35 }
37 36
38 virtual ~SyncThreadSyncEntityTest() {} 37 virtual ~EntityTrackerTest() {}
39 38
40 const std::string kServerId; 39 const std::string kServerId;
41 const std::string kClientTag; 40 const std::string kClientTag;
42 const std::string kClientTagHash; 41 const std::string kClientTagHash;
43 const base::Time kCtime; 42 const base::Time kCtime;
44 const base::Time kMtime; 43 const base::Time kMtime;
45 sync_pb::EntitySpecifics specifics; 44 sync_pb::EntitySpecifics specifics;
46 }; 45 };
47 46
48 // Construct a new entity from a server update. Then receive another update. 47 // Construct a new entity from a server update. Then receive another update.
49 TEST_F(SyncThreadSyncEntityTest, FromServerUpdate) { 48 TEST_F(EntityTrackerTest, FromServerUpdate) {
50 scoped_ptr<SyncThreadSyncEntity> entity( 49 scoped_ptr<EntityTracker> entity(
51 SyncThreadSyncEntity::FromServerUpdate(kServerId, kClientTagHash, 10)); 50 EntityTracker::FromServerUpdate(kServerId, kClientTagHash, 10));
52 EXPECT_FALSE(entity->IsCommitPending()); 51 EXPECT_FALSE(entity->IsCommitPending());
53 52
54 entity->ReceiveUpdate(20); 53 entity->ReceiveUpdate(20);
55 EXPECT_FALSE(entity->IsCommitPending()); 54 EXPECT_FALSE(entity->IsCommitPending());
56 } 55 }
57 56
58 // Construct a new entity from a commit request. Then serialize it. 57 // Construct a new entity from a commit request. Then serialize it.
59 TEST_F(SyncThreadSyncEntityTest, FromCommitRequest) { 58 TEST_F(EntityTrackerTest, FromCommitRequest) {
60 scoped_ptr<SyncThreadSyncEntity> entity( 59 scoped_ptr<EntityTracker> entity(
61 SyncThreadSyncEntity::FromCommitRequest(kServerId, 60 EntityTracker::FromCommitRequest(kServerId,
62 kClientTagHash, 61 kClientTagHash,
63 22, 62 22,
64 33, 63 33,
65 kCtime, 64 kCtime,
66 kMtime, 65 kMtime,
67 kClientTag, 66 kClientTag,
68 false, 67 false,
69 specifics)); 68 specifics));
70 69
71 ASSERT_TRUE(entity->IsCommitPending()); 70 ASSERT_TRUE(entity->IsCommitPending());
72 sync_pb::SyncEntity pb_entity; 71 sync_pb::SyncEntity pb_entity;
73 int64 sequence_number = 0; 72 int64 sequence_number = 0;
74 entity->PrepareCommitProto(&pb_entity, &sequence_number); 73 entity->PrepareCommitProto(&pb_entity, &sequence_number);
75 EXPECT_EQ(22, sequence_number); 74 EXPECT_EQ(22, sequence_number);
76 EXPECT_EQ(kServerId, pb_entity.id_string()); 75 EXPECT_EQ(kServerId, pb_entity.id_string());
77 EXPECT_EQ(kClientTagHash, pb_entity.client_defined_unique_tag()); 76 EXPECT_EQ(kClientTagHash, pb_entity.client_defined_unique_tag());
78 EXPECT_EQ(33, pb_entity.version()); 77 EXPECT_EQ(33, pb_entity.version());
79 EXPECT_EQ(kCtime, ProtoTimeToTime(pb_entity.ctime())); 78 EXPECT_EQ(kCtime, ProtoTimeToTime(pb_entity.ctime()));
80 EXPECT_EQ(kMtime, ProtoTimeToTime(pb_entity.mtime())); 79 EXPECT_EQ(kMtime, ProtoTimeToTime(pb_entity.mtime()));
81 EXPECT_FALSE(pb_entity.deleted()); 80 EXPECT_FALSE(pb_entity.deleted());
82 EXPECT_EQ(specifics.preference().name(), 81 EXPECT_EQ(specifics.preference().name(),
83 pb_entity.specifics().preference().name()); 82 pb_entity.specifics().preference().name());
84 EXPECT_EQ(specifics.preference().value(), 83 EXPECT_EQ(specifics.preference().value(),
85 pb_entity.specifics().preference().value()); 84 pb_entity.specifics().preference().value());
86 } 85 }
87 86
88 // Start with a server initiated entity. Commit over top of it. 87 // Start with a server initiated entity. Commit over top of it.
89 TEST_F(SyncThreadSyncEntityTest, RequestCommit) { 88 TEST_F(EntityTrackerTest, RequestCommit) {
90 scoped_ptr<SyncThreadSyncEntity> entity( 89 scoped_ptr<EntityTracker> entity(
91 SyncThreadSyncEntity::FromServerUpdate(kServerId, kClientTagHash, 10)); 90 EntityTracker::FromServerUpdate(kServerId, kClientTagHash, 10));
92 91
93 entity->RequestCommit(kServerId, 92 entity->RequestCommit(kServerId,
94 kClientTagHash, 93 kClientTagHash,
95 1, 94 1,
96 10, 95 10,
97 kCtime, 96 kCtime,
98 kMtime, 97 kMtime,
99 kClientTag, 98 kClientTag,
100 false, 99 false,
101 specifics); 100 specifics);
102 101
103 EXPECT_TRUE(entity->IsCommitPending()); 102 EXPECT_TRUE(entity->IsCommitPending());
104 } 103 }
105 104
106 // Start with a server initiated entity. Fail to request a commit because of 105 // Start with a server initiated entity. Fail to request a commit because of
107 // an out of date base version. 106 // an out of date base version.
108 TEST_F(SyncThreadSyncEntityTest, RequestCommitFailure) { 107 TEST_F(EntityTrackerTest, RequestCommitFailure) {
109 scoped_ptr<SyncThreadSyncEntity> entity( 108 scoped_ptr<EntityTracker> entity(
110 SyncThreadSyncEntity::FromServerUpdate(kServerId, kClientTagHash, 10)); 109 EntityTracker::FromServerUpdate(kServerId, kClientTagHash, 10));
111 EXPECT_FALSE(entity->IsCommitPending()); 110 EXPECT_FALSE(entity->IsCommitPending());
112 111
113 entity->RequestCommit(kServerId, 112 entity->RequestCommit(kServerId,
114 kClientTagHash, 113 kClientTagHash,
115 23, 114 23,
116 5, // Version 5 < 10 115 5, // Version 5 < 10
117 kCtime, 116 kCtime,
118 kMtime, 117 kMtime,
119 kClientTag, 118 kClientTag,
120 false, 119 false,
121 specifics); 120 specifics);
122 EXPECT_FALSE(entity->IsCommitPending()); 121 EXPECT_FALSE(entity->IsCommitPending());
123 } 122 }
124 123
125 // Start with a pending commit. Clobber it with an incoming update. 124 // Start with a pending commit. Clobber it with an incoming update.
126 TEST_F(SyncThreadSyncEntityTest, UpdateClobbersCommit) { 125 TEST_F(EntityTrackerTest, UpdateClobbersCommit) {
127 scoped_ptr<SyncThreadSyncEntity> entity( 126 scoped_ptr<EntityTracker> entity(
128 SyncThreadSyncEntity::FromCommitRequest(kServerId, 127 EntityTracker::FromCommitRequest(kServerId,
129 kClientTagHash, 128 kClientTagHash,
130 22, 129 22,
131 33, 130 33,
132 kCtime, 131 kCtime,
133 kMtime, 132 kMtime,
134 kClientTag, 133 kClientTag,
135 false, 134 false,
136 specifics)); 135 specifics));
137 136
138 EXPECT_TRUE(entity->IsCommitPending()); 137 EXPECT_TRUE(entity->IsCommitPending());
139 138
140 entity->ReceiveUpdate(400); // Version 400 > 33. 139 entity->ReceiveUpdate(400); // Version 400 > 33.
141 EXPECT_FALSE(entity->IsCommitPending()); 140 EXPECT_FALSE(entity->IsCommitPending());
142 } 141 }
143 142
144 // Start with a pending commit. Send it a reflected update that 143 // Start with a pending commit. Send it a reflected update that
145 // will not override the in-progress commit. 144 // will not override the in-progress commit.
146 TEST_F(SyncThreadSyncEntityTest, ReflectedUpdateDoesntClobberCommit) { 145 TEST_F(EntityTrackerTest, ReflectedUpdateDoesntClobberCommit) {
147 scoped_ptr<SyncThreadSyncEntity> entity( 146 scoped_ptr<EntityTracker> entity(
148 SyncThreadSyncEntity::FromCommitRequest(kServerId, 147 EntityTracker::FromCommitRequest(kServerId,
149 kClientTagHash, 148 kClientTagHash,
150 22, 149 22,
151 33, 150 33,
152 kCtime, 151 kCtime,
153 kMtime, 152 kMtime,
154 kClientTag, 153 kClientTag,
155 false, 154 false,
156 specifics)); 155 specifics));
157 156
158 EXPECT_TRUE(entity->IsCommitPending()); 157 EXPECT_TRUE(entity->IsCommitPending());
159 158
160 entity->ReceiveUpdate(33); // Version 33 == 33. 159 entity->ReceiveUpdate(33); // Version 33 == 33.
161 EXPECT_TRUE(entity->IsCommitPending()); 160 EXPECT_TRUE(entity->IsCommitPending());
162 } 161 }
163 162
164 } // namespace syncer 163 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/entity_tracker.cc ('k') | sync/engine/model_thread_sync_entity.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698