From ea390df6f62ba6d89c7edc6aefb181a1bf196559 Mon Sep 17 00:00:00 2001 From: Edwin Eefting Date: Mon, 11 May 2020 23:47:04 +0200 Subject: [PATCH] added first unit test --- bin/test_thinner.py | 154 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 bin/test_thinner.py diff --git a/bin/test_thinner.py b/bin/test_thinner.py new file mode 100644 index 0000000..161eaf5 --- /dev/null +++ b/bin/test_thinner.py @@ -0,0 +1,154 @@ + +#default test stuff +import unittest +from zfs_autobackup import * + +#test specific +import random +import sys +import time +import pprint + +class Thing: + def __init__(self, timestamp): + self.timestamp=timestamp + + def __str__(self): + # age=now-self.timestamp + struct=time.localtime(self.timestamp) + return("{}".format(time.strftime("%Y-%m-%d %H:%M:%S",struct))) + + +class TestThinner(unittest.TestCase): + + def setUp(self): + + return super().setUp() + + def test_incremental(self): + + ok=['2023-01-01 11:09:50', + '2024-01-01 21:06:35', + '2025-01-01 10:59:44', + '2026-01-01 19:06:41', + '2026-03-08 03:27:07', + '2026-04-07 04:29:04', + '2026-05-07 20:39:31', + '2026-06-06 08:06:14', + '2026-07-06 05:53:12', + '2026-08-05 08:23:43', + '2026-09-04 23:13:46', + '2026-10-04 02:50:48', + '2026-11-03 02:52:55', + '2026-12-03 16:04:25', + '2027-01-01 10:02:16', + '2027-01-02 10:59:16', + '2027-01-28 10:54:49', + '2027-02-01 09:59:47', + '2027-02-04 04:24:33', + '2027-02-11 02:51:49', + '2027-02-18 05:09:25', + '2027-02-19 15:21:39', + '2027-02-20 14:41:38', + '2027-02-21 08:33:50', + '2027-02-22 08:39:18', + '2027-02-23 08:52:18', + '2027-02-24 03:16:31', + '2027-02-24 03:17:08', + '2027-02-24 06:26:13', + '2027-02-24 13:56:41'] + + #some arbitrary date + now=1589229252 + #we want deterministic results + random.seed(1337) + thinner=Thinner("5,10s1min,1d1w,1w1m,1m12m,1y5y") + things=[] + + #thin incrementally while adding + for i in range(0,5000): + + #increase random amount of time and maybe add a thing + now=now+random.randint(0,3600*24) + if random.random()>=0: + things.append(Thing(now)) + + (keeps, removes)=thinner.thin(things, now=now) + things=keeps + + + result=[] + for thing in things: + result.append(str(thing)) + + print() + pprint.pprint(result) + + self.assertEqual(result, ok) + + + def test_full(self): + + ok=['2022-02-24 16:54:37', + '2023-01-01 11:09:50', + '2024-01-01 21:06:35', + '2025-01-01 10:59:44', + '2026-01-01 19:06:41', + '2026-03-02 00:23:58', + '2026-03-08 03:27:07', + '2026-04-07 04:29:04', + '2026-05-07 20:39:31', + '2026-06-06 08:06:14', + '2026-07-06 05:53:12', + '2026-08-05 08:23:43', + '2026-09-04 23:13:46', + '2026-10-04 02:50:48', + '2026-11-03 02:52:55', + '2026-12-03 16:04:25', + '2027-01-01 10:02:16', + '2027-01-02 10:59:16', + '2027-01-25 21:00:35', + '2027-01-28 10:54:49', + '2027-02-01 09:59:47', + '2027-02-04 04:24:33', + '2027-02-11 02:51:49', + '2027-02-18 05:09:25', + '2027-02-19 15:21:39', + '2027-02-20 14:41:38', + '2027-02-21 08:33:50', + '2027-02-22 08:39:18', + '2027-02-23 08:52:18', + '2027-02-24 03:16:31', + '2027-02-24 03:17:08', + '2027-02-24 06:26:13', + '2027-02-24 13:56:41'] + + + #some arbitrary date + now=1589229252 + #we want deterministic results + random.seed(1337) + thinner=Thinner("5,10s1min,1d1w,1w1m,1m12m,1y5y") + things=[] + + for i in range(0,5000): + + #increase random amount of time and maybe add a thing + now=now+random.randint(0,3600*24) + if random.random()>=0: + things.append(Thing(now)) + + (things, removes)=thinner.thin(things, now=now) + + result=[] + for thing in things: + result.append(str(thing)) + + print() + pprint.pprint(result) + + self.assertEqual(result, ok) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file