CallbackList now correctly uses objects, not classes

This commit is contained in:
Sandy Walsh 2014-05-27 01:00:05 +00:00
parent 8facfff750
commit a180835028
4 changed files with 26 additions and 19 deletions

View File

@ -37,11 +37,11 @@ class CallbackList(ArchiveCallback):
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(CallbackList, self).__init__(**kwargs) super(CallbackList, self).__init__(**kwargs)
self.callbacks = [] self.callbacks = []
self.config = kwargs.get('config', {}) self.config = kwargs
callback_list_str = self.config.get('callback_list', "") callback_str = self.config.get('callback_list', "")
callback_list = [x.strip() for x in callback_list_str.split(",")] callback_str_list = [x.strip() for x in callback_str.split(",")]
self.callback_list = [simport.load(c) for c in callback_list] self.callbacks = [simport.load(c)(**self.config)
for c in callback_str_list]
# TODO(Sandy): Need some exception handling around these. # TODO(Sandy): Need some exception handling around these.
# The failure of one shouldn't stop processing. # The failure of one shouldn't stop processing.
def on_open(self, filename): def on_open(self, filename):
@ -53,7 +53,7 @@ class CallbackList(ArchiveCallback):
c.on_close(filename) c.on_close(filename)
class ChangeExtensionCallback(object): class ChangeExtensionCallback(ArchiveCallback):
"""filename.dat becomes filename.dat.done""" """filename.dat becomes filename.dat.done"""
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(ChangeExtensionCallback, self).__init__(**kwargs) super(ChangeExtensionCallback, self).__init__(**kwargs)
@ -63,7 +63,7 @@ class ChangeExtensionCallback(object):
os.rename(filename, "%s.%s" % (filename, self.new_extension)) os.rename(filename, "%s.%s" % (filename, self.new_extension))
class MoveFileCallback(object): class MoveFileCallback(ArchiveCallback):
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(MoveFileCallback, self).__init__(**kwargs) super(MoveFileCallback, self).__init__(**kwargs)
self.destination_folder = kwargs.get('destination_folder', '.') self.destination_folder = kwargs.get('destination_folder', '.')

View File

@ -13,10 +13,15 @@
# 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
import notification_utils import notification_utils
class RollChecker(object): class RollChecker(object):
def __init__(self, **kwargs):
pass
def start(self, archive): def start(self, archive):
"""Called when a new archive is selected.""" """Called when a new archive is selected."""
pass pass
@ -32,8 +37,10 @@ class NeverRollChecker(RollChecker):
class TimeRollChecker(RollChecker): class TimeRollChecker(RollChecker):
def __init__(self, timedelta): def __init__(self, **kwargs):
self.timedelta = timedelta super(TimeRollChecker, self).__init__()
minutes = int(kwargs.get('roll_minutes', 60))
self.timedelta = datetime.timedelta(minutes=minutes)
def start(self, archive): def start(self, archive):
self.start_time = notification_utils.now() self.start_time = notification_utils.now()
@ -44,9 +51,10 @@ class TimeRollChecker(RollChecker):
class SizeRollChecker(RollChecker): class SizeRollChecker(RollChecker):
def __init__(self, size_in_mb): def __init__(self, **kwargs):
self.size_in_mb = size_in_mb super(SizeRollChecker, self).__init__()
self.roll_size_mb = int(kwargs.get('roll_size_mb', 1))
def check(self, archive): def check(self, archive):
size = archive.get_file_handle().tell() size = archive.get_file_handle().tell()
return (size / 1048576) >= self.size_in_mb return (size / 1048576) >= self.roll_size_mb

View File

@ -51,7 +51,7 @@ class TestSizeRolling(unittest.TestCase):
def test_size_rolling(self): def test_size_rolling(self):
callback = ArchiveCallback() callback = ArchiveCallback()
checker = roll_checker.SizeRollChecker(1) checker = roll_checker.SizeRollChecker(roll_size_mb=1)
manager = roll_manager.WritingRollManager("test_%Y_%m_%d_%X_%f.events", manager = roll_manager.WritingRollManager("test_%Y_%m_%d_%X_%f.events",
checker, checker,
TEMPDIR, TEMPDIR,

View File

@ -9,18 +9,18 @@ from shoebox import roll_checker
class TestRollChecker(unittest.TestCase): class TestRollChecker(unittest.TestCase):
def test_time_roll_checker_start(self): def test_time_roll_checker_start(self):
one_hour = datetime.timedelta(hours=1) x = roll_checker.TimeRollChecker(roll_minutes=60)
x = roll_checker.TimeRollChecker(one_hour)
now = datetime.datetime.utcnow() now = datetime.datetime.utcnow()
with mock.patch.object(notification_utils, 'now') as dt: with mock.patch.object(notification_utils, 'now') as dt:
dt.return_value = now dt.return_value = now
x.start(None) x.start(None)
self.assertEqual(x.start_time, now) self.assertEqual(x.start_time, now)
one_hour = datetime.timedelta(hours=1)
self.assertEqual(x.end_time, now + one_hour) self.assertEqual(x.end_time, now + one_hour)
def test_time_roll_checker_end(self): def test_time_roll_checker_end(self):
one_hour = datetime.timedelta(hours=1) one_hour = datetime.timedelta(hours=1)
x = roll_checker.TimeRollChecker(one_hour) x = roll_checker.TimeRollChecker(roll_minutes=60)
now = datetime.datetime.utcnow() now = datetime.datetime.utcnow()
x.start_time = now x.start_time = now
x.end_time = now + one_hour x.end_time = now + one_hour
@ -37,10 +37,9 @@ class TestRollChecker(unittest.TestCase):
self.assertFalse(x.check(None)) self.assertFalse(x.check(None))
def test_size_roll_checker_end(self): def test_size_roll_checker_end(self):
one_mb = 1048576 x = roll_checker.SizeRollChecker(roll_size_mb=10)
x = roll_checker.SizeRollChecker(10)
archive = mock.Mock() archive = mock.Mock()
one_mb = 1048576
archive.get_file_handle.return_value.tell.return_value = one_mb * 5 archive.get_file_handle.return_value.tell.return_value = one_mb * 5
self.assertFalse(x.check(archive)) self.assertFalse(x.check(archive))