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
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]) )
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()
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])
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])