mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-21 05:53:12 +00:00
Repair tests.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
50c2cc575f
commit
c7091ef6e6
@ -33,9 +33,7 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
self.magicfolder = None
|
self.magicfolder = None
|
||||||
|
|
||||||
def _get_count(self, name, client=None):
|
def _get_count(self, name, client=None):
|
||||||
if client is not None:
|
return (client or self).stats_provider.get_stats()["counters"].get('magic_folder.%s' % (name,), 0)
|
||||||
return client.stats_provider.get_stats()["counters"].get(name, 0)
|
|
||||||
return self.stats_provider.get_stats()["counters"].get(name, 0)
|
|
||||||
|
|
||||||
def _createdb(self):
|
def _createdb(self):
|
||||||
dbfile = abspath_expanduser_unicode(u"magicfolderdb.sqlite", base=self.basedir)
|
dbfile = abspath_expanduser_unicode(u"magicfolderdb.sqlite", base=self.basedir)
|
||||||
@ -99,9 +97,9 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
d = self.create_invite_join_magic_folder(u"Alice", self.local_dir)
|
d = self.create_invite_join_magic_folder(u"Alice", self.local_dir)
|
||||||
d.addCallback(self._create_magicfolder)
|
d.addCallback(self._create_magicfolder)
|
||||||
|
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.dirs_monitored'), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.dirs_monitored'), 1))
|
||||||
d.addBoth(self.cleanup)
|
d.addBoth(self.cleanup)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.dirs_monitored'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.dirs_monitored'), 0))
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def test_move_tree(self):
|
def test_move_tree(self):
|
||||||
@ -133,10 +131,10 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
self.notify(to_filepath(new_empty_tree_dir), self.inotify.IN_MOVED_TO)
|
self.notify(to_filepath(new_empty_tree_dir), self.inotify.IN_MOVED_TO)
|
||||||
return d2
|
return d2
|
||||||
d.addCallback(_check_move_empty_tree)
|
d.addCallback(_check_move_empty_tree)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'), 1))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_uploaded'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_uploaded'), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.directories_created'), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.directories_created'), 1))
|
||||||
|
|
||||||
def _check_move_small_tree(res):
|
def _check_move_small_tree(res):
|
||||||
self.mkdir_nonascii(small_tree_dir)
|
self.mkdir_nonascii(small_tree_dir)
|
||||||
@ -147,10 +145,10 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
self.notify(to_filepath(new_small_tree_dir), self.inotify.IN_MOVED_TO)
|
self.notify(to_filepath(new_small_tree_dir), self.inotify.IN_MOVED_TO)
|
||||||
return d2
|
return d2
|
||||||
d.addCallback(_check_move_small_tree)
|
d.addCallback(_check_move_small_tree)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'), 3))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'), 3))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_uploaded'), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_uploaded'), 1))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.directories_created'), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.directories_created'), 2))
|
||||||
|
|
||||||
def _check_moved_tree_is_watched(res):
|
def _check_moved_tree_is_watched(res):
|
||||||
d2 = defer.Deferred()
|
d2 = defer.Deferred()
|
||||||
@ -159,10 +157,10 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
self.notify(to_filepath(abspath_expanduser_unicode(u"another", base=new_small_tree_dir)), self.inotify.IN_CLOSE_WRITE)
|
self.notify(to_filepath(abspath_expanduser_unicode(u"another", base=new_small_tree_dir)), self.inotify.IN_CLOSE_WRITE)
|
||||||
return d2
|
return d2
|
||||||
d.addCallback(_check_moved_tree_is_watched)
|
d.addCallback(_check_moved_tree_is_watched)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'), 4))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'), 4))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_uploaded'), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_uploaded'), 2))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.directories_created'), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.directories_created'), 2))
|
||||||
|
|
||||||
# Files that are moved out of the upload directory should no longer be watched.
|
# Files that are moved out of the upload directory should no longer be watched.
|
||||||
def _move_dir_away(ign):
|
def _move_dir_away(ign):
|
||||||
@ -176,10 +174,10 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
return
|
return
|
||||||
d.addCallback(create_file)
|
d.addCallback(create_file)
|
||||||
d.addCallback(lambda ign: time.sleep(1))
|
d.addCallback(lambda ign: time.sleep(1))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'), 4))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'), 4))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_uploaded'), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_uploaded'), 2))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.directories_created'), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.directories_created'), 2))
|
||||||
|
|
||||||
d.addBoth(self.cleanup)
|
d.addBoth(self.cleanup)
|
||||||
return d
|
return d
|
||||||
@ -210,8 +208,8 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
self.notify(to_filepath(test_file), self.inotify.IN_CLOSE_WRITE)
|
self.notify(to_filepath(test_file), self.inotify.IN_CLOSE_WRITE)
|
||||||
return d2
|
return d2
|
||||||
d.addCallback(create_test_file)
|
d.addCallback(create_test_file)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'), 1))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
|
|
||||||
def restart(ignore):
|
def restart(ignore):
|
||||||
print "restart"
|
print "restart"
|
||||||
@ -234,8 +232,8 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
#d3.addCallback(self._create_magicfolder)
|
#d3.addCallback(self._create_magicfolder)
|
||||||
return d3
|
return d3
|
||||||
d.addCallback(restart)
|
d.addCallback(restart)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
d.addBoth(self.cleanup)
|
d.addBoth(self.cleanup)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
@ -267,14 +265,14 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
d.addCallback(lambda ign: self._check_file(name_u, "test"*100))
|
d.addCallback(lambda ign: self._check_file(name_u, "test"*100))
|
||||||
|
|
||||||
# TODO: test that causes an upload failure.
|
# TODO: test that causes an upload failure.
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_failed'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_failed'), 0))
|
||||||
|
|
||||||
d.addBoth(self.cleanup)
|
d.addBoth(self.cleanup)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def _check_file(self, name_u, data, temporary=False):
|
def _check_file(self, name_u, data, temporary=False):
|
||||||
previously_uploaded = self._get_count('magic_folder.objects_succeeded')
|
previously_uploaded = self._get_count('uploader.objects_succeeded')
|
||||||
previously_disappeared = self._get_count('magic_folder.objects_disappeared')
|
previously_disappeared = self._get_count('uploader.objects_disappeared')
|
||||||
|
|
||||||
# Note: this relies on the fact that we only get one IN_CLOSE_WRITE notification per file
|
# Note: this relies on the fact that we only get one IN_CLOSE_WRITE notification per file
|
||||||
# (otherwise we would get a defer.AlreadyCalledError). Should we be relying on that?
|
# (otherwise we would get a defer.AlreadyCalledError). Should we be relying on that?
|
||||||
@ -300,16 +298,16 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
self.notify(path, self.inotify.IN_CLOSE_WRITE)
|
self.notify(path, self.inotify.IN_CLOSE_WRITE)
|
||||||
|
|
||||||
if temporary:
|
if temporary:
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_disappeared'),
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_disappeared'),
|
||||||
previously_disappeared + 1))
|
previously_disappeared + 1))
|
||||||
else:
|
else:
|
||||||
d.addCallback(lambda ign: self.upload_dirnode.get(name_u))
|
d.addCallback(lambda ign: self.upload_dirnode.get(name_u))
|
||||||
d.addCallback(download_to_data)
|
d.addCallback(download_to_data)
|
||||||
d.addCallback(lambda actual_data: self.failUnlessReallyEqual(actual_data, data))
|
d.addCallback(lambda actual_data: self.failUnlessReallyEqual(actual_data, data))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded'),
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded'),
|
||||||
previously_uploaded + 1))
|
previously_uploaded + 1))
|
||||||
|
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued'), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued'), 0))
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def _check_version_in_dmd(self, magicfolder, relpath_u, expected_version):
|
def _check_version_in_dmd(self, magicfolder, relpath_u, expected_version):
|
||||||
@ -351,10 +349,10 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
d.addCallback(lambda ign: self._check_version_in_dmd(self.alice_magicfolder, u"file1", 0))
|
d.addCallback(lambda ign: self._check_version_in_dmd(self.alice_magicfolder, u"file1", 0))
|
||||||
d.addCallback(lambda ign: self._check_version_in_local_db(self.alice_magicfolder, u"file1", 0))
|
d.addCallback(lambda ign: self._check_version_in_local_db(self.alice_magicfolder, u"file1", 0))
|
||||||
|
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded', client=self.alice_magicfolder._client), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded', client=self.alice_magicfolder._client), 1))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_uploaded', client=self.alice_magicfolder._client), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_uploaded', client=self.alice_magicfolder._client), 1))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued', client=self.alice_magicfolder._client), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued', client=self.alice_magicfolder._client), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.directories_created', client=self.alice_magicfolder._client), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.directories_created', client=self.alice_magicfolder._client), 0))
|
||||||
|
|
||||||
def Bob_wait_for_download(result):
|
def Bob_wait_for_download(result):
|
||||||
print "Bob waits for a download\n"
|
print "Bob waits for a download\n"
|
||||||
@ -363,7 +361,7 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
return d2
|
return d2
|
||||||
d.addCallback(Bob_wait_for_download)
|
d.addCallback(Bob_wait_for_download)
|
||||||
#d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, u"file1", 0))
|
#d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, u"file1", 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_downloaded', client=self.bob_magicfolder._client), 1))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('downloader.objects_downloaded', client=self.bob_magicfolder._client), 1))
|
||||||
|
|
||||||
# test deletion of file behavior
|
# test deletion of file behavior
|
||||||
def Alice_delete_file(result):
|
def Alice_delete_file(result):
|
||||||
@ -374,9 +372,9 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
return None
|
return None
|
||||||
d.addCallback(Alice_delete_file)
|
d.addCallback(Alice_delete_file)
|
||||||
d.addCallback(Alice_wait_for_upload)
|
d.addCallback(Alice_wait_for_upload)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded', client=self.alice_magicfolder._client), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded', client=self.alice_magicfolder._client), 2))
|
||||||
d.addCallback(Bob_wait_for_download)
|
d.addCallback(Bob_wait_for_download)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_downloaded', client=self.bob_magicfolder._client), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('downloader.objects_downloaded', client=self.bob_magicfolder._client), 2))
|
||||||
|
|
||||||
def Alice_rewrite_file(result):
|
def Alice_rewrite_file(result):
|
||||||
print "Alice rewrites file\n"
|
print "Alice rewrites file\n"
|
||||||
@ -387,10 +385,10 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
|||||||
d.addCallback(Alice_rewrite_file)
|
d.addCallback(Alice_rewrite_file)
|
||||||
|
|
||||||
d.addCallback(Alice_wait_for_upload)
|
d.addCallback(Alice_wait_for_upload)
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_succeeded', client=self.alice_magicfolder._client), 3))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded', client=self.alice_magicfolder._client), 3))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.files_uploaded', client=self.alice_magicfolder._client), 2))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.files_uploaded', client=self.alice_magicfolder._client), 2))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.objects_queued', client=self.alice_magicfolder._client), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_queued', client=self.alice_magicfolder._client), 0))
|
||||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('magic_folder.directories_created', client=self.alice_magicfolder._client), 0))
|
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.directories_created', client=self.alice_magicfolder._client), 0))
|
||||||
|
|
||||||
def cleanup_Alice_and_Bob(result):
|
def cleanup_Alice_and_Bob(result):
|
||||||
d = defer.succeed(None)
|
d = defer.succeed(None)
|
||||||
|
Loading…
Reference in New Issue
Block a user