cc-4105: Added more tests.
This commit is contained in:
parent
12aa76b0a8
commit
1d85c65b74
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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'
|
||||||
|
|
Loading…
Reference in New Issue