Martin Nowak has proposed merging lp:~dawgfoto/duplicity/replicate into lp:duplicity.
Requested reviews: duplicity-team (duplicity-team) For more details, see: https://code.launchpad.net/~dawgfoto/duplicity/replicate/+merge/326009 Add integration test for newly added replicate command. Also see https://code.launchpad.net/~dawgfoto/duplicity/replicate/+merge/322836. -- Your team duplicity-team is requested to review the proposed merge of lp:~dawgfoto/duplicity/replicate into lp:duplicity.
=== added file 'testing/functional/test_replicate.py' --- testing/functional/test_replicate.py 1970-01-01 00:00:00 +0000 +++ testing/functional/test_replicate.py 2017-06-20 15:22:15 +0000 @@ -0,0 +1,79 @@ +# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*- +# +# Copyright 2002 Ben Escoto <[email protected]> +# Copyright 2007 Kenneth Loafman <[email protected]> +# +# This file is part of duplicity. +# +# Duplicity is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# Duplicity is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with duplicity; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import os +import unittest + +from duplicity import path +from . import CmdError, FunctionalTestCase + + +class ReplicateTest(FunctionalTestCase): + """ + Test backup/replicate/restore using duplicity binary + """ + + def runtest(self, dirlist, backup_options=[], replicate_options=[], restore_options=[]): + # Back up directories to local backend + current_time = 100000 + self.backup("full", dirlist[0], current_time=current_time, + options=backup_options) + for new_dir in dirlist[1:]: + current_time += 100000 + self.backup("inc", new_dir, current_time=current_time, + options=backup_options) + + # Replicate to other backend + source_url = self.backend_url + target_url = "file://testfiles/replicate_out" + self.run_duplicity(options=["replicate"] + + replicate_options + [source_url, target_url]) + + self.backend_url = target_url + + # Restore each and compare them + for i in range(len(dirlist)): + dirname = dirlist[i] + current_time = 100000 * (i + 1) + self.restore(time=current_time, options=restore_options) + self.check_same(dirname, "testfiles/restore_out") + self.verify(dirname, + time=current_time, options=restore_options) + + def check_same(self, filename1, filename2): + """Verify two filenames are the same""" + path1, path2 = path.Path(filename1), path.Path(filename2) + assert path1.compare_recursive(path2, verbose=1) + + def test_replicate(self): + """Test replication""" + self.runtest(["testfiles/dir1", "testfiles/dir2"]) + + def test_replicate_noencryption(self): + """Test replication with decryption""" + self.runtest(["testfiles/dir1", "testfiles/dir2"], + replicate_options=["--no-encryption"]) + + def test_replicate_asym(self): + """Test replication with reencryption""" + asym_options = ["--encrypt-key", self.encrypt_key1] + self.runtest(["testfiles/dir1", "testfiles/dir2"], + replicate_options=asym_options, restore_options=asym_options)
_______________________________________________ Mailing list: https://launchpad.net/~duplicity-team Post to : [email protected] Unsubscribe : https://launchpad.net/~duplicity-team More help : https://help.launchpad.net/ListHelp

