Merge "Improve logging for event dispatcher"

This commit is contained in:
Zuul 2019-04-23 10:10:56 +00:00 committed by Gerrit Code Review
commit 46105132a4
2 changed files with 19 additions and 6 deletions

View File

@ -59,7 +59,12 @@ class Dispatcher(h_base.EventHandler):
key = key_fn(event)
handlers.update(key_group.get(key, ()))
LOG.debug("%s handler(s) available", len(handlers))
obj = event.get('object', {})
obj_meta = obj.get('metadata', {})
LOG.debug("%d handler(s) available for event %s %s:%s", len(handlers),
event.get('type'), obj.get('kind'), obj_meta.get('name'))
for handler in handlers:
handler(event)

View File

@ -19,9 +19,13 @@ from kuryr_kubernetes.handlers import dispatch as h_dis
from kuryr_kubernetes.tests import base as test_base
def make_event(name):
return {'object': {'metadata': {'name': str(name)}}}
class TestDispatch(test_base.TestCase):
def test_dispatch(self):
events = list(range(3))
events = [make_event(i) for i in range(3)]
handler = mock.Mock()
dispatcher = h_dis.Dispatcher()
dispatcher.register(lambda e: True, True, handler)
@ -34,20 +38,24 @@ class TestDispatch(test_base.TestCase):
def test_dispatch_broadcast(self):
handlers = [mock.Mock() for _ in range(3)]
dispatcher = h_dis.Dispatcher()
event = make_event(mock.sentinel.event_name)
for handler in handlers:
dispatcher.register(lambda e: True, True, handler)
dispatcher(mock.sentinel.event)
dispatcher(event)
for handler in handlers:
handler.assert_called_once_with(mock.sentinel.event)
handler.assert_called_once_with(event)
def test_dispatch_by_key(self):
def key_fn(event):
return str(event)
return event['object']['metadata']['name']
events = {key_fn(i): i for i in range(3)}
events = {}
for i in range(3):
e = make_event(i)
events[key_fn(e)] = e
handlers = {key: mock.Mock() for key in events}
dispatcher = h_dis.Dispatcher()
for key, handler in handlers.items():