fleshing out tests
This commit is contained in:
parent
49f05ca5ac
commit
cf27ef257b
@ -48,6 +48,10 @@ TODO: How will the ReadingRollManager know which files to read
|
|||||||
from, and in which order, if the filename is templated?
|
from, and in which order, if the filename is templated?
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def now():
|
||||||
|
"""Broken out for testing."""
|
||||||
|
return datetime.datetime.utcnow()
|
||||||
|
|
||||||
|
|
||||||
class RollChecker(object):
|
class RollChecker(object):
|
||||||
def start(self, archive):
|
def start(self, archive):
|
||||||
@ -62,11 +66,11 @@ class TimeRollChecker(RollChecker):
|
|||||||
self.timedelta = timedelta
|
self.timedelta = timedelta
|
||||||
|
|
||||||
def start(self, archive):
|
def start(self, archive):
|
||||||
self.start_time = datetime.datetime.utcnow()
|
self.start_time = now()
|
||||||
self.end_time = self.start_time + self.timedelta
|
self.end_time = self.start_time + self.timedelta
|
||||||
|
|
||||||
def check(self, archive):
|
def check(self, archive):
|
||||||
return datetime.datetime.utcnow() >= self.end_time
|
return now() >= self.end_time
|
||||||
|
|
||||||
|
|
||||||
class SizeRollChecker(RollChecker):
|
class SizeRollChecker(RollChecker):
|
||||||
@ -75,7 +79,7 @@ class SizeRollChecker(RollChecker):
|
|||||||
|
|
||||||
def check(self, archive):
|
def check(self, archive):
|
||||||
size = archive._get_file_handle().tell()
|
size = archive._get_file_handle().tell()
|
||||||
return size / 1073741824 > self.size_in_gb
|
return size / 1073741824 >= self.size_in_gb
|
||||||
|
|
||||||
|
|
||||||
class RollManager(object):
|
class RollManager(object):
|
||||||
@ -86,9 +90,9 @@ class RollManager(object):
|
|||||||
self.active_archive = None
|
self.active_archive = None
|
||||||
|
|
||||||
def _make_filename(self):
|
def _make_filename(self):
|
||||||
now = datetime.datetime.utcnow()
|
now = now()
|
||||||
return now.strftime(self.filename_template)
|
return now.strftime(self.filename_template)
|
||||||
|
|
||||||
def get_active_archive(self):
|
def get_active_archive(self):
|
||||||
if not self.active_archive:
|
if not self.active_archive:
|
||||||
filename = self._make_filename()
|
filename = self._make_filename()
|
||||||
@ -107,7 +111,7 @@ class RollManager(object):
|
|||||||
class ReadingRollManager(RollManager):
|
class ReadingRollManager(RollManager):
|
||||||
|
|
||||||
def __init__(self, filename_template, roll_checker):
|
def __init__(self, filename_template, roll_checker):
|
||||||
super(ReadingRollManager, self).__init__(filename_template,
|
super(ReadingRollManager, self).__init__(filename_template,
|
||||||
roll_checker)
|
roll_checker)
|
||||||
self.archive_class = ArchiveReader
|
self.archive_class = ArchiveReader
|
||||||
|
|
||||||
@ -123,7 +127,7 @@ class ReadingRollManager(RollManager):
|
|||||||
|
|
||||||
class WritingRollManager(RollManager):
|
class WritingRollManager(RollManager):
|
||||||
def __init__(self, filename_template, roll_checker):
|
def __init__(self, filename_template, roll_checker):
|
||||||
super(ReadingRollManager, self).__init__(filename_template,
|
super(ReadingRollManager, self).__init__(filename_template,
|
||||||
roll_checker)
|
roll_checker)
|
||||||
self.archive_class = ArchiveWriter
|
self.archive_class = ArchiveWriter
|
||||||
|
|
||||||
@ -152,7 +156,7 @@ class ArchiveWriter(object):
|
|||||||
def write(self, payload):
|
def write(self, payload):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ArchiveReader(object):
|
class ArchiveReader(object):
|
||||||
"""The active Archive for consuming.
|
"""The active Archive for consuming.
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import datetime
|
||||||
import mock
|
import mock
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
@ -5,9 +6,48 @@ from shoebox import shoebox
|
|||||||
|
|
||||||
|
|
||||||
class TestRollChecker(unittest.TestCase):
|
class TestRollChecker(unittest.TestCase):
|
||||||
|
def test_time_roll_checker_start(self):
|
||||||
|
one_hour = datetime.timedelta(hours=1)
|
||||||
|
x = shoebox.TimeRollChecker(one_hour)
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
with mock.patch.object(shoebox, 'now') as dt:
|
||||||
|
dt.return_value = now
|
||||||
|
x.start(None)
|
||||||
|
self.assertEqual(x.start_time, now)
|
||||||
|
self.assertEqual(x.end_time, now + one_hour)
|
||||||
|
|
||||||
def test_time_roll_checker(self):
|
def test_time_roll_checker_end(self):
|
||||||
pass
|
one_hour = datetime.timedelta(hours=1)
|
||||||
|
x = shoebox.TimeRollChecker(one_hour)
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
x.start_time = now
|
||||||
|
x.end_time = now + one_hour
|
||||||
|
with mock.patch.object(shoebox, 'now') as dt:
|
||||||
|
dt.return_value = now + one_hour
|
||||||
|
self.assertTrue(x.check(None))
|
||||||
|
|
||||||
#if __name__ == '__main__':
|
with mock.patch.object(shoebox, 'now') as dt:
|
||||||
# unittest.main()
|
dt.return_value = now
|
||||||
|
self.assertFalse(x.check(None))
|
||||||
|
|
||||||
|
with mock.patch.object(shoebox, 'now') as dt:
|
||||||
|
dt.return_value = now + one_hour - datetime.timedelta(seconds = 1)
|
||||||
|
self.assertFalse(x.check(None))
|
||||||
|
|
||||||
|
def test_size_roll_checker_end(self):
|
||||||
|
one_gig = 1073741824
|
||||||
|
x = shoebox.SizeRollChecker(10)
|
||||||
|
|
||||||
|
archive = mock.Mock()
|
||||||
|
archive._get_file_handle.return_value.tell.return_value = one_gig * 5
|
||||||
|
self.assertFalse(x.check(archive))
|
||||||
|
|
||||||
|
archive._get_file_handle.return_value.tell.return_value = one_gig * 10
|
||||||
|
self.assertTrue(x.check(archive))
|
||||||
|
|
||||||
|
archive._get_file_handle.return_value.tell.return_value = one_gig * 11
|
||||||
|
self.assertTrue(x.check(archive))
|
||||||
|
|
||||||
|
|
||||||
|
class TestRollManager(unittest.TestCase):
|
||||||
|
pass # Next ...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user