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

View File

@ -13,10 +13,15 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import datetime
import notification_utils
class RollChecker(object):
def __init__(self, **kwargs):
pass
def start(self, archive):
"""Called when a new archive is selected."""
pass
@ -32,8 +37,10 @@ class NeverRollChecker(RollChecker):
class TimeRollChecker(RollChecker):
def __init__(self, timedelta):
self.timedelta = timedelta
def __init__(self, **kwargs):
super(TimeRollChecker, self).__init__()
minutes = int(kwargs.get('roll_minutes', 60))
self.timedelta = datetime.timedelta(minutes=minutes)
def start(self, archive):
self.start_time = notification_utils.now()
@ -44,9 +51,10 @@ class TimeRollChecker(RollChecker):
class SizeRollChecker(RollChecker):
def __init__(self, size_in_mb):
self.size_in_mb = size_in_mb
def __init__(self, **kwargs):
super(SizeRollChecker, self).__init__()
self.roll_size_mb = int(kwargs.get('roll_size_mb', 1))
def check(self, archive):
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):
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",
checker,
TEMPDIR,

View File

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