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?
|
||||
"""
|
||||
|
||||
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.
|
||||
|
@ -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 ...
|
||||
|
Loading…
x
Reference in New Issue
Block a user