cc-4105: Added more tests.

This commit is contained in:
Rudi Grinberg 2012-07-19 10:37:18 -04:00
parent 12aa76b0a8
commit 1d85c65b74
4 changed files with 47 additions and 13 deletions

View File

@ -45,7 +45,7 @@ class AirtimeNotifier(Loggable):
media-monitor via the web UI. media-monitor via the web UI.
""" """
message.ack() message.ack()
self.logger.info("Received md from RabbitMQ: " + body) self.logger.info("Received md from RabbitMQ: %s" % str(body))
m = json.loads(message.body) m = json.loads(message.body)
self.handler.message(m) self.handler.message(m)

View File

@ -33,10 +33,4 @@ class MMConfig(Loggable):
def haxxor_set(self, key, value): self.cfg[key] = value def haxxor_set(self, key, value): self.cfg[key] = value
def haxxor_get(self, key): return self.cfg[key] def haxxor_get(self, key): return self.cfg[key]
def __del__(self):
"""
persist any changes made whenever this object is garbage collected
"""
self.save()

View File

@ -1,8 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import unittest import unittest
import json
from media.monitor.airtime import AirtimeNotifier, AirtimeMessageReceiver from media.monitor.airtime import AirtimeNotifier, AirtimeMessageReceiver
from mock import patch from mock import patch, Mock
from media.monitor.config import MMConfig
def filter_ev(d): return { i : j for i,j in d.iteritems() if i != 'event_type' }
class TestReceiver(unittest.TestCase): class TestReceiver(unittest.TestCase):
def setUp(self): def setUp(self):
@ -10,14 +14,50 @@ class TestReceiver(unittest.TestCase):
cfg = {} cfg = {}
self.amr = AirtimeMessageReceiver(cfg) self.amr = AirtimeMessageReceiver(cfg)
def test_message(self): def test_supported_messages(self):
self.assertTrue( len(self.amr.supported_messages()) > 0 )
def test_supported(self):
# Every supported message should fire something
for event_type in self.amr.supported_messages(): for event_type in self.amr.supported_messages():
msg = { 'event_type' : event_type, 'extra_param' : 123 } msg = { 'event_type' : event_type, 'extra_param' : 123 }
filtered = { i : j for i,j in msg.iteritems() if i != 'event_type' } filtered = filter_ev(msg)
with patch.object(self.amr, 'execute_message') as mock_method: with patch.object(self.amr, 'execute_message') as mock_method:
mock_method.side_effect = None mock_method.side_effect = None
ret = self.amr.message(msg) ret = self.amr.message(msg)
self.assertTrue(ret) self.assertTrue(ret)
mock_method.assert_called_with(event_type, filtered) mock_method.assert_called_with(event_type, filtered)
def test_no_mod_message(self):
ev = { 'event_type' : 'new_watch', 'directory' : 'something here' }
filtered = filter_ev(ev)
with patch.object(self.amr, 'execute_message') as mock_method:
mock_method.return_value = "tested"
ret = self.amr.message(ev)
self.assertTrue( ret ) # message passing worked
mock_method.assert_called_with(ev['event_type'], filtered)
# test that our copy of the message does not get modified
self.assertTrue( 'event_type' in ev )
class TestAirtimeNotifier(unittest.TestCase):
def test_handle_message(self):
#from configobj import ConfigObj
test_cfg = MMConfig('./test_config.cfg')
ran = [False]
class MockReceiver(object):
def message(me,m):
self.assertTrue( 'event_type' in m )
self.assertEqual( m['path'], '/bs/path' )
ran[0] = True
airtime = AirtimeNotifier(cfg=test_cfg, message_receiver=MockReceiver())
m1 = Mock()
m1.ack = "ack'd message"
m2 = Mock()
m2.body = json.dumps({ 'event_type' : 'file_delete', 'path' : '/bs/path' })
airtime.handle_message(body=m1,message=m2)
self.assertTrue( ran[0] )
if __name__ == '__main__': unittest.main() if __name__ == '__main__': unittest.main()

View File

@ -1,4 +1,4 @@
api_client = "airtime" api_client = 'airtime'
# where the binary files live # where the binary files live
bin_dir = '/usr/lib/airtime/media-monitor' bin_dir = '/usr/lib/airtime/media-monitor'
@ -18,7 +18,7 @@ rabbitmq_vhost = '/'
############################################ ############################################
# Media-Monitor preferences # # Media-Monitor preferences #
############################################ ############################################
check_filesystem_events = 5 #how long to queue up events performed on the files themselves. check_filesystem_events = '5'
check_airtime_events = 30 #how long to queue metadata input from airtime. check_airtime_events = '30'
list_value_testing = 'val1', 'val2', 'val3' list_value_testing = 'val1', 'val2', 'val3'