def test_full_backup_01(self):
        """ Backup (with many fragmented files) -> Restore -> check result """
        bck_params = BackupParameters()
        # Every archive will be one(1) disc.
        bck_params.single_archive_size = 200  # this ensures that each file will have multiple archives
        bck_params.disc_size = bck_params.single_archive_size

        self.do_backup_for_configuration(bck_params)
    def test_full_backup_00(self):
        """ Backup -> Restore -> check result """
        bck_params = BackupParameters()
        # Every archive will be one(1) disc.
        bck_params.single_archive_size = 1050
        bck_params.disc_size = bck_params.single_archive_size

        self.do_backup_for_configuration(bck_params)
    def test_full_backup_02(self):
        """ Backup (with many fragmented files, encrypted) -> Restore -> check result """
        bck_params = BackupParameters()
        # Every archive will be one(1) disc.
        bck_params.single_archive_size = 300  # this ensures that each file will have multiple archives
        bck_params.disc_size = bck_params.single_archive_size
        bck_params.encryption_key = "my awesome encryption key!&"

        self.do_backup_for_configuration(bck_params)
    def test_backup_02(self):
        """ Backup -> validate backup structure (encrypted) """
        bck_params = BackupParameters()
        bck_params.encryption_key = "encrypt me hard!"
        expected_extensions = ['tar.bz2.gpg', 'sqlite.gpg', 'yml']

        with tempfile.NamedTemporaryFile() as db_filename:
            with tempfile.TemporaryDirectory() as destination_dir:
                with tempfile.TemporaryDirectory() as source_dir:
                    bck_params.database_location = db_filename.name
                    bck_params.source = source_dir
                    bck_params.destination = destination_dir

                    # Every archive will be one(1) disc.
                    bck_params.single_archive_size = 1050
                    bck_params.disc_size = bck_params.single_archive_size

                    src_file_list = self.create_sourceStructure(
                        source_dir, [10, 10])
                    ctrl = BackupController(GeneralSettings())

                    # Preparations complete start backup...
                    ctrl.execute(bck_params)
                    # ... backup ended.

                    for subdir, dirs, files in os.walk(destination_dir):
                        for file in files:
                            ok = False
                            for ext in expected_extensions:
                                if file.endswith(ext):
                                    ok = True
                                    break

                            assert ok, "Found file that was not expected <%s>" % file
    def test_backup_00(self):
        """ Backup -> read database """
        bck_params = BackupParameters()

        with tempfile.NamedTemporaryFile() as db_filename:
            with tempfile.TemporaryDirectory() as destination_dir:
                with tempfile.TemporaryDirectory() as source_dir:
                    bck_params.database_location = db_filename.name
                    bck_params.source = source_dir
                    bck_params.destination = destination_dir

                    # Every archive will be one(1) disc.
                    bck_params.single_archive_size = 1050
                    bck_params.disc_size = bck_params.single_archive_size

                    src_file_list = self.create_sourceStructure(
                        source_dir, [10, 10])
                    ctrl = BackupController(GeneralSettings())

                    # Preparations complete start backup...
                    ctrl.execute(bck_params)
                    # ... backup ended.

                    db = DatabaseManager(db_filename.name)
                    backup_reader = db.read_backup(None)

                    for file in src_file_list:
                        relative_file = file[len(bck_params.database_location
                                                 ):]
                        test = backup_reader.find_relative_file(relative_file)
                        assert test is not None
Example #6
0
 def __init__(self, parameters: BackupParameters,
              general_settings: GeneralSettings):
     super(BackupDirectoryStorageController, self).__init__()
     self._current_medium_size = 0
     self._parameters = parameters
     parameters.backup_parameters = parameters.backup_parameters or DirectoryStorageBackupParameters(
     )  # TODO remove
     print(" Medium size : ", parameters.backup_parameters.medium_size)
     self._general_settings = general_settings
     self._hook_helper = HookHelper(general_settings)
     self.disc_directories = list()
     self.disc_directory = None
    def test_full_backup_04(self):
        """ Backup -> change one file -> Backup -> check if 2nd backup """
        bck_params = BackupParameters()
        # Every archive will be one(1) disc.
        bck_params.single_archive_size = 1050
        bck_params.disc_size = bck_params.single_archive_size

        with tempfile.NamedTemporaryFile() as db_filename:
            with tempfile.TemporaryDirectory() as destination_root:
                destination_dir1 = destination_root + "/0"
                os.mkdir(destination_dir1)
                destination_dir2 = destination_root + "/1"
                os.mkdir(destination_dir2)

                with tempfile.TemporaryDirectory() as source_dir:
                    bck_params.database_location = db_filename.name
                    bck_params.source = source_dir
                    bck_params.destination = destination_dir1

                    src_file_list = self.create_sourceStructure(
                        source_dir, [10, 10])
                    ctrl = BackupController(GeneralSettings())

                    # Preparations complete start backup...
                    ctrl.execute(bck_params)
                    # ... backup ended.

                    # change the source
                    self.create_test_file(src_file_list[0], -1)

                    bck_params = BackupParameters()
                    bck_params.database_location = db_filename.name
                    bck_params.source = source_dir
                    bck_params.single_archive_size = 1050
                    bck_params.disc_size = bck_params.single_archive_size
                    bck_params.destination = destination_dir2

                    ctrl = BackupController(GeneralSettings())

                    # Preparations complete start backup...
                    ctrl.execute(bck_params)
                    # ... backup ended.

                    for subdir, dirs, files in os.walk(destination_dir2):
                        assert len(dirs) != 0 or len(files) != 0, \
                            "There should be directories <%s> or files <%s>" % (dirs, files)

                    with tempfile.TemporaryDirectory() as restore_dir:
                        rst_params = RestoreParameters()
                        rst_params.database_location = db_filename.name
                        rst_params.source = destination_root
                        rst_params.destination = restore_dir
                        rst_params.encryption_key = bck_params.encryption_key

                        ctrl = RestoreController(GeneralSettings())
                        ctrl.execute(rst_params)

                        assert DirCompare(source_dir, restore_dir).compare()
    def test_full_backup_03(self):
        """ Backup -> Backup -> check if 2nd backup is empty """
        bck_params = BackupParameters()
        # Every archive will be one(1) disc.
        bck_params.single_archive_size = 1050
        bck_params.disc_size = bck_params.single_archive_size

        with tempfile.NamedTemporaryFile() as db_filename:
            with tempfile.TemporaryDirectory() as destination_dir:
                with tempfile.TemporaryDirectory() as source_dir:
                    bck_params.database_location = db_filename.name
                    bck_params.source = source_dir
                    bck_params.destination = destination_dir

                    src_file_list = self.create_sourceStructure(
                        source_dir, [10, 10])
                    ctrl = BackupController(GeneralSettings())

                    # Preparations complete start backup...
                    ctrl.execute(bck_params)
                    # ... backup ended.

                    with tempfile.TemporaryDirectory() as destination_dir2:
                        bck_params = BackupParameters()
                        bck_params.database_location = db_filename.name
                        bck_params.source = source_dir
                        bck_params.single_archive_size = 1050
                        bck_params.disc_size = bck_params.single_archive_size
                        bck_params.destination = destination_dir2

                        ctrl = BackupController(GeneralSettings())

                        # Preparations complete start backup...
                        ctrl.execute(bck_params)
                        # ... backup ended.

                        for subdir, dirs, files in os.walk(destination_dir2):
                            assert len(
                                dirs
                            ) == 0, "Found file that was not expected <%s>" % dirs