Add basic bob upload test and fix conflict detect

This commit is contained in:
David Stainton 2015-10-27 09:44:01 +01:00 committed by Daira Hopwood
parent 44e2c6acc8
commit 976ea15863
2 changed files with 33 additions and 8 deletions

View File

@ -688,9 +688,10 @@ class Downloader(QueueMixin, WriteFileMixin):
local_last_downloaded_uri = self._db.get_last_downloaded_uri(relpath_u) local_last_downloaded_uri = self._db.get_last_downloaded_uri(relpath_u)
print "metadata %r" % (metadata,) print "metadata %r" % (metadata,)
print "<<<<--- if %r != %r" % (dmd_last_downloaded_uri, local_last_downloaded_uri) print "<<<<--- if %r != %r" % (dmd_last_downloaded_uri, local_last_downloaded_uri)
if dmd_last_downloaded_uri is not None and dmd_last_downloaded_uri != local_last_downloaded_uri: if dmd_last_downloaded_uri is not None and local_last_downloaded_uri is not None:
is_conflict = True if dmd_last_downloaded_uri != local_last_downloaded_uri:
self._count('objects_conflicted') is_conflict = True
self._count('objects_conflicted')
#dmd_last_uploaded_uri = metadata.get('last_uploaded_uri', None) #dmd_last_uploaded_uri = metadata.get('last_uploaded_uri', None)
#local_last_uploaded_uri = ... #local_last_uploaded_uri = ...

View File

@ -681,9 +681,13 @@ class MagicFolderTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, ReallyEqual
self.failUnlessReallyEqual(self._get_count('uploader.'+name, client=self.bob_magicfolder._client), self.failUnlessReallyEqual(self._get_count('uploader.'+name, client=self.bob_magicfolder._client),
expected) expected)
def _check_downloader_count(ign, name, expected): def _check_downloader_count(ign, name, expected, alice=True):
self.failUnlessReallyEqual(self._get_count('downloader.'+name, client=self.bob_magicfolder._client), if alice:
expected) self.failUnlessReallyEqual(self._get_count('downloader.'+name, client=self.bob_magicfolder._client),
expected)
else:
self.failUnlessReallyEqual(self._get_count('downloader.'+name, client=self.alice_magicfolder._client),
expected)
def _wait_for_Alice(ign, downloaded_d): def _wait_for_Alice(ign, downloaded_d):
print "Now waiting for Alice to download\n" print "Now waiting for Alice to download\n"
@ -727,6 +731,8 @@ class MagicFolderTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, ReallyEqual
d.addCallback(_check_uploader_count, 'files_uploaded', 1) d.addCallback(_check_uploader_count, 'files_uploaded', 1)
d.addCallback(_check_uploader_count, 'objects_queued', 0) d.addCallback(_check_uploader_count, 'objects_queued', 0)
d.addCallback(_check_uploader_count, 'directories_created', 0) d.addCallback(_check_uploader_count, 'directories_created', 0)
d.addCallback(_check_uploader_count, 'objects_conflicted', 0)
d.addCallback(_check_uploader_count, 'objects_conflicted', 0, alice=False)
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(_check_downloader_count, 'objects_failed', 0) d.addCallback(_check_downloader_count, 'objects_failed', 0)
@ -774,6 +780,8 @@ class MagicFolderTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, ReallyEqual
d.addCallback(_check_uploader_count, 'files_uploaded', 3) d.addCallback(_check_uploader_count, 'files_uploaded', 3)
d.addCallback(_check_uploader_count, 'objects_queued', 0) d.addCallback(_check_uploader_count, 'objects_queued', 0)
d.addCallback(_check_uploader_count, 'directories_created', 0) d.addCallback(_check_uploader_count, 'directories_created', 0)
d.addCallback(_check_downloader_count, 'objects_conflicted', 0)
d.addCallback(_check_downloader_count, 'objects_conflicted', 0, alice=False)
d.addCallback(lambda ign: self._check_version_in_dmd(self.bob_magicfolder, u"file1", 2)) d.addCallback(lambda ign: self._check_version_in_dmd(self.bob_magicfolder, u"file1", 2))
d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, u"file1", 2)) d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, u"file1", 2))
@ -802,19 +810,35 @@ class MagicFolderTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, ReallyEqual
d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, encoded_path_u, None)) d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, encoded_path_u, None))
d.addCallback(lambda ign: _check_downloader_count(None, 'objects_excluded', self.objects_excluded+1)) d.addCallback(lambda ign: _check_downloader_count(None, 'objects_excluded', self.objects_excluded+1))
d.addCallback(_check_downloader_count, 'objects_downloaded', 3) d.addCallback(_check_downloader_count, 'objects_downloaded', 3)
d.addCallback(_check_downloader_count, 'objects_conflicted', 0)
d.addCallback(_check_downloader_count, 'objects_conflicted', 0, alice=False)
# XXX # XXX
def Bob_to_rewrite_file(): def Bob_to_rewrite_file():
print "Bob rewrites file\n" print "Bob rewrites file\n"
self.file_path = abspath_expanduser_unicode(u"file2", base=self.bob_magicfolder.uploader._local_path_u) self.file_path = abspath_expanduser_unicode(u"file1", base=self.bob_magicfolder.uploader._local_path_u)
print "---- bob's file is %r" % (self.file_path,) print "---- bob's file is %r" % (self.file_path,)
fileutil.write(self.file_path, "No white rabbit to be found.") fileutil.write(self.file_path, "No white rabbit to be found.")
self.magicfolder = self.bob_magicfolder self.magicfolder = self.bob_magicfolder
self.notify(to_filepath(self.file_path), self.inotify.IN_CLOSE_WRITE) self.notify(to_filepath(self.file_path), self.inotify.IN_CLOSE_WRITE)
d.addCallback(lambda ign: _wait_for(None, Bob_to_rewrite_file, alice=False)) d.addCallback(lambda ign: _wait_for(None, Bob_to_rewrite_file, alice=False))
d.addCallback(lambda ign: self._check_version_in_dmd(self.bob_magicfolder, u"file1", 3))
d.addCallback(lambda ign: self._check_version_in_local_db(self.bob_magicfolder, u"file1", 3))
d.addCallback(_check_uploader_count, 'objects_failed', 0, alice=False)
d.addCallback(_check_uploader_count, 'objects_succeeded', 1, alice=False)
d.addCallback(_check_uploader_count, 'files_uploaded', 1, alice=False)
d.addCallback(_check_uploader_count, 'objects_queued', 0, alice=False)
d.addCallback(_check_uploader_count, 'directories_created', 0, alice=False)
d.addCallback(_check_downloader_count, 'objects_conflicted', 0)
d.addCallback(lambda ign: self._check_version_in_dmd(self.alice_magicfolder, u"file1", 3))
d.addCallback(lambda ign: self._check_version_in_local_db(self.alice_magicfolder, u"file1", 3))
d.addCallback(_check_downloader_count, 'objects_failed', 0, alice=False)
d.addCallback(_check_downloader_count, 'objects_downloaded', 1, alice=False)
d.addCallback(_check_downloader_count, 'objects_conflicted', 0, alice=False)
def _cleanup(ign, magicfolder, clock): def _cleanup(ign, magicfolder, clock):
if magicfolder is not None: if magicfolder is not None:
d2 = magicfolder.finish() d2 = magicfolder.finish()