Example #1
0
    def test_folder_conflict(self):
        # delete a folder on one side, but change content on other side 
        # Note: currently
#         raise SkipTest
        _write_test_file("local/folder1/file1_1.txt", dt="2014-01-01 13:00:00", content="local 13:00")
        _remove_test_folder("remote/folder1")

        opts = {}
        stats = _sync_test_folders(opts)
#         pprint(stats)
        self.assertEqual(stats["files_written"], 0)
        self.assertEqual(stats["download_files_written"], 0)
        self.assertEqual(stats["upload_files_written"], 0)
        self.assertEqual(stats["files_deleted"], 0)
        self.assertEqual(stats["dirs_deleted"], 1)
        self.assertEqual(stats["conflict_files"], 0)        

        expect_local = {
            'file1.txt': {'content': 'local1', 'date': '2014-01-01 12:00:00'},
            'file2.txt': {'content': 'local2', 'date': '2014-01-01 12:00:00'},
            'file3.txt': {'content': 'local3', 'date': '2014-01-01 12:00:00'},
            'file4.txt': {'content': 'local4', 'date': '2014-01-01 12:00:00'},
            'file5.txt': {'content': 'local5', 'date': '2014-01-01 12:00:00'},
            'file6.txt': {'content': 'local6', 'date': '2014-01-01 12:00:00'},
            'file7.txt': {'content': 'local7', 'date': '2014-01-01 12:00:00'},
            'file8.txt': {'content': 'local8', 'date': '2014-01-01 12:00:00'},
#             'folder1/file1_1.txt': {'content': 'local1_1', 'date': '2014-01-01 12:00:00'},
            'folder2/file2_1.txt': {'content': 'local2_1', 'date': '2014-01-01 12:00:00'},
            'folder3/file3_1.txt': {'content': 'local3_1', 'date': '2014-01-01 12:00:00'},
            'folder4/file4_1.txt': {'content': 'local4_1', 'date': '2014-01-01 12:00:00'},
            }
        self.assertDictEqual(_get_test_folder("local"), expect_local)
        self.assertDictEqual(_get_test_folder("remote"), expect_local)
Example #2
0
    def _transfer_files(self, count, size):
        temp1_path = os.path.join(PYFTPSYNC_TEST_FOLDER, "temp1")
        _empty_folder(temp1_path)  # remove standard test files

        local = FsTarget(temp1_path)
        remote = self.remote

        for i in range(count):
            _write_test_file("temp1/file_%s.txt" % i, size=size)

        # Upload all of /temp1 to remote

        opts = {
            "force": False,
            "delete": False,
            "verbose": 3,
            "dry_run": False
        }
        s = UploadSynchronizer(local, remote, opts)
        s.run()
        stats = s.get_stats()
        #        pprint(stats)

        self.assertEqual(stats["files_written"], count)
        self.assertEqual(stats["bytes_written"], count * size)
        #        pprint(stats)
        print("Upload %s x %s bytes took %s: %s" %
              (count, size, stats["upload_write_time"],
               stats["upload_rate_str"]),
              file=sys.stderr)

        # Download all of remote to /temp2

        local = FsTarget(os.path.join(PYFTPSYNC_TEST_FOLDER, "temp2"))

        opts = {"force": False, "delete": True, "verbose": 3, "dry_run": False}
        s = DownloadSynchronizer(local, remote, opts)
        s.run()
        stats = s.get_stats()
        #        pprint(stats)

        self.assertEqual(stats["files_written"], count)
        self.assertEqual(stats["bytes_written"], count * size)

        #        pprint(stats)
        print("Download %s x %s bytes took %s: %s" %
              (count, size, stats["download_write_time"],
               stats["download_rate_str"]),
              file=sys.stderr)
Example #3
0
    def _transfer_files(self, count, size):
        temp1_path = os.path.join(PYFTPSYNC_TEST_FOLDER, "local")
        _empty_folder(temp1_path) # remove standard test files 

        local = FsTarget(temp1_path)
        remote = self.remote
        
        for i in range(count):
            _write_test_file("local/file_%s.txt" % i, size=size)

        # Upload all of temp/local to remote
        
        opts = {"force": False, "delete": False, "verbose": 3, "dry_run": False}
        s = UploadSynchronizer(local, remote, opts)
        s.run()
        stats = s.get_stats()
