135 lines
6.3 KiB
Python
135 lines
6.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import unittest
|
|
import datetime
|
|
|
|
import mock
|
|
import dateutil
|
|
import dateutil.tz
|
|
|
|
from .. import backup
|
|
|
|
class NextDueRunTests(unittest.TestCase):
|
|
specmonthly = [backup.MONTHLY]
|
|
specm = [backup.MONDAY]
|
|
specwkly = [backup.WEEKLY]
|
|
specmw = [backup.MONDAY, backup.WEDNESDAY]
|
|
speccomplex = [backup.MONTHLY, backup.WEEKLY, backup.FRIDAY]
|
|
tests = [
|
|
(specm, datetime.datetime(month=11, day=17, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=24, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"basics_ran_today"),
|
|
(specm, datetime.datetime(month=11, day=16, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=17, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"basics_ran_yesterday"),
|
|
(specwkly, datetime.datetime(month=11, day=17, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=24, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"weekly_ran_today"),
|
|
(specwkly, datetime.datetime(month=11, day=16, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=17, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"weekly_ran_yesterday"),
|
|
(specmw, datetime.datetime(month=11, day=17, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=19, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"multiple_days_ran_today"),
|
|
(specmw, datetime.datetime(month=11, day=18, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=19, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"multiple_days_ran_between"),
|
|
(specmw, datetime.datetime(month=11, day=16, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=17, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"multiple_days_ran_today"),
|
|
(specmw, datetime.datetime(month=11, day=19, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=24, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"multiple_days_ran_later"),
|
|
(specmw, datetime.datetime(month=11, day=19, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=24, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"multiple_days_ran_later"),
|
|
(specmonthly, datetime.datetime(month=11, day=19, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=12, day=1, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"monthly_ran_mid"),
|
|
(specmonthly, datetime.datetime(month=11, day=1, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=12, day=1, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"monthly_ran_first"),
|
|
(specmonthly, datetime.datetime(month=11, day=30, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=12, day=1, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"monthly_ran_last"),
|
|
(speccomplex, datetime.datetime(month=11, day=30, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=12, day=1, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"complex_ran_last"),
|
|
(speccomplex, datetime.datetime(month=11, day=1, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=3, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"complex_ran_first"),
|
|
(speccomplex, datetime.datetime(month=11, day=3, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=7, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"complex_ran_mon"),
|
|
(speccomplex, datetime.datetime(month=11, day=7, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=10, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"complex_ran_fri"),
|
|
(speccomplex, datetime.datetime(month=11, day=11, year=2014,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
datetime.datetime(month=11, day=14, year=2014, hour=0, minute=0,
|
|
tzinfo=dateutil.tz.tzlocal()),
|
|
"complex_ran_rand"),
|
|
]
|
|
|
|
def mk_closure(spec, time, tgt, name):
|
|
def tst(self):
|
|
next = backup.next_due_run(spec, time)
|
|
self.assertEqual(next, tgt)
|
|
|
|
tst.__name__ = "test_{}".format(name)
|
|
return tst
|
|
|
|
for spec, time, tgt, name in tests:
|
|
tst = mk_closure(spec, time, tgt, name)
|
|
locals()[tst.__name__] = tst
|
|
|
|
del mk_closure, tst, spec, time, tgt, name
|
|
|
|
class BackupTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.backends = [mock.NonCallableMagicMock() for _ in range(3)]
|
|
self.name = "foobar"
|
|
self.paths ={
|
|
"/uno": "one",
|
|
"/dos": "two"
|
|
}
|
|
self.timespec = [backup.MONDAY, backup.WEDNESDAY, backup.FRIDAY]
|
|
self.backup = backup.Backup(self.name, self.paths, "FIXME",
|
|
self.timespec, self.backends)
|
|
|
|
def test_get_backends(self):
|
|
self.assertEqual(set(self.backends), set(self.backup.get_backends()))
|