Update EventHandler/Processor tests after adding required events

This commit is contained in:
Christophe Bedard 2019-12-29 13:00:24 -05:00
parent 2fbab32816
commit 9f500d2061

View file

@ -13,11 +13,13 @@
# limitations under the License. # limitations under the License.
from typing import Dict from typing import Dict
from typing import List
import unittest import unittest
from tracetools_analysis.processor import EventHandler from tracetools_analysis.processor import EventHandler
from tracetools_analysis.processor import EventMetadata from tracetools_analysis.processor import EventMetadata
from tracetools_analysis.processor import Processor from tracetools_analysis.processor import Processor
from tracetools_analysis.processor import RequiredEventNotFoundError
class StubHandler1(EventHandler): class StubHandler1(EventHandler):
@ -64,6 +66,47 @@ class WrongHandler(EventHandler):
pass pass
class MissingEventHandler(EventHandler):
def __init__(self) -> None:
handler_map = {
'myeventname': self._handler_whatever,
}
super().__init__(handler_map=handler_map)
@staticmethod
def required_events() -> List[str]:
return [
'no_handler_for_this',
'myeventname',
]
def _handler_whatever(
self, event: Dict, metadata: EventMetadata
) -> None:
pass
class EventHandlerWithRequiredEvent(EventHandler):
def __init__(self) -> None:
handler_map = {
'myrequiredevent': self._handler_whatever,
}
super().__init__(handler_map=handler_map)
@staticmethod
def required_events() -> List[str]:
return [
'myrequiredevent',
]
def _handler_whatever(
self, event: Dict, metadata: EventMetadata
) -> None:
pass
class TestProcessor(unittest.TestCase): class TestProcessor(unittest.TestCase):
def __init__(self, *args) -> None: def __init__(self, *args) -> None:
@ -95,6 +138,28 @@ class TestProcessor(unittest.TestCase):
self.assertTrue(handler1.handler_called, 'event handler not called') self.assertTrue(handler1.handler_called, 'event handler not called')
self.assertTrue(handler2.handler_called, 'event handler not called') self.assertTrue(handler2.handler_called, 'event handler not called')
def test_assert_handler_functions_for_required_events(self) -> None:
with self.assertRaises(AssertionError):
MissingEventHandler()
def test_check_required_events(self) -> None:
mock_event = {
'_name': 'myeventname',
'_timestamp': 0,
'cpu_id': 0,
}
# Fails check
with self.assertRaises(RequiredEventNotFoundError):
Processor(EventHandlerWithRequiredEvent()).process([mock_event])
required_mock_event = {
'_name': 'myrequiredevent',
'_timestamp': 69,
'cpu_id': 0,
}
# Passes check
Processor(EventHandlerWithRequiredEvent()).process([required_mock_event, mock_event])
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()