#        pprint(stats)

        self.assertEqual(stats["files_written"], count)
        self.assertEqual(stats["bytes_written"], count * size)
#        pprint(stats)
        print("Upload %s x %s bytes took %s: %s" % (count, size, stats["upload_write_time"], stats["upload_rate_str"]), file=sys.stderr)

        # Download all of remote to temp/remote
        
        local = FsTarget(os.path.join(PYFTPSYNC_TEST_FOLDER, "remote"))

        opts = {"force": False, "delete": True, "verbose": 3, "dry_run": False}
        s = DownloadSynchronizer(local, remote, opts)
        s.run()
        stats = s.get_stats()
#        pprint(stats)

        self.assertEqual(stats["files_written"], count)
        self.assertEqual(stats["bytes_written"], count * size)

#        pprint(stats)
        print("Download %s x %s bytes took %s: %s" % (count, size, stats["download_write_time"], stats["download_rate_str"]), file=sys.stderr)
Example #4
0
    def _do_run_suite(self, opts):
        """Modify both folders and run sync with specific options.
        
                                  Local           Remote
          file1.txt               13:00           12:00
          file2.txt                 x             12:00
          file3.txt               12:00           13:00
          file4.txt               12:00             x
          file5.txt               13:00           13:00:05     CONFLICT!
          file6.txt               13:00:05        13:00        CONFLICT!
          file7.txt                 x             13:00        CONFLICT!
          file8.txt               13:00             x          CONFLICT!
          folder1/file1_1.txt     13.00
          folder2/file2_1.txt       x             12:00        CONFLICT (folder deleted)
          folder3/file3_1.txt     12:00           13:00        CONFLICT
          folder4/file4_1.txt     12:00             x          CONFLICT (folder deleted)
          new_file1.txt           13:00             -
          new_file2.txt             -             13:00
        """
        # Change, remove, and add local only
        _write_test_file("local/file1.txt", dt="2014-01-01 13:00:00", content="local 13:00")
        _remove_test_file("local/file2.txt")
        _write_test_file("local/new_file1.txt", dt="2014-01-01 13:00:00", content="local 13:00")
        _write_test_file("local/folder1/file1_1.txt", dt="2014-01-01 13:00:00", content="local 13:00")
        _remove_test_folder("local/folder2")
        # Change, remove, and add remote only
        _write_test_file("remote/file3.txt", dt="2014-01-01 13:00:00", content="remote 13:00")
        _remove_test_file("remote/file4.txt")
        _write_test_file("remote/new_file2.txt", dt="2014-01-01 13:00:00", content="remote 13:00")
        _write_test_file("remote/folder3/file3_1.txt", dt="2014-01-01 13:00:00", content="remote 13:00")
        _remove_test_folder("remote/folder4")
        # Conflict: changed local and remote, remote is newer
        _write_test_file("local/file5.txt", dt="2014-01-01 13:00:00", content="local 13:00")
        _write_test_file("remote/file5.txt", dt="2014-01-01 13:00:05", content="remote 13:00:05")
        # Conflict: changed local and remote, local is newer
        _write_test_file("local/file6.txt", dt="2014-01-01 13:00:05", content="local 13:00:05")
        _write_test_file("remote/file6.txt", dt="2014-01-01 13:00:00", content="remote 13:00")
        # Conflict: removed local, but modified remote
        _remove_test_file("local/file7.txt")
        _write_test_file("remote/file7.txt", dt="2014-01-01 13:00:00", content="remote 13:00")
        # Conflict: removed remote, but modified local
        _write_test_file("local/file8.txt", dt="2014-01-01 13:00:00", content="local 13:00")
        _remove_test_file("remote/file8.txt")

        # Synchronize folders
#         stats = self._do_sync(opts)
        stats = _sync_test_folders(opts)
        return stats