| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 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 """Tests exercising chromiumsync and SyncDataModel.""" | 6 """Tests exercising chromiumsync and SyncDataModel.""" |
| 7 | 7 |
| 8 import pickle | 8 import pickle |
| 9 import unittest | 9 import unittest |
| 10 | 10 |
| 11 import autofill_specifics_pb2 | 11 import autofill_specifics_pb2 |
| 12 import bookmark_specifics_pb2 | 12 import bookmark_specifics_pb2 |
| 13 import chromiumsync | 13 import chromiumsync |
| 14 import sync_pb2 | 14 import sync_pb2 |
| 15 import theme_specifics_pb2 | 15 import theme_specifics_pb2 |
| 16 | 16 |
| 17 class SyncDataModelTest(unittest.TestCase): | 17 class SyncDataModelTest(unittest.TestCase): |
| 18 def setUp(self): | 18 def setUp(self): |
| 19 self.model = chromiumsync.SyncDataModel() | 19 self.model = chromiumsync.SyncDataModel() |
| 20 | 20 |
| 21 def AddToModel(self, proto): | 21 def AddToModel(self, proto): |
| 22 self.model._entries[proto.id_string] = proto | 22 self.model._entries[proto.id_string] = proto |
| 23 | 23 |
| 24 def GetChangesFromTimestamp(self, requested_types, timestamp): | 24 def GetChangesFromTimestamp(self, requested_types, timestamp): |
| 25 message = sync_pb2.GetUpdatesMessage() | 25 message = sync_pb2.GetUpdatesMessage() |
| 26 message.from_timestamp = timestamp | 26 message.from_timestamp = timestamp |
| 27 for data_type in requested_types: | 27 for data_type in requested_types: |
| 28 message.requested_types.Extensions[ | 28 getattr(message.requested_types, |
| 29 chromiumsync.SYNC_TYPE_TO_EXTENSION[data_type]].SetInParent() | 29 chromiumsync.SYNC_TYPE_TO_DESCRIPTOR[ |
| 30 data_type].name).SetInParent() |
| 30 return self.model.GetChanges( | 31 return self.model.GetChanges( |
| 31 chromiumsync.UpdateSieve(message, self.model.migration_history)) | 32 chromiumsync.UpdateSieve(message, self.model.migration_history)) |
| 32 | 33 |
| 33 def FindMarkerByNumber(self, markers, datatype): | 34 def FindMarkerByNumber(self, markers, datatype): |
| 34 """Search a list of progress markers and find the one for a datatype.""" | 35 """Search a list of progress markers and find the one for a datatype.""" |
| 35 for marker in markers: | 36 for marker in markers: |
| 36 if marker.data_type_id == datatype.number: | 37 if marker.data_type_id == datatype.number: |
| 37 return marker | 38 return marker |
| 38 self.fail('Required marker not found: %s' % datatype.name) | 39 self.fail('Required marker not found: %s' % datatype.name) |
| 39 | 40 |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 self.assertTrue(result4.parent_id_string == | 292 self.assertTrue(result4.parent_id_string == |
| 292 result1b.parent_id_string == | 293 result1b.parent_id_string == |
| 293 result5.parent_id_string == | 294 result5.parent_id_string == |
| 294 result2b.id_string) | 295 result2b.id_string) |
| 295 self.assertTrue(result4.position_in_parent < | 296 self.assertTrue(result4.position_in_parent < |
| 296 result1b.position_in_parent < | 297 result1b.position_in_parent < |
| 297 result5.position_in_parent) | 298 result5.position_in_parent) |
| 298 | 299 |
| 299 def testUpdateSieve(self): | 300 def testUpdateSieve(self): |
| 300 # from_timestamp, legacy mode | 301 # from_timestamp, legacy mode |
| 301 autofill = autofill_specifics_pb2.autofill | 302 autofill = chromiumsync.SYNC_TYPE_FIELDS['autofill'] |
| 302 theme = theme_specifics_pb2.theme | 303 theme = chromiumsync.SYNC_TYPE_FIELDS['theme'] |
| 303 msg = sync_pb2.GetUpdatesMessage() | 304 msg = sync_pb2.GetUpdatesMessage() |
| 304 msg.from_timestamp = 15412 | 305 msg.from_timestamp = 15412 |
| 305 msg.requested_types.Extensions[autofill].SetInParent() | 306 msg.requested_types.autofill.SetInParent() |
| 306 msg.requested_types.Extensions[theme].SetInParent() | 307 msg.requested_types.theme.SetInParent() |
| 307 | 308 |
| 308 sieve = chromiumsync.UpdateSieve(msg) | 309 sieve = chromiumsync.UpdateSieve(msg) |
| 309 self.assertEqual(sieve._state, | 310 self.assertEqual(sieve._state, |
| 310 {chromiumsync.TOP_LEVEL: 15412, | 311 {chromiumsync.TOP_LEVEL: 15412, |
| 311 chromiumsync.AUTOFILL: 15412, | 312 chromiumsync.AUTOFILL: 15412, |
| 312 chromiumsync.THEME: 15412}) | 313 chromiumsync.THEME: 15412}) |
| 313 | 314 |
| 314 response = sync_pb2.GetUpdatesResponse() | 315 response = sync_pb2.GetUpdatesResponse() |
| 315 sieve.SaveProgress(15412, response) | 316 sieve.SaveProgress(15412, response) |
| 316 self.assertEqual(0, len(response.new_progress_marker)) | 317 self.assertEqual(0, len(response.new_progress_marker)) |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 testserver = chromiumsync.TestServer() | 442 testserver = chromiumsync.TestServer() |
| 442 http_code, raw_respon = testserver.HandleSetTransientError() | 443 http_code, raw_respon = testserver.HandleSetTransientError() |
| 443 self.assertEqual(http_code, 200) | 444 self.assertEqual(http_code, 200) |
| 444 try: | 445 try: |
| 445 testserver.CheckTransientError() | 446 testserver.CheckTransientError() |
| 446 self.fail('Should have raised transient error exception') | 447 self.fail('Should have raised transient error exception') |
| 447 except chromiumsync.TransientError: | 448 except chromiumsync.TransientError: |
| 448 self.assertTrue(testserver.transient_error) | 449 self.assertTrue(testserver.transient_error) |
| 449 | 450 |
| 450 def testUpdateSieveStoreMigration(self): | 451 def testUpdateSieveStoreMigration(self): |
| 451 autofill = autofill_specifics_pb2.autofill | 452 autofill = chromiumsync.SYNC_TYPE_FIELDS['autofill'] |
| 452 theme = theme_specifics_pb2.theme | 453 theme = chromiumsync.SYNC_TYPE_FIELDS['theme'] |
| 453 migrator = chromiumsync.MigrationHistory() | 454 migrator = chromiumsync.MigrationHistory() |
| 454 msg = sync_pb2.GetUpdatesMessage() | 455 msg = sync_pb2.GetUpdatesMessage() |
| 455 marker = msg.from_progress_marker.add() | 456 marker = msg.from_progress_marker.add() |
| 456 marker.data_type_id = autofill.number | 457 marker.data_type_id = autofill.number |
| 457 marker.token = pickle.dumps((15412, 1)) | 458 marker.token = pickle.dumps((15412, 1)) |
| 458 marker = msg.from_progress_marker.add() | 459 marker = msg.from_progress_marker.add() |
| 459 marker.data_type_id = theme.number | 460 marker.data_type_id = theme.number |
| 460 marker.token = pickle.dumps((15413, 1)) | 461 marker.token = pickle.dumps((15413, 1)) |
| 461 sieve = chromiumsync.UpdateSieve(msg, migrator) | 462 sieve = chromiumsync.UpdateSieve(msg, migrator) |
| 462 sieve.CheckMigrationState() | 463 sieve.CheckMigrationState() |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 marker.token = pickle.dumps((15412, 5)) | 557 marker.token = pickle.dumps((15412, 5)) |
| 557 marker = msg.from_progress_marker.add() | 558 marker = msg.from_progress_marker.add() |
| 558 marker.data_type_id = theme.number | 559 marker.data_type_id = theme.number |
| 559 marker.token = pickle.dumps((15413, 4)) | 560 marker.token = pickle.dumps((15413, 4)) |
| 560 sieve = chromiumsync.UpdateSieve(msg, migrator) | 561 sieve = chromiumsync.UpdateSieve(msg, migrator) |
| 561 sieve.CheckMigrationState() | 562 sieve.CheckMigrationState() |
| 562 | 563 |
| 563 | 564 |
| 564 if __name__ == '__main__': | 565 if __name__ == '__main__': |
| 565 unittest.main() | 566 unittest.main() |
| OLD | NEW |