add more tests for snapshot cleaning

This commit is contained in:
Dr. Matthias Ratajczak
2022-05-04 10:39:18 +02:00
parent 89d5988ff7
commit 07960781b5
+108
View File
@@ -183,3 +183,111 @@ class TestDataset:
Snapshot, "destroy", lambda snapshot: validate_snapshot_selection(snapshot) Snapshot, "destroy", lambda snapshot: validate_snapshot_selection(snapshot)
): ):
dataset._clean_old_snapshots_for_interval("daily", 999) dataset._clean_old_snapshots_for_interval("daily", 999)
def test__clean_old_snapshots_for_interval_2(self):
def validate_snapshot_selection(snapshot: Snapshot):
nonlocal counter
print(snapshot)
str(snapshot).startswith("tank/ROOT@")
counter = counter + 1
snapshots = gen_snapshots_for_tank_ROOT()
MAX_COUNT = 30
with mock.patch.object(Dataset, "snapshots", snapshots):
with mock.patch.object(
Snapshot,
"destroy",
lambda snapshot: validate_snapshot_selection(snapshot),
):
ds = Dataset.from_string("tank/ROOT")
counter = 0
ds._clean_old_snapshots_for_interval("monthly", MAX_COUNT)
assert counter <= MAX_COUNT # not enough snapshots to reach MAX_COUNT
counter = 0
ds._clean_old_snapshots_for_interval("daily", MAX_COUNT)
assert counter == MAX_COUNT
def gen_snapshots_for_tank_ROOT() -> list[Snapshot]:
return [
Snapshot.from_string(line) for line in SNAPSHOTS.split("\n") if line.strip()
]
SNAPSHOTS = """
tank/ROOT@znap_2021-11-30-2300_monthly
tank/ROOT@znap_2021-12-31-2300_monthly
tank/ROOT@znap_2022-01-31-2300_monthly
tank/ROOT@znap_2022-02-28-2300_monthly
tank/ROOT@znap_2022-03-13-2300_weekly
tank/ROOT@znap_2022-03-20-2300_weekly
tank/ROOT@znap_2022-03-27-2200_weekly
tank/ROOT@znap_2022-03-31-2200_monthly
tank/ROOT@znap_2022-04-03-2200_weekly
tank/ROOT@znap_2022-04-03-2200_daily
tank/ROOT@znap_2022-04-04-2200_daily
tank/ROOT@znap_2022-04-05-2200_daily
tank/ROOT@znap_2022-04-06-2200_daily
tank/ROOT@znap_2022-04-07-2200_daily
tank/ROOT@znap_2022-04-08-2200_daily
tank/ROOT@znap_2022-04-09-2200_daily
tank/ROOT@znap_2022-04-10-2200_weekly
tank/ROOT@znap_2022-04-10-2200_daily
tank/ROOT@znap_2022-04-11-2200_daily
tank/ROOT@znap_2022-04-12-2200_daily
tank/ROOT@znap_2022-04-13-2200_daily
tank/ROOT@znap_2022-04-14-2200_daily
tank/ROOT@znap_2022-04-15-2200_daily
tank/ROOT@znap_2022-04-16-2200_daily
tank/ROOT@znap_2022-04-17-2200_daily
tank/ROOT@znap_2022-04-17-2200_weekly
tank/ROOT@znap_2022-04-18-2200_daily
tank/ROOT@znap_2022-04-19-2200_daily
tank/ROOT@znap_2022-04-20-2200_daily
tank/ROOT@znap_2022-04-21-2200_daily
tank/ROOT@znap_2022-04-22-2200_daily
tank/ROOT@znap_2022-04-23-2200_daily
tank/ROOT@znap_2022-04-24-2200_daily
tank/ROOT@znap_2022-04-24-2200_weekly
tank/ROOT@znap_2022-04-25-2200_daily
tank/ROOT@znap_2022-04-26-2200_daily
tank/ROOT@znap_2022-04-27-2200_daily
tank/ROOT@znap_2022-04-28-2200_daily
tank/ROOT@znap_2022-04-29-2200_daily
tank/ROOT@znap_2022-04-30-2200_daily
tank/ROOT@znap_2022-04-30-2200_monthly
tank/ROOT@znap_2022-05-01-2200_daily
tank/ROOT@znap_2022-05-01-2200_weekly
tank/ROOT@znap_2022-05-02-2200_daily
tank/ROOT@znap_2022-05-03-0900_hourly
tank/ROOT@znap_2022-05-03-1000_hourly
tank/ROOT@znap_2022-05-03-1100_hourly
tank/ROOT@znap_2022-05-03-1200_hourly
tank/ROOT@znap_2022-05-03-1300_hourly
tank/ROOT@znap_2022-05-03-1400_hourly
tank/ROOT@znap_2022-05-03-1500_hourly
tank/ROOT@znap_2022-05-03-1600_hourly
tank/ROOT@znap_2022-05-03-1700_hourly
tank/ROOT@znap_2022-05-03-1800_hourly
tank/ROOT@znap_2022-05-03-1900_hourly
tank/ROOT@znap_2022-05-03-2000_hourly
tank/ROOT@znap_2022-05-03-2100_hourly
tank/ROOT@znap_2022-05-03-2200_hourly
tank/ROOT@znap_2022-05-03-2200_daily
tank/ROOT@znap_2022-05-03-2300_hourly
tank/ROOT@znap_2022-05-04-0000_hourly
tank/ROOT@znap_2022-05-04-0100_hourly
tank/ROOT@znap_2022-05-04-0200_hourly
tank/ROOT@znap_2022-05-04-0300_hourly
tank/ROOT@znap_2022-05-04-0400_hourly
tank/ROOT@znap_2022-05-04-0500_hourly
tank/ROOT@znap_2022-05-04-0600_hourly
tank/ROOT@znap_2022-05-04-0700_hourly
tank/ROOT@znap_2022-05-04-0715_frequent
tank/ROOT@znap_2022-05-04-0730_frequent
tank/ROOT@znap_2022-05-04-0745_frequent
tank/ROOT@znap_2022-05-04-0800_hourly
tank/ROOT@znap_2022-05-04-0800_frequent
"""