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

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: Rebase, address 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
« no previous file with comments | « net/tools/testserver/chromiumsync.py ('k') | net/tools/testserver/testserver.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 if self._expect_synced_bookmarks_folder:
111 new_version) 116 self.assertEqual(len(chromiumsync.SyncDataModel._PERMANENT_ITEM_SPECS),
117 new_version)
118 else:
119 self.assertEqual(
120 len(chromiumsync.SyncDataModel._PERMANENT_ITEM_SPECS) -1,
121 new_version)
112 self.assertEqual(new_version, len(changes)) 122 self.assertEqual(new_version, len(changes))
113 self.assertEqual(0, remaining) 123 self.assertEqual(0, remaining)
114 version, changes, remaining = ( 124 version, changes, remaining = (
115 self.GetChangesFromTimestamp(request_types, 0)) 125 self.GetChangesFromTimestamp(request_types, 0))
116 self.assertEqual(new_version, version) 126 self.assertEqual(new_version, version)
117 self.assertEqual(expected_count, len(changes)) 127 self.assertEqual(expected_count, len(changes))
118 self.assertEqual(0, remaining) 128 self.assertEqual(0, remaining)
119 129
120 def testBatchSize(self): 130 def testBatchSize(self):
121 for sync_type in chromiumsync.ALL_TYPES[1:]: 131 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() 564 msg = sync_pb2.GetUpdatesMessage()
555 marker = msg.from_progress_marker.add() 565 marker = msg.from_progress_marker.add()
556 marker.data_type_id = autofill.number 566 marker.data_type_id = autofill.number
557 marker.token = pickle.dumps((15412, 5)) 567 marker.token = pickle.dumps((15412, 5))
558 marker = msg.from_progress_marker.add() 568 marker = msg.from_progress_marker.add()
559 marker.data_type_id = theme.number 569 marker.data_type_id = theme.number
560 marker.token = pickle.dumps((15413, 4)) 570 marker.token = pickle.dumps((15413, 4))
561 sieve = chromiumsync.UpdateSieve(msg, migrator) 571 sieve = chromiumsync.UpdateSieve(msg, migrator)
562 sieve.CheckMigrationState() 572 sieve.CheckMigrationState()
563 573
574 def testCreateSyncedBookmaks(self):
575 version1, changes, remaining = (
576 self.GetChangesFromTimestamp([chromiumsync.BOOKMARK], 0))
577 id_string = self.model._MakeCurrentId(chromiumsync.BOOKMARK,
578 '<server tag>synced_bookmarks')
579 self.assertFalse(self.model._ItemExists(id_string))
580 self._expect_synced_bookmarks_folder = True
581 self.model.TriggerCreateSyncedBookmarks()
582 self.assertTrue(self.model._ItemExists(id_string))
583
584 # Check that the version changed when the folder was created and the only
585 # change was the folder creation.
586 version2, changes, remaining = (
587 self.GetChangesFromTimestamp([chromiumsync.BOOKMARK], version1))
588 self.assertEqual(len(changes), 1)
589 self.assertEqual(changes[0].id_string, id_string)
590 self.assertNotEqual(version1, version2)
591 self.assertEqual(
592 self.ExpectedPermanentItemCount(chromiumsync.BOOKMARK),
593 version2)
594
595 # Ensure getting from timestamp 0 includes the folder.
596 version, changes, remaining = (
597 self.GetChangesFromTimestamp([chromiumsync.BOOKMARK], 0))
598 self.assertEqual(
599 self.ExpectedPermanentItemCount(chromiumsync.BOOKMARK),
600 len(changes))
601 self.assertEqual(version2, version)
602
564 603
565 if __name__ == '__main__': 604 if __name__ == '__main__':
566 unittest.main() 605 unittest.main()
OLDNEW
« no previous file with comments | « net/tools/testserver/chromiumsync.py ('k') | net/tools/testserver/testserver.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698