starting on tests
This commit is contained in:
parent
11193f894b
commit
19b4898244
@ -13,6 +13,8 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
"""Binary data archiving library.
|
"""Binary data archiving library.
|
||||||
|
|
||||||
Data is written in the following format:
|
Data is written in the following format:
|
||||||
@ -48,39 +50,59 @@ from, and in which order, if the filename is templated?
|
|||||||
|
|
||||||
|
|
||||||
class RollChecker(object):
|
class RollChecker(object):
|
||||||
|
def start(self, archive):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def check(self, archive):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TimeRollChecker(RollChecker):
|
class TimeRollChecker(RollChecker):
|
||||||
def start(self, file_handle):
|
def __init__(self, timedelta):
|
||||||
pass
|
self.timedelta = timedelta
|
||||||
|
|
||||||
def check(self, file_handle):
|
def start(self, archive):
|
||||||
pass
|
self.start_time = datetime.datetime.utcnow()
|
||||||
|
self.end_time = self.start_time + self.timedelta
|
||||||
|
|
||||||
|
def check(self, archive):
|
||||||
|
return datetime.datetime.utcnow() >= self.end_time
|
||||||
|
|
||||||
|
|
||||||
class SizeRollChecker(RollChecker):
|
class SizeRollChecker(RollChecker):
|
||||||
def start(self, file_handle):
|
def __init__(self, size_in_gb):
|
||||||
pass
|
self.size_in_gb = size_in_gb
|
||||||
|
|
||||||
def check(self, file_handle):
|
def check(self, archive):
|
||||||
pass
|
size = archive._get_file_handle().tell()
|
||||||
|
return size / 1073741824 > self.size_in_gb
|
||||||
|
|
||||||
|
|
||||||
class RollManager(object):
|
class RollManager(object):
|
||||||
def __init__(self, directory=".", filename_template, roll_checker):
|
def __init__(self, filename_template, roll_checker, directory="."):
|
||||||
self.filename_template = filename_template
|
self.filename_template = filename_template
|
||||||
self.roll_checker = roll_checker
|
self.roll_checker = roll_checker
|
||||||
self.active_archive = None
|
|
||||||
self.directory = directory
|
self.directory = directory
|
||||||
|
self.active_archive = None
|
||||||
|
|
||||||
|
def _make_filename(self):
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
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.filename_template
|
filename = self._make_filename()
|
||||||
self.active_archive = self.archive_class(filename)
|
self.active_archive = self.archive_class(filename)
|
||||||
|
self.roll_checker.start(self.active_archive)
|
||||||
|
|
||||||
return self.active_archive
|
return self.active_archive
|
||||||
|
|
||||||
|
def _should_roll_archive(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _roll_archive(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ReadingRollManager(RollManager):
|
class ReadingRollManager(RollManager):
|
||||||
|
|
||||||
@ -108,21 +130,28 @@ class WritingRollManager(RollManager):
|
|||||||
def write(self, payload):
|
def write(self, payload):
|
||||||
a = self.get_active_archive()
|
a = self.get_active_archive()
|
||||||
a.write(payload)
|
a.write(payload)
|
||||||
if a._should_roll_archive():
|
if self._should_roll_archive(a):
|
||||||
self._roll_archive()
|
self._roll_archive()
|
||||||
|
|
||||||
|
|
||||||
|
class Archive(object):
|
||||||
|
def __init__(self):
|
||||||
|
self._handle = None
|
||||||
|
|
||||||
|
def get_file_handle(self):
|
||||||
|
return self._handle
|
||||||
|
|
||||||
|
|
||||||
class ArchiveWriter(object):
|
class ArchiveWriter(object):
|
||||||
"""The active Archive for appending.
|
"""The active Archive for appending.
|
||||||
"""
|
"""
|
||||||
def __init__(self, filename):
|
def __init__(self, filename):
|
||||||
|
super(ArchiveWriter, self).__init__(self)
|
||||||
self._handle = open(filename, "wb+")
|
self._handle = open(filename, "wb+")
|
||||||
|
|
||||||
def write(self, payload):
|
def write(self, payload):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _should_roll_archive(self):
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class ArchiveReader(object):
|
class ArchiveReader(object):
|
||||||
|
13
test/test_shoebox.py
Normal file
13
test/test_shoebox.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import mock
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from shoebox import shoebox
|
||||||
|
|
||||||
|
|
||||||
|
class TestRollChecker(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_time_roll_checker(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#if __name__ == '__main__':
|
||||||
|
# unittest.main()
|
Loading…
x
Reference in New Issue
Block a user