~rodrigo-moya/ubuntuone-client/share-my-picked-contacts

« back to all changes in this revision

Viewing changes to tests/syncdaemon/test_fileshelf.py

  • Committer: Tarmac
  • Author(s): guillermo.gonzalez at canonical
  • Date: 2010-03-29 20:49:14 UTC
  • mfrom: (445.3.5 safe-md-v5-migration)
  • Revision ID: john.lenton@canonical.com-20100329204914-by1k64lrmnu3wxw0
Backup volume manager metadata before doing the migration to v6 and restore it in case of error.

Show diffs side-by-side

added added

removed removed

Lines of Context:
133
133
        self.assertTrue(('foo', 'bar') and ('foo1', 'bar1') in \
134
134
                        [(k, v) for k, v in shelf.items()])
135
135
 
136
 
    def test_broked_metadata_without_backup(self):
 
136
    def test_broken_metadata_without_backup(self):
137
137
        """test the shelf behavior when it hit a broken metadata file without
138
138
        backup.
139
139
        """
148
148
            f.write(BROKEN_PICKLE)
149
149
        self.assertRaises(KeyError, self.shelf.__getitem__, 'broken_pickle')
150
150
 
151
 
    def test_broked_metadata_with_backup(self):
 
151
    def test_broken_metadata_with_backup(self):
152
152
        """test that each time a metadata file is updated a .old is kept"""
153
153
        self.shelf['bad_file'] = {'value':'old'}
154
154
        path = self.shelf.key_file('bad_file')
254
254
        self.assertEquals(shelf.values['foo'],
255
255
                          cPickle.dumps('bar', protocol=2))
256
256
 
 
257
    def test_broken_metadata_iteritems(self):
 
258
        """Test that broken metadata is ignored during iteritems."""
 
259
        self.shelf['ok_key'] = {'status':'this is valid metadata'}
 
260
        self.shelf['bad_file'] = {}
 
261
        path = self.shelf.key_file('bad_file')
 
262
        open(path, 'w').close()
 
263
        self.assertRaises(KeyError, self.shelf.__getitem__, 'bad_file')
 
264
        self.assertEquals(1, len(list(self.shelf.iteritems())))
 
265
        self.assertFalse(os.path.exists(path))
 
266
 
 
267
        self.shelf['broken_pickle'] = {}
 
268
        path = self.shelf.key_file('broken_pickle')
 
269
        with open(path, 'w') as f:
 
270
            f.write(BROKEN_PICKLE)
 
271
        self.assertRaises(KeyError, self.shelf.__getitem__, 'broken_pickle')
 
272
        self.assertEquals(1, len(list(self.shelf.iteritems())))
 
273
        self.assertFalse(os.path.exists(path))
 
274
 
 
275
    def test_broken_metadata_items(self):
 
276
        """Test that broken metadata is ignored during iteritems."""
 
277
        self.shelf['ok_key'] = {'status':'this is valid metadata'}
 
278
        self.shelf['bad_file'] = {}
 
279
        path = self.shelf.key_file('bad_file')
 
280
        open(path, 'w').close()
 
281
        self.assertRaises(KeyError, self.shelf.__getitem__, 'bad_file')
 
282
        self.assertEquals(1, len(list(self.shelf.items())))
 
283
        self.assertFalse(os.path.exists(path))
 
284
 
 
285
        self.shelf['broken_pickle'] = {}
 
286
        path = self.shelf.key_file('broken_pickle')
 
287
        with open(path, 'w') as f:
 
288
            f.write(BROKEN_PICKLE)
 
289
        self.assertRaises(KeyError, self.shelf.__getitem__, 'broken_pickle')
 
290
        self.assertEquals(1, len(list(self.shelf.items())))
 
291
        self.assertFalse(os.path.exists(path))
 
292
 
257
293
 
258
294
class CachedFileShelfTests(TestFileShelf):
259
295
    """TestFileShelf tests but using CachedFileShelf"""
273
309
        self.shelf['realkey']
274
310
        self.assertEquals(self.shelf.cache_hits, 1)
275
311
 
276
 
    def test_broked_metadata_with_backup(self):
 
312
    def test_broken_metadata_with_backup(self):
277
313
        """overrides parent test as we have the value in the cache."""
278
314
        self.shelf['bad_file'] = {'value':'old'}
279
315
        path = self.shelf.key_file('bad_file')