Ejemplo n.º 1
0
    def test_clean(self, build_backup_directory):
        backup_dir = str(build_backup_directory["backup_dir"])
        group = CompleteBackupGroup(name="test",
                                    backup_dir=backup_dir,
                                    hosts=["r:.*"])
        group.scan_backup_dir()
        nb_initial_backups = sum(len(b) for b in group.backups.values())

        cleaned = group.clean(hourly=2, daily=3, weekly=1, monthly=1, yearly=2)
        backups_def = list_backups_by_domain(str(backup_dir))
        expected_dates = sorted((
            arrow.get("2016-07-08 19:40:02").to("local"),
            arrow.get("2016-07-08 18:30:02").to("local"),
            arrow.get("2016-07-08 17:40:02").to("local"),
            arrow.get("2016-07-07 19:40:02").to("local"),
            arrow.get("2016-07-06 20:40:02").to("local"),
            arrow.get("2016-03-08 14:28:13").to("local"),
            arrow.get("2014-05-01 00:30:00").to("local"),
        ))

        for domain, backups in group.backups.items():
            dates = sorted(b.date for b in backups)
            assert dates == expected_dates
            assert len(backups_def[domain]) == len(backups)

        nb_remaining_backups = sum(len(b) for b in group.backups.values())
        assert len(cleaned) == nb_initial_backups - nb_remaining_backups
Ejemplo n.º 2
0
def test_list_backups_by_domain(build_backup_directory):
    backup_dir = str(build_backup_directory["backup_dir"])
    backup_dates = tuple(build_backup_directory["backup_dates"])
    domain_names = build_backup_directory["domain_names"]

    backups = list_backups_by_domain(str(backup_dir))
    assert sorted(backups.keys()) == sorted(domain_names)

    def expected_backups(domain_id, domain_name):
        for backup_date in backup_dates:
            str_backup_date = backup_date.strftime("%Y%m%d-%H%M%S")
            json_filename = "{}_{}_{}.json".format(
                str_backup_date, domain_id, domain_name
            )
            json_path = os.path.join(backup_dir, domain_name, json_filename)

            assert os.path.isfile(json_path)
            with open(json_path, "r") as json_file:
                yield (json_path, json.load(json_file))

    for domain_id, domain_name in enumerate(domain_names):
        assert (
            sorted(expected_backups(domain_id, domain_name)) ==
            sorted(backups[domain_name])
        )
Ejemplo n.º 3
0
    def test_scan_backup_dir_without_host(self, build_backup_directory):
        backup_dir = str(build_backup_directory["backup_dir"])
        backups_def = list_backups_by_domain(str(backup_dir))

        group = CompleteBackupGroup(
            name="test", backup_dir=backup_dir, hosts=[]
        )
        group.scan_backup_dir()

        assert not group.backups.keys()
Ejemplo n.º 4
0
    def test_scan_backup_dir(self, build_backup_directory):
        backup_dir = str(build_backup_directory["backup_dir"])
        backups_def = list_backups_by_domain(str(backup_dir))

        group = CompleteBackupGroup(name="test",
                                    backup_dir=backup_dir,
                                    hosts=("r:.*", ))
        group.scan_backup_dir()

        assert sorted(group.backups.keys()) == sorted(backups_def.keys())
        for dom in group.backups:
            assert len(group.backups[dom]) == len(backups_def[dom])
Ejemplo n.º 5
0
    def test_scan_backup_dir_several_patterns(self, build_backup_directory):
        backup_dir = str(build_backup_directory["backup_dir"])
        backups_def = list_backups_by_domain(str(backup_dir))

        # g: should do nothing for now, but test if passing
        group = CompleteBackupGroup(name="test",
                                    backup_dir=backup_dir,
                                    hosts=("a", "r:^[b-z].*", "g:all"))
        group.scan_backup_dir()

        assert group.backups
        assert sorted(group.backups.keys()) == sorted(backups_def.keys())
        for dom in group.backups:
            assert len(group.backups[dom]) == len(backups_def[dom])