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

Side by Side Diff: sync/notifier/chrome_invalidation_client_unittest.cc

Issue 10407014: Rename InvalidationVersionTracker to InvalidationStateTracker in preparation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 7 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/notifier/chrome_invalidation_client.cc ('k') | sync/notifier/invalidation_notifier.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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include <string> 5 #include <string>
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "google/cacheinvalidation/include/invalidation-client.h" 8 #include "google/cacheinvalidation/include/invalidation-client.h"
9 #include "google/cacheinvalidation/include/types.h" 9 #include "google/cacheinvalidation/include/types.h"
10 #include "google/cacheinvalidation/v2/types.pb.h" 10 #include "google/cacheinvalidation/v2/types.pb.h"
(...skipping 28 matching lines...) Expand all
39 MOCK_METHOD1(Unregister, void(const std::vector<invalidation::ObjectId>&)); 39 MOCK_METHOD1(Unregister, void(const std::vector<invalidation::ObjectId>&));
40 MOCK_METHOD1(Acknowledge, void(const invalidation::AckHandle&)); 40 MOCK_METHOD1(Acknowledge, void(const invalidation::AckHandle&));
41 }; 41 };
42 42
43 class MockListener : public ChromeInvalidationClient::Listener { 43 class MockListener : public ChromeInvalidationClient::Listener {
44 public: 44 public:
45 MOCK_METHOD1(OnInvalidate, void(const syncable::ModelTypePayloadMap&)); 45 MOCK_METHOD1(OnInvalidate, void(const syncable::ModelTypePayloadMap&));
46 MOCK_METHOD1(OnSessionStatusChanged, void(bool)); 46 MOCK_METHOD1(OnSessionStatusChanged, void(bool));
47 }; 47 };
48 48
49 class MockInvalidationVersionTracker 49 class MockInvalidationStateTracker
50 : public InvalidationVersionTracker, 50 : public InvalidationStateTracker,
51 public base::SupportsWeakPtr<MockInvalidationVersionTracker> { 51 public base::SupportsWeakPtr<MockInvalidationStateTracker> {
52 public: 52 public:
53 MOCK_CONST_METHOD0(GetAllMaxVersions, InvalidationVersionMap()); 53 MOCK_CONST_METHOD0(GetAllMaxVersions, InvalidationVersionMap());
54 MOCK_METHOD2(SetMaxVersion, void(syncable::ModelType, int64)); 54 MOCK_METHOD2(SetMaxVersion, void(syncable::ModelType, int64));
55 }; 55 };
56 56
57 class MockStateWriter : public StateWriter { 57 class MockStateWriter : public StateWriter {
58 public: 58 public:
59 MOCK_METHOD1(WriteState, void(const std::string&)); 59 MOCK_METHOD1(WriteState, void(const std::string&));
60 }; 60 };
61 61
62 } // namespace 62 } // namespace
63 63
64 class ChromeInvalidationClientTest : public testing::Test { 64 class ChromeInvalidationClientTest : public testing::Test {
65 protected: 65 protected:
66 virtual void SetUp() { 66 virtual void SetUp() {
67 client_.Start(kClientId, kClientInfo, kState, 67 client_.Start(kClientId, kClientInfo, kState,
68 InvalidationVersionMap(), 68 InvalidationVersionMap(),
69 browser_sync::MakeWeakHandle( 69 browser_sync::MakeWeakHandle(
70 mock_invalidation_version_tracker_.AsWeakPtr()), 70 mock_invalidation_state_tracker_.AsWeakPtr()),
71 &mock_listener_, &mock_state_writer_, 71 &mock_listener_, &mock_state_writer_,
72 fake_base_task_.AsWeakPtr()); 72 fake_base_task_.AsWeakPtr());
73 } 73 }
74 74
75 virtual void TearDown() { 75 virtual void TearDown() {
76 // client_.Stop() stops the invalidation scheduler, which deletes any 76 // client_.Stop() stops the invalidation scheduler, which deletes any
77 // pending tasks without running them. Some tasks "run and delete" another 77 // pending tasks without running them. Some tasks "run and delete" another
78 // task, so they must be run in order to avoid leaking the inner task. 78 // task, so they must be run in order to avoid leaking the inner task.
79 // client_.Stop() does not schedule any tasks, so it's both necessary and 79 // client_.Stop() does not schedule any tasks, so it's both necessary and
80 // sufficient to drain the task queue before calling it. 80 // sufficient to drain the task queue before calling it.
(...skipping 10 matching lines...) Expand all
91 invalidation::Invalidation inv; 91 invalidation::Invalidation inv;
92 if (payload) { 92 if (payload) {
93 inv = invalidation::Invalidation(object_id, version, payload); 93 inv = invalidation::Invalidation(object_id, version, payload);
94 } else { 94 } else {
95 inv = invalidation::Invalidation(object_id, version); 95 inv = invalidation::Invalidation(object_id, version);
96 } 96 }
97 invalidation::AckHandle ack_handle("fakedata"); 97 invalidation::AckHandle ack_handle("fakedata");
98 EXPECT_CALL(mock_invalidation_client_, Acknowledge(ack_handle)); 98 EXPECT_CALL(mock_invalidation_client_, Acknowledge(ack_handle));
99 client_.Invalidate(&mock_invalidation_client_, inv, ack_handle); 99 client_.Invalidate(&mock_invalidation_client_, inv, ack_handle);
100 // Pump message loop to trigger 100 // Pump message loop to trigger
101 // InvalidationVersionTracker::SetMaxVersion(). 101 // InvalidationStateTracker::SetMaxVersion().
102 message_loop_.RunAllPending(); 102 message_loop_.RunAllPending();
103 } 103 }
104 104
105 // |payload| can be NULL, but not |type_name|. 105 // |payload| can be NULL, but not |type_name|.
106 void FireInvalidateUnknownVersion(const char* type_name) { 106 void FireInvalidateUnknownVersion(const char* type_name) {
107 const invalidation::ObjectId object_id( 107 const invalidation::ObjectId object_id(
108 ipc::invalidation::ObjectSource::CHROME_SYNC, type_name); 108 ipc::invalidation::ObjectSource::CHROME_SYNC, type_name);
109 109
110 invalidation::AckHandle ack_handle("fakedata"); 110 invalidation::AckHandle ack_handle("fakedata");
111 EXPECT_CALL(mock_invalidation_client_, Acknowledge(ack_handle)); 111 EXPECT_CALL(mock_invalidation_client_, Acknowledge(ack_handle));
112 client_.InvalidateUnknownVersion(&mock_invalidation_client_, object_id, 112 client_.InvalidateUnknownVersion(&mock_invalidation_client_, object_id,
113 ack_handle); 113 ack_handle);
114 } 114 }
115 115
116 void FireInvalidateAll() { 116 void FireInvalidateAll() {
117 invalidation::AckHandle ack_handle("fakedata"); 117 invalidation::AckHandle ack_handle("fakedata");
118 EXPECT_CALL(mock_invalidation_client_, Acknowledge(ack_handle)); 118 EXPECT_CALL(mock_invalidation_client_, Acknowledge(ack_handle));
119 client_.InvalidateAll(&mock_invalidation_client_, ack_handle); 119 client_.InvalidateAll(&mock_invalidation_client_, ack_handle);
120 } 120 }
121 121
122 MessageLoop message_loop_; 122 MessageLoop message_loop_;
123 StrictMock<MockListener> mock_listener_; 123 StrictMock<MockListener> mock_listener_;
124 StrictMock<MockInvalidationVersionTracker> 124 StrictMock<MockInvalidationStateTracker>
125 mock_invalidation_version_tracker_; 125 mock_invalidation_state_tracker_;
126 StrictMock<MockStateWriter> mock_state_writer_; 126 StrictMock<MockStateWriter> mock_state_writer_;
127 StrictMock<MockInvalidationClient> mock_invalidation_client_; 127 StrictMock<MockInvalidationClient> mock_invalidation_client_;
128 notifier::FakeBaseTask fake_base_task_; 128 notifier::FakeBaseTask fake_base_task_;
129 ChromeInvalidationClient client_; 129 ChromeInvalidationClient client_;
130 }; 130 };
131 131
132 namespace { 132 namespace {
133 133
134 syncable::ModelTypePayloadMap MakeMap(syncable::ModelType model_type, 134 syncable::ModelTypePayloadMap MakeMap(syncable::ModelType model_type,
135 const std::string& payload) { 135 const std::string& payload) {
(...skipping 13 matching lines...) Expand all
149 syncable::ModelTypeSet types(syncable::BOOKMARKS, syncable::APPS); 149 syncable::ModelTypeSet types(syncable::BOOKMARKS, syncable::APPS);
150 client_.RegisterTypes(types); 150 client_.RegisterTypes(types);
151 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); 151 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, "")));
152 FireInvalidate("bad", 1, NULL); 152 FireInvalidate("bad", 1, NULL);
153 message_loop_.RunAllPending(); 153 message_loop_.RunAllPending();
154 } 154 }
155 155
156 TEST_F(ChromeInvalidationClientTest, InvalidateNoPayload) { 156 TEST_F(ChromeInvalidationClientTest, InvalidateNoPayload) {
157 EXPECT_CALL(mock_listener_, 157 EXPECT_CALL(mock_listener_,
158 OnInvalidate(MakeMap(syncable::BOOKMARKS, ""))); 158 OnInvalidate(MakeMap(syncable::BOOKMARKS, "")));
159 EXPECT_CALL(mock_invalidation_version_tracker_, 159 EXPECT_CALL(mock_invalidation_state_tracker_,
160 SetMaxVersion(syncable::BOOKMARKS, 1)); 160 SetMaxVersion(syncable::BOOKMARKS, 1));
161 FireInvalidate("BOOKMARK", 1, NULL); 161 FireInvalidate("BOOKMARK", 1, NULL);
162 } 162 }
163 163
164 TEST_F(ChromeInvalidationClientTest, InvalidateWithPayload) { 164 TEST_F(ChromeInvalidationClientTest, InvalidateWithPayload) {
165 EXPECT_CALL(mock_listener_, 165 EXPECT_CALL(mock_listener_,
166 OnInvalidate(MakeMap(syncable::PREFERENCES, "payload"))); 166 OnInvalidate(MakeMap(syncable::PREFERENCES, "payload")));
167 EXPECT_CALL(mock_invalidation_version_tracker_, 167 EXPECT_CALL(mock_invalidation_state_tracker_,
168 SetMaxVersion(syncable::PREFERENCES, 1)); 168 SetMaxVersion(syncable::PREFERENCES, 1));
169 FireInvalidate("PREFERENCE", 1, "payload"); 169 FireInvalidate("PREFERENCE", 1, "payload");
170 } 170 }
171 171
172 TEST_F(ChromeInvalidationClientTest, InvalidateVersion) { 172 TEST_F(ChromeInvalidationClientTest, InvalidateVersion) {
173 using ::testing::Mock; 173 using ::testing::Mock;
174 174
175 EXPECT_CALL(mock_listener_, 175 EXPECT_CALL(mock_listener_,
176 OnInvalidate(MakeMap(syncable::APPS, ""))); 176 OnInvalidate(MakeMap(syncable::APPS, "")));
177 EXPECT_CALL(mock_invalidation_version_tracker_, 177 EXPECT_CALL(mock_invalidation_state_tracker_,
178 SetMaxVersion(syncable::APPS, 1)); 178 SetMaxVersion(syncable::APPS, 1));
179 179
180 // Should trigger. 180 // Should trigger.
181 FireInvalidate("APP", 1, NULL); 181 FireInvalidate("APP", 1, NULL);
182 182
183 Mock::VerifyAndClearExpectations(&mock_listener_); 183 Mock::VerifyAndClearExpectations(&mock_listener_);
184 184
185 // Should be dropped. 185 // Should be dropped.
186 FireInvalidate("APP", 1, NULL); 186 FireInvalidate("APP", 1, NULL);
187 } 187 }
(...skipping 12 matching lines...) Expand all
200 using ::testing::Mock; 200 using ::testing::Mock;
201 201
202 syncable::ModelTypeSet types(syncable::BOOKMARKS, syncable::APPS); 202 syncable::ModelTypeSet types(syncable::BOOKMARKS, syncable::APPS);
203 client_.RegisterTypes(types); 203 client_.RegisterTypes(types);
204 204
205 EXPECT_CALL(mock_listener_, 205 EXPECT_CALL(mock_listener_,
206 OnInvalidate(MakeMap(syncable::APPS, ""))); 206 OnInvalidate(MakeMap(syncable::APPS, "")));
207 EXPECT_CALL(mock_listener_, 207 EXPECT_CALL(mock_listener_,
208 OnInvalidate(MakeMap(syncable::EXTENSIONS, ""))); 208 OnInvalidate(MakeMap(syncable::EXTENSIONS, "")));
209 209
210 EXPECT_CALL(mock_invalidation_version_tracker_, 210 EXPECT_CALL(mock_invalidation_state_tracker_,
211 SetMaxVersion(syncable::APPS, 3)); 211 SetMaxVersion(syncable::APPS, 3));
212 EXPECT_CALL(mock_invalidation_version_tracker_, 212 EXPECT_CALL(mock_invalidation_state_tracker_,
213 SetMaxVersion(syncable::EXTENSIONS, 2)); 213 SetMaxVersion(syncable::EXTENSIONS, 2));
214 214
215 // Should trigger both. 215 // Should trigger both.
216 FireInvalidate("APP", 3, NULL); 216 FireInvalidate("APP", 3, NULL);
217 FireInvalidate("EXTENSION", 2, NULL); 217 FireInvalidate("EXTENSION", 2, NULL);
218 218
219 Mock::VerifyAndClearExpectations(&mock_listener_); 219 Mock::VerifyAndClearExpectations(&mock_listener_);
220 Mock::VerifyAndClearExpectations(&mock_invalidation_version_tracker_); 220 Mock::VerifyAndClearExpectations(&mock_invalidation_state_tracker_);
221 221
222 // Should both be dropped. 222 // Should both be dropped.
223 FireInvalidate("APP", 1, NULL); 223 FireInvalidate("APP", 1, NULL);
224 FireInvalidate("EXTENSION", 1, NULL); 224 FireInvalidate("EXTENSION", 1, NULL);
225 225
226 Mock::VerifyAndClearExpectations(&mock_listener_); 226 Mock::VerifyAndClearExpectations(&mock_listener_);
227 Mock::VerifyAndClearExpectations(&mock_invalidation_version_tracker_); 227 Mock::VerifyAndClearExpectations(&mock_invalidation_state_tracker_);
228 228
229 // InvalidateAll shouldn't change any version state. 229 // InvalidateAll shouldn't change any version state.
230 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); 230 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, "")));
231 FireInvalidateAll(); 231 FireInvalidateAll();
232 232
233 Mock::VerifyAndClearExpectations(&mock_listener_); 233 Mock::VerifyAndClearExpectations(&mock_listener_);
234 Mock::VerifyAndClearExpectations(&mock_invalidation_version_tracker_); 234 Mock::VerifyAndClearExpectations(&mock_invalidation_state_tracker_);
235 235
236 EXPECT_CALL(mock_listener_, 236 EXPECT_CALL(mock_listener_,
237 OnInvalidate(MakeMap(syncable::PREFERENCES, ""))); 237 OnInvalidate(MakeMap(syncable::PREFERENCES, "")));
238 EXPECT_CALL(mock_listener_, 238 EXPECT_CALL(mock_listener_,
239 OnInvalidate(MakeMap(syncable::EXTENSIONS, ""))); 239 OnInvalidate(MakeMap(syncable::EXTENSIONS, "")));
240 EXPECT_CALL(mock_listener_, 240 EXPECT_CALL(mock_listener_,
241 OnInvalidate(MakeMap(syncable::APPS, ""))); 241 OnInvalidate(MakeMap(syncable::APPS, "")));
242 242
243 EXPECT_CALL(mock_invalidation_version_tracker_, 243 EXPECT_CALL(mock_invalidation_state_tracker_,
244 SetMaxVersion(syncable::PREFERENCES, 5)); 244 SetMaxVersion(syncable::PREFERENCES, 5));
245 EXPECT_CALL(mock_invalidation_version_tracker_, 245 EXPECT_CALL(mock_invalidation_state_tracker_,
246 SetMaxVersion(syncable::EXTENSIONS, 3)); 246 SetMaxVersion(syncable::EXTENSIONS, 3));
247 EXPECT_CALL(mock_invalidation_version_tracker_, 247 EXPECT_CALL(mock_invalidation_state_tracker_,
248 SetMaxVersion(syncable::APPS, 4)); 248 SetMaxVersion(syncable::APPS, 4));
249 249
250 // Should trigger all three. 250 // Should trigger all three.
251 FireInvalidate("PREFERENCE", 5, NULL); 251 FireInvalidate("PREFERENCE", 5, NULL);
252 FireInvalidate("EXTENSION", 3, NULL); 252 FireInvalidate("EXTENSION", 3, NULL);
253 FireInvalidate("APP", 4, NULL); 253 FireInvalidate("APP", 4, NULL);
254 } 254 }
255 255
256 TEST_F(ChromeInvalidationClientTest, InvalidateAll) { 256 TEST_F(ChromeInvalidationClientTest, InvalidateAll) {
257 syncable::ModelTypeSet types(syncable::PREFERENCES, syncable::EXTENSIONS); 257 syncable::ModelTypeSet types(syncable::PREFERENCES, syncable::EXTENSIONS);
258 client_.RegisterTypes(types); 258 client_.RegisterTypes(types);
259 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); 259 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, "")));
260 FireInvalidateAll(); 260 FireInvalidateAll();
261 } 261 }
262 262
263 TEST_F(ChromeInvalidationClientTest, RegisterTypes) { 263 TEST_F(ChromeInvalidationClientTest, RegisterTypes) {
264 syncable::ModelTypeSet types(syncable::PREFERENCES, syncable::EXTENSIONS); 264 syncable::ModelTypeSet types(syncable::PREFERENCES, syncable::EXTENSIONS);
265 client_.RegisterTypes(types); 265 client_.RegisterTypes(types);
266 // Registered types should be preserved across Stop/Start. 266 // Registered types should be preserved across Stop/Start.
267 TearDown(); 267 TearDown();
268 SetUp(); 268 SetUp();
269 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); 269 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, "")));
270 FireInvalidateAll(); 270 FireInvalidateAll();
271 } 271 }
272 272
273 // TODO(akalin): Flesh out unit tests. 273 // TODO(akalin): Flesh out unit tests.
274 274
275 } // namespace sync_notifier 275 } // namespace sync_notifier
OLDNEW
« no previous file with comments | « sync/notifier/chrome_invalidation_client.cc ('k') | sync/notifier/invalidation_notifier.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698