fleshing out tests

This commit is contained in:
Sandy Walsh 2014-01-10 20:50:44 +00:00
parent 49f05ca5ac
commit cf27ef257b
2 changed files with 56 additions and 12 deletions

View File

@ -48,6 +48,10 @@ TODO: How will the ReadingRollManager know which files to read
from, and in which order, if the filename is templated?
"""
def now():
"""Broken out for testing."""
return datetime.datetime.utcnow()
class RollChecker(object):
def start(self, archive):
@ -62,11 +66,11 @@ class TimeRollChecker(RollChecker):
self.timedelta = timedelta
def start(self, archive):
self.start_time = datetime.datetime.utcnow()
self.start_time = now()
self.end_time = self.start_time + self.timedelta
def check(self, archive):
return datetime.datetime.utcnow() >= self.end_time
return now() >= self.end_time
class SizeRollChecker(RollChecker):
@ -75,7 +79,7 @@ class SizeRollChecker(RollChecker):
def check(self, archive):
size = archive._get_file_handle().tell()
return size / 1073741824 > self.size_in_gb
return size / 1073741824 >= self.size_in_gb
class RollManager(object):
@ -86,9 +90,9 @@ class RollManager(object):
self.active_archive = None
def _make_filename(self):
now = datetime.datetime.utcnow()
now = now()
return now.strftime(self.filename_template)
def get_active_archive(self):
if not self.active_archive:
filename = self._make_filename()
@ -107,7 +111,7 @@ class RollManager(object):
class ReadingRollManager(RollManager):
def __init__(self, filename_template, roll_checker):
super(ReadingRollManager, self).__init__(filename_template,
super(ReadingRollManager, self).__init__(filename_template,
roll_checker)
self.archive_class = ArchiveReader
@ -123,7 +127,7 @@ class ReadingRollManager(RollManager):
class WritingRollManager(RollManager):
def __init__(self, filename_template, roll_checker):
super(ReadingRollManager, self).__init__(filename_template,
super(ReadingRollManager, self).__init__(filename_template,
roll_checker)
self.archive_class = ArchiveWriter
@ -152,7 +156,7 @@ class ArchiveWriter(object):
def write(self, payload):
pass
class ArchiveReader(object):
"""The active Archive for consuming.

View File

@ -1,3 +1,4 @@
import datetime
import mock
import unittest
@ -5,9 +6,48 @@ from shoebox import shoebox
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):
pass
def test_time_roll_checker_end(self):
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__':
# unittest.main()
with mock.patch.object(shoebox, 'now') as dt:
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 ...