| OLD | NEW |
| 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 "sync/notifier/p2p_invalidator.h" | 5 #include "sync/notifier/p2p_invalidator.h" |
| 6 | 6 |
| 7 #include <cstddef> | 7 #include <cstddef> |
| 8 | 8 |
| 9 #include "jingle/notifier/listener/fake_push_client.h" | 9 #include "jingle/notifier/listener/fake_push_client.h" |
| 10 #include "sync/internal_api/public/base/model_type.h" | 10 #include "sync/internal_api/public/base/model_type.h" |
| 11 #include "sync/internal_api/public/base/model_type_state_map.h" | 11 #include "sync/internal_api/public/base/model_type_invalidation_map.h" |
| 12 #include "sync/notifier/fake_invalidation_handler.h" | 12 #include "sync/notifier/fake_invalidation_handler.h" |
| 13 #include "sync/notifier/invalidator_test_template.h" | 13 #include "sync/notifier/invalidator_test_template.h" |
| 14 #include "sync/notifier/object_id_state_map_test_util.h" | 14 #include "sync/notifier/object_id_invalidation_map_test_util.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 16 |
| 17 namespace syncer { | 17 namespace syncer { |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 class P2PInvalidatorTestDelegate { | 21 class P2PInvalidatorTestDelegate { |
| 22 public: | 22 public: |
| 23 P2PInvalidatorTestDelegate() : fake_push_client_(NULL) {} | 23 P2PInvalidatorTestDelegate() : fake_push_client_(NULL) {} |
| 24 | 24 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 } | 57 } |
| 58 | 58 |
| 59 void TriggerOnInvalidatorStateChange(InvalidatorState state) { | 59 void TriggerOnInvalidatorStateChange(InvalidatorState state) { |
| 60 if (state == INVALIDATIONS_ENABLED) { | 60 if (state == INVALIDATIONS_ENABLED) { |
| 61 fake_push_client_->EnableNotifications(); | 61 fake_push_client_->EnableNotifications(); |
| 62 } else { | 62 } else { |
| 63 fake_push_client_->DisableNotifications(ToNotifierReasonForTest(state)); | 63 fake_push_client_->DisableNotifications(ToNotifierReasonForTest(state)); |
| 64 } | 64 } |
| 65 } | 65 } |
| 66 | 66 |
| 67 void TriggerOnIncomingInvalidation(const ObjectIdStateMap& id_state_map, | 67 void TriggerOnIncomingInvalidation( |
| 68 IncomingInvalidationSource source) { | 68 const ObjectIdInvalidationMap& invalidation_map, |
| 69 IncomingInvalidationSource source) { |
| 69 const P2PNotificationData notification_data( | 70 const P2PNotificationData notification_data( |
| 70 "", NOTIFY_ALL, id_state_map, source); | 71 "", NOTIFY_ALL, invalidation_map, source); |
| 71 notifier::Notification notification; | 72 notifier::Notification notification; |
| 72 notification.channel = kSyncP2PNotificationChannel; | 73 notification.channel = kSyncP2PNotificationChannel; |
| 73 notification.data = notification_data.ToString(); | 74 notification.data = notification_data.ToString(); |
| 74 fake_push_client_->SimulateIncomingNotification(notification); | 75 fake_push_client_->SimulateIncomingNotification(notification); |
| 75 } | 76 } |
| 76 | 77 |
| 77 static bool InvalidatorHandlesDeprecatedState() { | 78 static bool InvalidatorHandlesDeprecatedState() { |
| 78 return false; | 79 return false; |
| 79 } | 80 } |
| 80 | 81 |
| 81 private: | 82 private: |
| 82 // Owned by |invalidator_|. | 83 // Owned by |invalidator_|. |
| 83 notifier::FakePushClient* fake_push_client_; | 84 notifier::FakePushClient* fake_push_client_; |
| 84 scoped_ptr<P2PInvalidator> invalidator_; | 85 scoped_ptr<P2PInvalidator> invalidator_; |
| 85 }; | 86 }; |
| 86 | 87 |
| 87 class P2PInvalidatorTest : public testing::Test { | 88 class P2PInvalidatorTest : public testing::Test { |
| 88 protected: | 89 protected: |
| 89 P2PInvalidatorTest() | 90 P2PInvalidatorTest() |
| 90 : next_sent_notification_to_reflect_(0) { | 91 : next_sent_notification_to_reflect_(0) { |
| 91 delegate_.CreateInvalidator("fake_state", | 92 delegate_.CreateInvalidator("fake_state", |
| 92 base::WeakPtr<InvalidationStateTracker>()); | 93 base::WeakPtr<InvalidationStateTracker>()); |
| 93 delegate_.GetInvalidator()->RegisterHandler(&fake_handler_); | 94 delegate_.GetInvalidator()->RegisterHandler(&fake_handler_); |
| 94 } | 95 } |
| 95 | 96 |
| 96 virtual ~P2PInvalidatorTest() { | 97 virtual ~P2PInvalidatorTest() { |
| 97 delegate_.GetInvalidator()->UnregisterHandler(&fake_handler_); | 98 delegate_.GetInvalidator()->UnregisterHandler(&fake_handler_); |
| 98 } | 99 } |
| 99 | 100 |
| 100 ModelTypeStateMap MakeStateMap(ModelTypeSet types) { | 101 ModelTypeInvalidationMap MakeInvalidationMap(ModelTypeSet types) { |
| 101 return ModelTypeSetToStateMap(types, std::string()); | 102 return ModelTypeSetToInvalidationMap(types, std::string()); |
| 102 } | 103 } |
| 103 | 104 |
| 104 // Simulate receiving all the notifications we sent out since last | 105 // Simulate receiving all the notifications we sent out since last |
| 105 // time this was called. | 106 // time this was called. |
| 106 void ReflectSentNotifications() { | 107 void ReflectSentNotifications() { |
| 107 const std::vector<notifier::Notification>& sent_notifications = | 108 const std::vector<notifier::Notification>& sent_notifications = |
| 108 delegate_.GetPushClient()->sent_notifications(); | 109 delegate_.GetPushClient()->sent_notifications(); |
| 109 for(size_t i = next_sent_notification_to_reflect_; | 110 for(size_t i = next_sent_notification_to_reflect_; |
| 110 i < sent_notifications.size(); ++i) { | 111 i < sent_notifications.size(); ++i) { |
| 111 delegate_.GetInvalidator()->OnIncomingNotification(sent_notifications[i]); | 112 delegate_.GetInvalidator()->OnIncomingNotification(sent_notifications[i]); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 129 EXPECT_FALSE(target_str.empty()); | 130 EXPECT_FALSE(target_str.empty()); |
| 130 EXPECT_EQ(target, P2PNotificationTargetFromString(target_str)); | 131 EXPECT_EQ(target, P2PNotificationTargetFromString(target_str)); |
| 131 } | 132 } |
| 132 EXPECT_EQ(NOTIFY_SELF, P2PNotificationTargetFromString("unknown")); | 133 EXPECT_EQ(NOTIFY_SELF, P2PNotificationTargetFromString("unknown")); |
| 133 } | 134 } |
| 134 | 135 |
| 135 // Make sure notification targeting works correctly. | 136 // Make sure notification targeting works correctly. |
| 136 TEST_F(P2PInvalidatorTest, P2PNotificationDataIsTargeted) { | 137 TEST_F(P2PInvalidatorTest, P2PNotificationDataIsTargeted) { |
| 137 { | 138 { |
| 138 const P2PNotificationData notification_data( | 139 const P2PNotificationData notification_data( |
| 139 "sender", NOTIFY_SELF, ObjectIdStateMap(), REMOTE_INVALIDATION); | 140 "sender", NOTIFY_SELF, ObjectIdInvalidationMap(), REMOTE_INVALIDATION); |
| 140 EXPECT_TRUE(notification_data.IsTargeted("sender")); | 141 EXPECT_TRUE(notification_data.IsTargeted("sender")); |
| 141 EXPECT_FALSE(notification_data.IsTargeted("other1")); | 142 EXPECT_FALSE(notification_data.IsTargeted("other1")); |
| 142 EXPECT_FALSE(notification_data.IsTargeted("other2")); | 143 EXPECT_FALSE(notification_data.IsTargeted("other2")); |
| 143 } | 144 } |
| 144 { | 145 { |
| 145 const P2PNotificationData notification_data( | 146 const P2PNotificationData notification_data( |
| 146 "sender", NOTIFY_OTHERS, ObjectIdStateMap(), REMOTE_INVALIDATION); | 147 "sender", NOTIFY_OTHERS, ObjectIdInvalidationMap(), |
| 148 REMOTE_INVALIDATION); |
| 147 EXPECT_FALSE(notification_data.IsTargeted("sender")); | 149 EXPECT_FALSE(notification_data.IsTargeted("sender")); |
| 148 EXPECT_TRUE(notification_data.IsTargeted("other1")); | 150 EXPECT_TRUE(notification_data.IsTargeted("other1")); |
| 149 EXPECT_TRUE(notification_data.IsTargeted("other2")); | 151 EXPECT_TRUE(notification_data.IsTargeted("other2")); |
| 150 } | 152 } |
| 151 { | 153 { |
| 152 const P2PNotificationData notification_data( | 154 const P2PNotificationData notification_data( |
| 153 "sender", NOTIFY_ALL, ObjectIdStateMap(), REMOTE_INVALIDATION); | 155 "sender", NOTIFY_ALL, ObjectIdInvalidationMap(), REMOTE_INVALIDATION); |
| 154 EXPECT_TRUE(notification_data.IsTargeted("sender")); | 156 EXPECT_TRUE(notification_data.IsTargeted("sender")); |
| 155 EXPECT_TRUE(notification_data.IsTargeted("other1")); | 157 EXPECT_TRUE(notification_data.IsTargeted("other1")); |
| 156 EXPECT_TRUE(notification_data.IsTargeted("other2")); | 158 EXPECT_TRUE(notification_data.IsTargeted("other2")); |
| 157 } | 159 } |
| 158 } | 160 } |
| 159 | 161 |
| 160 // Make sure the P2PNotificationData <-> string conversions work for a | 162 // Make sure the P2PNotificationData <-> string conversions work for a |
| 161 // default-constructed P2PNotificationData. | 163 // default-constructed P2PNotificationData. |
| 162 TEST_F(P2PInvalidatorTest, P2PNotificationDataDefault) { | 164 TEST_F(P2PInvalidatorTest, P2PNotificationDataDefault) { |
| 163 const P2PNotificationData notification_data; | 165 const P2PNotificationData notification_data; |
| 164 EXPECT_TRUE(notification_data.IsTargeted("")); | 166 EXPECT_TRUE(notification_data.IsTargeted("")); |
| 165 EXPECT_FALSE(notification_data.IsTargeted("other1")); | 167 EXPECT_FALSE(notification_data.IsTargeted("other1")); |
| 166 EXPECT_FALSE(notification_data.IsTargeted("other2")); | 168 EXPECT_FALSE(notification_data.IsTargeted("other2")); |
| 167 EXPECT_TRUE(notification_data.GetIdStateMap().empty()); | 169 EXPECT_TRUE(notification_data.GetIdInvalidationMap().empty()); |
| 168 const std::string& notification_data_str = notification_data.ToString(); | 170 const std::string& notification_data_str = notification_data.ToString(); |
| 169 EXPECT_EQ( | 171 EXPECT_EQ( |
| 170 "{\"idStateMap\":[],\"notificationType\":\"notifySelf\",\"senderId\":" | 172 "{\"idInvalidationMap\":[],\"notificationType\":\"notifySelf\"," |
| 171 "\"\",\"source\":0}", notification_data_str); | 173 "\"senderId\":\"\",\"source\":0}", notification_data_str); |
| 172 | 174 |
| 173 P2PNotificationData notification_data_parsed; | 175 P2PNotificationData notification_data_parsed; |
| 174 EXPECT_TRUE(notification_data_parsed.ResetFromString(notification_data_str)); | 176 EXPECT_TRUE(notification_data_parsed.ResetFromString(notification_data_str)); |
| 175 EXPECT_TRUE(notification_data.Equals(notification_data_parsed)); | 177 EXPECT_TRUE(notification_data.Equals(notification_data_parsed)); |
| 176 } | 178 } |
| 177 | 179 |
| 178 // Make sure the P2PNotificationData <-> string conversions work for a | 180 // Make sure the P2PNotificationData <-> string conversions work for a |
| 179 // non-default-constructed P2PNotificationData. | 181 // non-default-constructed P2PNotificationData. |
| 180 TEST_F(P2PInvalidatorTest, P2PNotificationDataNonDefault) { | 182 TEST_F(P2PInvalidatorTest, P2PNotificationDataNonDefault) { |
| 181 const ObjectIdStateMap& id_state_map = | 183 const ObjectIdInvalidationMap& invalidation_map = |
| 182 ObjectIdSetToStateMap( | 184 ObjectIdSetToInvalidationMap( |
| 183 ModelTypeSetToObjectIdSet(ModelTypeSet(BOOKMARKS, THEMES)), ""); | 185 ModelTypeSetToObjectIdSet(ModelTypeSet(BOOKMARKS, THEMES)), ""); |
| 184 const P2PNotificationData notification_data( | 186 const P2PNotificationData notification_data( |
| 185 "sender", NOTIFY_ALL, id_state_map, LOCAL_INVALIDATION); | 187 "sender", NOTIFY_ALL, invalidation_map, LOCAL_INVALIDATION); |
| 186 EXPECT_TRUE(notification_data.IsTargeted("sender")); | 188 EXPECT_TRUE(notification_data.IsTargeted("sender")); |
| 187 EXPECT_TRUE(notification_data.IsTargeted("other1")); | 189 EXPECT_TRUE(notification_data.IsTargeted("other1")); |
| 188 EXPECT_TRUE(notification_data.IsTargeted("other2")); | 190 EXPECT_TRUE(notification_data.IsTargeted("other2")); |
| 189 EXPECT_THAT(id_state_map, Eq(notification_data.GetIdStateMap())); | 191 EXPECT_THAT(invalidation_map, |
| 192 Eq(notification_data.GetIdInvalidationMap())); |
| 190 const std::string& notification_data_str = notification_data.ToString(); | 193 const std::string& notification_data_str = notification_data.ToString(); |
| 191 EXPECT_EQ( | 194 EXPECT_EQ( |
| 192 "{\"idStateMap\":[" | 195 "{\"idInvalidationMap\":[" |
| 193 "{\"objectId\":{\"name\":\"BOOKMARK\",\"source\":1004}," | 196 "{\"objectId\":{\"name\":\"BOOKMARK\",\"source\":1004}," |
| 194 "\"state\":{\"ackHandle\":{},\"payload\":\"\"}}," | 197 "\"state\":{\"ackHandle\":{},\"payload\":\"\"}}," |
| 195 "{\"objectId\":{\"name\":\"THEME\",\"source\":1004}," | 198 "{\"objectId\":{\"name\":\"THEME\",\"source\":1004}," |
| 196 "\"state\":{\"ackHandle\":{},\"payload\":\"\"}}" | 199 "\"state\":{\"ackHandle\":{},\"payload\":\"\"}}" |
| 197 "],\"notificationType\":\"notifyAll\"," | 200 "],\"notificationType\":\"notifyAll\"," |
| 198 "\"senderId\":\"sender\",\"source\":1}", notification_data_str); | 201 "\"senderId\":\"sender\",\"source\":1}", notification_data_str); |
| 199 | 202 |
| 200 P2PNotificationData notification_data_parsed; | 203 P2PNotificationData notification_data_parsed; |
| 201 EXPECT_TRUE(notification_data_parsed.ResetFromString(notification_data_str)); | 204 EXPECT_TRUE(notification_data_parsed.ResetFromString(notification_data_str)); |
| 202 EXPECT_TRUE(notification_data.Equals(notification_data_parsed)); | 205 EXPECT_TRUE(notification_data.Equals(notification_data_parsed)); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 231 EXPECT_EQ(kEmail, push_client->email()); | 234 EXPECT_EQ(kEmail, push_client->email()); |
| 232 EXPECT_EQ(kToken, push_client->token()); | 235 EXPECT_EQ(kToken, push_client->token()); |
| 233 | 236 |
| 234 ReflectSentNotifications(); | 237 ReflectSentNotifications(); |
| 235 push_client->EnableNotifications(); | 238 push_client->EnableNotifications(); |
| 236 EXPECT_EQ(INVALIDATIONS_ENABLED, fake_handler_.GetInvalidatorState()); | 239 EXPECT_EQ(INVALIDATIONS_ENABLED, fake_handler_.GetInvalidatorState()); |
| 237 | 240 |
| 238 ReflectSentNotifications(); | 241 ReflectSentNotifications(); |
| 239 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); | 242 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); |
| 240 EXPECT_THAT( | 243 EXPECT_THAT( |
| 241 ModelTypeStateMapToObjectIdStateMap(MakeStateMap(enabled_types)), | 244 ModelTypeInvalidationMapToObjectIdInvalidationMap( |
| 242 Eq(fake_handler_.GetLastInvalidationIdStateMap())); | 245 MakeInvalidationMap(enabled_types)), |
| 246 Eq(fake_handler_.GetLastInvalidationMap())); |
| 243 EXPECT_EQ(REMOTE_INVALIDATION, fake_handler_.GetLastInvalidationSource()); | 247 EXPECT_EQ(REMOTE_INVALIDATION, fake_handler_.GetLastInvalidationSource()); |
| 244 | 248 |
| 245 // Sent with target NOTIFY_OTHERS so should not be propagated to | 249 // Sent with target NOTIFY_OTHERS so should not be propagated to |
| 246 // |fake_handler_|. | 250 // |fake_handler_|. |
| 247 { | 251 { |
| 248 const ObjectIdStateMap& id_state_map = | 252 const ObjectIdInvalidationMap& invalidation_map = |
| 249 ObjectIdSetToStateMap( | 253 ObjectIdSetToInvalidationMap( |
| 250 ModelTypeSetToObjectIdSet(ModelTypeSet(THEMES, APPS)), ""); | 254 ModelTypeSetToObjectIdSet(ModelTypeSet(THEMES, APPS)), ""); |
| 251 invalidator->SendInvalidation(id_state_map); | 255 invalidator->SendInvalidation(invalidation_map); |
| 252 } | 256 } |
| 253 | 257 |
| 254 ReflectSentNotifications(); | 258 ReflectSentNotifications(); |
| 255 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); | 259 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); |
| 256 } | 260 } |
| 257 | 261 |
| 258 // Set up the P2PInvalidator and send out notifications with various | 262 // Set up the P2PInvalidator and send out notifications with various |
| 259 // target settings. The notifications received by the observer should | 263 // target settings. The notifications received by the observer should |
| 260 // be consistent with the target settings. | 264 // be consistent with the target settings. |
| 261 TEST_F(P2PInvalidatorTest, SendNotificationData) { | 265 TEST_F(P2PInvalidatorTest, SendNotificationData) { |
| 262 const ModelTypeSet enabled_types(BOOKMARKS, PREFERENCES, THEMES); | 266 const ModelTypeSet enabled_types(BOOKMARKS, PREFERENCES, THEMES); |
| 263 const ModelTypeSet changed_types(THEMES, APPS); | 267 const ModelTypeSet changed_types(THEMES, APPS); |
| 264 const ModelTypeSet expected_types(THEMES); | 268 const ModelTypeSet expected_types(THEMES); |
| 265 | 269 |
| 266 const ObjectIdStateMap& id_state_map = | 270 const ObjectIdInvalidationMap& invalidation_map = |
| 267 ObjectIdSetToStateMap( | 271 ObjectIdSetToInvalidationMap( |
| 268 ModelTypeSetToObjectIdSet(changed_types), ""); | 272 ModelTypeSetToObjectIdSet(changed_types), ""); |
| 269 | 273 |
| 270 P2PInvalidator* const invalidator = delegate_.GetInvalidator(); | 274 P2PInvalidator* const invalidator = delegate_.GetInvalidator(); |
| 271 notifier::FakePushClient* const push_client = delegate_.GetPushClient(); | 275 notifier::FakePushClient* const push_client = delegate_.GetPushClient(); |
| 272 | 276 |
| 273 invalidator->UpdateRegisteredIds(&fake_handler_, | 277 invalidator->UpdateRegisteredIds(&fake_handler_, |
| 274 ModelTypeSetToObjectIdSet(enabled_types)); | 278 ModelTypeSetToObjectIdSet(enabled_types)); |
| 275 | 279 |
| 276 invalidator->SetUniqueId("sender"); | 280 invalidator->SetUniqueId("sender"); |
| 277 invalidator->UpdateCredentials("foo@bar.com", "fake_token"); | 281 invalidator->UpdateCredentials("foo@bar.com", "fake_token"); |
| 278 | 282 |
| 279 ReflectSentNotifications(); | 283 ReflectSentNotifications(); |
| 280 push_client->EnableNotifications(); | 284 push_client->EnableNotifications(); |
| 281 EXPECT_EQ(INVALIDATIONS_ENABLED, fake_handler_.GetInvalidatorState()); | 285 EXPECT_EQ(INVALIDATIONS_ENABLED, fake_handler_.GetInvalidatorState()); |
| 282 | 286 |
| 283 ReflectSentNotifications(); | 287 ReflectSentNotifications(); |
| 284 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); | 288 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); |
| 285 EXPECT_THAT( | 289 EXPECT_THAT( |
| 286 ModelTypeStateMapToObjectIdStateMap(MakeStateMap(enabled_types)), | 290 ModelTypeInvalidationMapToObjectIdInvalidationMap( |
| 287 Eq(fake_handler_.GetLastInvalidationIdStateMap())); | 291 MakeInvalidationMap(enabled_types)), |
| 292 Eq(fake_handler_.GetLastInvalidationMap())); |
| 288 EXPECT_EQ(REMOTE_INVALIDATION, fake_handler_.GetLastInvalidationSource()); | 293 EXPECT_EQ(REMOTE_INVALIDATION, fake_handler_.GetLastInvalidationSource()); |
| 289 | 294 |
| 290 // Should be dropped. | 295 // Should be dropped. |
| 291 invalidator->SendNotificationDataForTest(P2PNotificationData()); | 296 invalidator->SendNotificationDataForTest(P2PNotificationData()); |
| 292 ReflectSentNotifications(); | 297 ReflectSentNotifications(); |
| 293 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); | 298 EXPECT_EQ(1, fake_handler_.GetInvalidationCount()); |
| 294 | 299 |
| 295 const ObjectIdStateMap& expected_ids = | 300 const ObjectIdInvalidationMap& expected_ids = |
| 296 ModelTypeStateMapToObjectIdStateMap(MakeStateMap(expected_types)); | 301 ModelTypeInvalidationMapToObjectIdInvalidationMap( |
| 302 MakeInvalidationMap(expected_types)); |
| 297 | 303 |
| 298 // Should be propagated. | 304 // Should be propagated. |
| 299 invalidator->SendNotificationDataForTest( | 305 invalidator->SendNotificationDataForTest( |
| 300 P2PNotificationData("sender", NOTIFY_SELF, | 306 P2PNotificationData("sender", NOTIFY_SELF, |
| 301 id_state_map, REMOTE_INVALIDATION)); | 307 invalidation_map, REMOTE_INVALIDATION)); |
| 302 ReflectSentNotifications(); | 308 ReflectSentNotifications(); |
| 303 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); | 309 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); |
| 304 EXPECT_THAT( | 310 EXPECT_THAT(expected_ids, Eq(fake_handler_.GetLastInvalidationMap())); |
| 305 expected_ids, | |
| 306 Eq(fake_handler_.GetLastInvalidationIdStateMap())); | |
| 307 | 311 |
| 308 // Should be dropped. | 312 // Should be dropped. |
| 309 invalidator->SendNotificationDataForTest( | 313 invalidator->SendNotificationDataForTest( |
| 310 P2PNotificationData("sender2", NOTIFY_SELF, | 314 P2PNotificationData("sender2", NOTIFY_SELF, |
| 311 id_state_map, REMOTE_INVALIDATION)); | 315 invalidation_map, REMOTE_INVALIDATION)); |
| 312 ReflectSentNotifications(); | 316 ReflectSentNotifications(); |
| 313 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); | 317 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); |
| 314 | 318 |
| 315 // Should be dropped. | 319 // Should be dropped. |
| 316 invalidator->SendNotificationDataForTest( | 320 invalidator->SendNotificationDataForTest( |
| 317 P2PNotificationData("sender", NOTIFY_SELF, | 321 P2PNotificationData("sender", NOTIFY_SELF, |
| 318 ObjectIdStateMap(), REMOTE_INVALIDATION)); | 322 ObjectIdInvalidationMap(), REMOTE_INVALIDATION)); |
| 319 ReflectSentNotifications(); | 323 ReflectSentNotifications(); |
| 320 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); | 324 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); |
| 321 | 325 |
| 322 // Should be dropped. | 326 // Should be dropped. |
| 323 invalidator->SendNotificationDataForTest( | 327 invalidator->SendNotificationDataForTest( |
| 324 P2PNotificationData("sender", NOTIFY_OTHERS, | 328 P2PNotificationData("sender", NOTIFY_OTHERS, |
| 325 id_state_map, REMOTE_INVALIDATION)); | 329 invalidation_map, REMOTE_INVALIDATION)); |
| 326 ReflectSentNotifications(); | 330 ReflectSentNotifications(); |
| 327 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); | 331 EXPECT_EQ(2, fake_handler_.GetInvalidationCount()); |
| 328 | 332 |
| 329 // Should be propagated. | 333 // Should be propagated. |
| 330 invalidator->SendNotificationDataForTest( | 334 invalidator->SendNotificationDataForTest( |
| 331 P2PNotificationData("sender2", NOTIFY_OTHERS, | 335 P2PNotificationData("sender2", NOTIFY_OTHERS, |
| 332 id_state_map, REMOTE_INVALIDATION)); | 336 invalidation_map, REMOTE_INVALIDATION)); |
| 333 ReflectSentNotifications(); | 337 ReflectSentNotifications(); |
| 334 EXPECT_EQ(3, fake_handler_.GetInvalidationCount()); | 338 EXPECT_EQ(3, fake_handler_.GetInvalidationCount()); |
| 335 EXPECT_THAT( | 339 EXPECT_THAT(expected_ids, Eq(fake_handler_.GetLastInvalidationMap())); |
| 336 expected_ids, | |
| 337 Eq(fake_handler_.GetLastInvalidationIdStateMap())); | |
| 338 | 340 |
| 339 // Should be dropped. | 341 // Should be dropped. |
| 340 invalidator->SendNotificationDataForTest( | 342 invalidator->SendNotificationDataForTest( |
| 341 P2PNotificationData("sender2", NOTIFY_OTHERS, | 343 P2PNotificationData("sender2", NOTIFY_OTHERS, |
| 342 ObjectIdStateMap(), REMOTE_INVALIDATION)); | 344 ObjectIdInvalidationMap(), REMOTE_INVALIDATION)); |
| 343 ReflectSentNotifications(); | 345 ReflectSentNotifications(); |
| 344 EXPECT_EQ(3, fake_handler_.GetInvalidationCount()); | 346 EXPECT_EQ(3, fake_handler_.GetInvalidationCount()); |
| 345 | 347 |
| 346 // Should be propagated. | 348 // Should be propagated. |
| 347 invalidator->SendNotificationDataForTest( | 349 invalidator->SendNotificationDataForTest( |
| 348 P2PNotificationData("sender", NOTIFY_ALL, | 350 P2PNotificationData("sender", NOTIFY_ALL, |
| 349 id_state_map, REMOTE_INVALIDATION)); | 351 invalidation_map, REMOTE_INVALIDATION)); |
| 350 ReflectSentNotifications(); | 352 ReflectSentNotifications(); |
| 351 EXPECT_EQ(4, fake_handler_.GetInvalidationCount()); | 353 EXPECT_EQ(4, fake_handler_.GetInvalidationCount()); |
| 352 EXPECT_THAT( | 354 EXPECT_THAT(expected_ids, Eq(fake_handler_.GetLastInvalidationMap())); |
| 353 expected_ids, | |
| 354 Eq(fake_handler_.GetLastInvalidationIdStateMap())); | |
| 355 | 355 |
| 356 // Should be propagated. | 356 // Should be propagated. |
| 357 invalidator->SendNotificationDataForTest( | 357 invalidator->SendNotificationDataForTest( |
| 358 P2PNotificationData("sender2", NOTIFY_ALL, | 358 P2PNotificationData("sender2", NOTIFY_ALL, |
| 359 id_state_map, REMOTE_INVALIDATION)); | 359 invalidation_map, REMOTE_INVALIDATION)); |
| 360 ReflectSentNotifications(); | 360 ReflectSentNotifications(); |
| 361 EXPECT_EQ(5, fake_handler_.GetInvalidationCount()); | 361 EXPECT_EQ(5, fake_handler_.GetInvalidationCount()); |
| 362 EXPECT_THAT( | 362 EXPECT_THAT(expected_ids, Eq(fake_handler_.GetLastInvalidationMap())); |
| 363 expected_ids, | |
| 364 Eq(fake_handler_.GetLastInvalidationIdStateMap())); | |
| 365 | 363 |
| 366 // Should be dropped. | 364 // Should be dropped. |
| 367 invalidator->SendNotificationDataForTest( | 365 invalidator->SendNotificationDataForTest( |
| 368 P2PNotificationData("sender2", NOTIFY_ALL, | 366 P2PNotificationData("sender2", NOTIFY_ALL, |
| 369 ObjectIdStateMap(), REMOTE_INVALIDATION)); | 367 ObjectIdInvalidationMap(), REMOTE_INVALIDATION)); |
| 370 ReflectSentNotifications(); | 368 ReflectSentNotifications(); |
| 371 EXPECT_EQ(5, fake_handler_.GetInvalidationCount()); | 369 EXPECT_EQ(5, fake_handler_.GetInvalidationCount()); |
| 372 } | 370 } |
| 373 | 371 |
| 374 INSTANTIATE_TYPED_TEST_CASE_P( | 372 INSTANTIATE_TYPED_TEST_CASE_P( |
| 375 P2PInvalidatorTest, InvalidatorTest, | 373 P2PInvalidatorTest, InvalidatorTest, |
| 376 P2PInvalidatorTestDelegate); | 374 P2PInvalidatorTestDelegate); |
| 377 | 375 |
| 378 } // namespace | 376 } // namespace |
| 379 | 377 |
| 380 } // namespace syncer | 378 } // namespace syncer |
| OLD | NEW |