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

Side by Side Diff: net/tools/testserver/chromiumsync_test.py

Issue 9570055: [Sync] Add support for associating a new Synced Bookmarks node. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address python comments Created 8 years, 9 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
OLDNEW
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
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
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
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()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698