Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 # The Synced Bookmarks folder is not created by default | |
| 21 self._expect_synced_bookmarks_folder = False | |
| 20 | 22 |
| 21 def AddToModel(self, proto): | 23 def AddToModel(self, proto): |
| 22 self.model._entries[proto.id_string] = proto | 24 self.model._entries[proto.id_string] = proto |
| 23 | 25 |
| 24 def GetChangesFromTimestamp(self, requested_types, timestamp): | 26 def GetChangesFromTimestamp(self, requested_types, timestamp): |
| 25 message = sync_pb2.GetUpdatesMessage() | 27 message = sync_pb2.GetUpdatesMessage() |
| 26 message.from_timestamp = timestamp | 28 message.from_timestamp = timestamp |
| 27 for data_type in requested_types: | 29 for data_type in requested_types: |
| 28 getattr(message.requested_types, | 30 getattr(message.requested_types, |
| 29 chromiumsync.SYNC_TYPE_TO_DESCRIPTOR[ | 31 chromiumsync.SYNC_TYPE_TO_DESCRIPTOR[ |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 60 self.model._SaveEntry(proto) | 62 self.model._SaveEntry(proto) |
| 61 self.assertEqual(1, proto.version) | 63 self.assertEqual(1, proto.version) |
| 62 self.assertTrue(self.model._ItemExists(proto.id_string)) | 64 self.assertTrue(self.model._ItemExists(proto.id_string)) |
| 63 self.model._SaveEntry(proto) | 65 self.model._SaveEntry(proto) |
| 64 self.assertEqual(2, proto.version) | 66 self.assertEqual(2, proto.version) |
| 65 proto.version = 0 | 67 proto.version = 0 |
| 66 self.assertTrue(self.model._ItemExists(proto.id_string)) | 68 self.assertTrue(self.model._ItemExists(proto.id_string)) |
| 67 self.assertEqual(2, self.model._entries[proto.id_string].version) | 69 self.assertEqual(2, self.model._entries[proto.id_string].version) |
| 68 | 70 |
| 69 def testCreatePermanentItems(self): | 71 def testCreatePermanentItems(self): |
| 70 self.model._CreatePermanentItems(chromiumsync.ALL_TYPES) | 72 self.model._CreateDefaultPermanentItems(chromiumsync.ALL_TYPES) |
| 71 self.assertEqual(len(chromiumsync.ALL_TYPES) + 2, | 73 self.assertEqual(len(chromiumsync.ALL_TYPES) + 2, |
| 72 len(self.model._entries)) | 74 len(self.model._entries)) |
| 73 | 75 |
| 74 def ExpectedPermanentItemCount(self, sync_type): | 76 def ExpectedPermanentItemCount(self, sync_type): |
| 75 if sync_type == chromiumsync.BOOKMARK: | 77 if sync_type == chromiumsync.BOOKMARK: |
| 76 return 4 | 78 if self._expect_synced_bookmarks_folder: |
| 79 return 5 | |
| 80 else: | |
| 81 return 4 | |
| 77 elif sync_type == chromiumsync.TOP_LEVEL: | 82 elif sync_type == chromiumsync.TOP_LEVEL: |
| 78 return 1 | 83 return 1 |
| 79 else: | 84 else: |
| 80 return 2 | 85 return 2 |
| 81 | 86 |
| 82 def testGetChangesFromTimestampZeroForEachType(self): | 87 def testGetChangesFromTimestampZeroForEachType(self): |
| 83 all_types = chromiumsync.ALL_TYPES[1:] | 88 all_types = chromiumsync.ALL_TYPES[1:] |
| 84 for sync_type in all_types: | 89 for sync_type in all_types: |
| 85 self.model = chromiumsync.SyncDataModel() | 90 self.model = chromiumsync.SyncDataModel() |
| 86 request_types = [sync_type] | 91 request_types = [sync_type] |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 100 # Test idempotence: another GetUpdates from ts=0 shouldn't recreate. | 105 # Test idempotence: another GetUpdates from ts=0 shouldn't recreate. |
| 101 version, changes, remaining = ( | 106 version, changes, remaining = ( |
| 102 self.GetChangesFromTimestamp(request_types, 0)) | 107 self.GetChangesFromTimestamp(request_types, 0)) |
| 103 self.assertEqual(expected_count, version) | 108 self.assertEqual(expected_count, version) |
| 104 self.assertEqual(expected_count, len(changes)) | 109 self.assertEqual(expected_count, len(changes)) |
| 105 self.assertEqual(0, remaining) | 110 self.assertEqual(0, remaining) |
| 106 | 111 |
| 107 # Doing a wider GetUpdates from timestamp zero shouldn't recreate either. | 112 # Doing a wider GetUpdates from timestamp zero shouldn't recreate either. |
| 108 new_version, changes, remaining = ( | 113 new_version, changes, remaining = ( |
| 109 self.GetChangesFromTimestamp(all_types, 0)) | 114 self.GetChangesFromTimestamp(all_types, 0)) |
| 110 self.assertEqual(len(chromiumsync.SyncDataModel._PERMANENT_ITEM_SPECS), | 115 self.assertEqual( |
| 111 new_version) | 116 len(chromiumsync.SyncDataModel._PERMANENT_ITEM_SPECS) - 1 if not |
| 117 self._expect_synced_bookmarks_folder else 0, | |
|
ncarter (slow)
2012/03/15 22:44:52
FWIW, I don't find this very readable -- it's almo
| |
| 118 new_version) | |
| 112 self.assertEqual(new_version, len(changes)) | 119 self.assertEqual(new_version, len(changes)) |
| 113 self.assertEqual(0, remaining) | 120 self.assertEqual(0, remaining) |
| 114 version, changes, remaining = ( | 121 version, changes, remaining = ( |
| 115 self.GetChangesFromTimestamp(request_types, 0)) | 122 self.GetChangesFromTimestamp(request_types, 0)) |
| 116 self.assertEqual(new_version, version) | 123 self.assertEqual(new_version, version) |
| 117 self.assertEqual(expected_count, len(changes)) | 124 self.assertEqual(expected_count, len(changes)) |
| 118 self.assertEqual(0, remaining) | 125 self.assertEqual(0, remaining) |
| 119 | 126 |
| 120 def testBatchSize(self): | 127 def testBatchSize(self): |
| 121 for sync_type in chromiumsync.ALL_TYPES[1:]: | 128 for sync_type in chromiumsync.ALL_TYPES[1:]: |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 554 msg = sync_pb2.GetUpdatesMessage() | 561 msg = sync_pb2.GetUpdatesMessage() |
| 555 marker = msg.from_progress_marker.add() | 562 marker = msg.from_progress_marker.add() |
| 556 marker.data_type_id = autofill.number | 563 marker.data_type_id = autofill.number |
| 557 marker.token = pickle.dumps((15412, 5)) | 564 marker.token = pickle.dumps((15412, 5)) |
| 558 marker = msg.from_progress_marker.add() | 565 marker = msg.from_progress_marker.add() |
| 559 marker.data_type_id = theme.number | 566 marker.data_type_id = theme.number |
| 560 marker.token = pickle.dumps((15413, 4)) | 567 marker.token = pickle.dumps((15413, 4)) |
| 561 sieve = chromiumsync.UpdateSieve(msg, migrator) | 568 sieve = chromiumsync.UpdateSieve(msg, migrator) |
| 562 sieve.CheckMigrationState() | 569 sieve.CheckMigrationState() |
| 563 | 570 |
| 571 def testCreateSyncedBookmaks(self): | |
| 572 version1, changes, remaining = ( | |
| 573 self.GetChangesFromTimestamp([chromiumsync.BOOKMARK], 0)) | |
| 574 id_string = self.model._MakeCurrentId(chromiumsync.BOOKMARK, | |
| 575 '<server tag>synced_bookmarks') | |
| 576 self.assertFalse(self.model._ItemExists(id_string)) | |
| 577 self._expect_synced_bookmarks_folder = True | |
| 578 self.model.TriggerCreateSyncedBookmarks() | |
| 579 self.assertTrue(self.model._ItemExists(id_string)) | |
| 580 | |
| 581 # Check that the version changed when the folder was created and the only | |
| 582 # change was the folder creation. | |
| 583 version2, changes, remaining = ( | |
| 584 self.GetChangesFromTimestamp([chromiumsync.BOOKMARK], version1)) | |
| 585 self.assertEqual(len(changes), 1) | |
| 586 self.assertEqual(changes[0].id_string, id_string) | |
| 587 self.assertNotEqual(version1, version2) | |
| 588 self.assertEqual( | |
| 589 self.ExpectedPermanentItemCount(chromiumsync.BOOKMARK), | |
| 590 version2) | |
| 591 | |
| 592 # Ensure getting from timestamp 0 includes the folder. | |
| 593 version, changes, remaining = ( | |
| 594 self.GetChangesFromTimestamp([chromiumsync.BOOKMARK], 0)) | |
| 595 self.assertEqual( | |
| 596 self.ExpectedPermanentItemCount(chromiumsync.BOOKMARK), | |
| 597 len(changes)) | |
| 598 self.assertEqual(version2, version) | |
| 599 | |
| 564 | 600 |
| 565 if __name__ == '__main__': | 601 if __name__ == '__main__': |
| 566 unittest.main() | 602 unittest.main() |
| OLD | NEW |