added first unit test

This commit is contained in:
Edwin Eefting 2020-05-11 23:47:04 +02:00
parent de877362c9
commit ea390df6f6

154
bin/test_thinner.py Normal file
View File

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