summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/unittests/test_reporting.py51
1 files changed, 42 insertions, 9 deletions
diff --git a/tests/unittests/test_reporting.py b/tests/unittests/test_reporting.py
index ffeb55d2..1a4ee8c4 100644
--- a/tests/unittests/test_reporting.py
+++ b/tests/unittests/test_reporting.py
@@ -4,6 +4,7 @@
# vi: ts=4 expandtab
from cloudinit import reporting
+from cloudinit.reporting import handlers
from .helpers import (mock, TestCase)
@@ -95,13 +96,29 @@ class TestReportingEvent(TestCase):
[event_type, name, description])
self.assertEqual(expected_string_representation, event.as_string())
+ def test_as_dict(self):
+ event_type, name, desc = 'test_type', 'test_name', 'test_desc'
+ event = reporting.ReportingEvent(event_type, name, desc)
+ self.assertEqual(
+ {'event_type': event_type, 'name': name, 'description': desc},
+ event.as_dict())
+
+
+class TestFinishReportingEvent(TestCase):
+ def test_as_has_result(self):
+ result = reporting.status.SUCCESS
+ name, desc = 'test_name', 'test_desc'
+ event = reporting.FinishReportingEvent(name, desc, result)
+ ret = event.as_dict()
+ self.assertTrue('result' in ret)
+ self.assertEqual(ret['result'], result)
+
-class TestReportingHandler(TestCase):
+class TestBaseReportingHandler(TestCase):
- def test_no_default_publish_event_implementation(self):
- self.assertRaises(NotImplementedError,
- reporting.handlers.ReportingHandler().publish_event,
- None)
+ def test_base_reporting_handler_is_abstract(self):
+ regexp = r".*abstract.*publish_event.*"
+ self.assertRaisesRegexp(TypeError, regexp, handlers.ReportingHandler)
class TestLogHandler(TestCase):
@@ -147,7 +164,7 @@ class TestReportingConfiguration(TestCase):
@mock.patch.object(reporting, 'instantiated_handler_registry')
def test_empty_configuration_doesnt_add_handlers(
self, instantiated_handler_registry):
- reporting.add_configuration({})
+ reporting.update_configuration({})
self.assertEqual(
0, instantiated_handler_registry.register_item.call_count)
@@ -159,7 +176,7 @@ class TestReportingConfiguration(TestCase):
handler_cls = mock.Mock()
available_handlers.registered_items = {handler_type_name: handler_cls}
handler_name = 'my_test_handler'
- reporting.add_configuration(
+ reporting.update_configuration(
{handler_name: {'type': handler_type_name}})
self.assertEqual(
{handler_name: handler_cls.return_value},
@@ -177,7 +194,7 @@ class TestReportingConfiguration(TestCase):
handler_config = extra_kwargs.copy()
handler_config.update({'type': handler_type_name})
handler_name = 'my_test_handler'
- reporting.add_configuration({handler_name: handler_config})
+ reporting.update_configuration({handler_name: handler_config})
self.assertEqual(
handler_cls.return_value,
reporting.instantiated_handler_registry.registered_items[
@@ -194,9 +211,25 @@ class TestReportingConfiguration(TestCase):
available_handlers.registered_items = {handler_type_name: handler_cls}
handler_config = {'type': handler_type_name, 'foo': 'bar'}
expected_handler_config = handler_config.copy()
- reporting.add_configuration({'my_test_handler': handler_config})
+ reporting.update_configuration({'my_test_handler': handler_config})
self.assertEqual(expected_handler_config, handler_config)
+ @mock.patch.object(
+ reporting, 'instantiated_handler_registry', reporting.DictRegistry())
+ @mock.patch.object(reporting, 'available_handlers')
+ def test_handlers_removed_if_falseish_specified(self, available_handlers):
+ handler_type_name = 'test_handler'
+ handler_cls = mock.Mock()
+ available_handlers.registered_items = {handler_type_name: handler_cls}
+ handler_name = 'my_test_handler'
+ reporting.update_configuration(
+ {handler_name: {'type': handler_type_name}})
+ self.assertEqual(
+ 1, len(reporting.instantiated_handler_registry.registered_items))
+ reporting.update_configuration({handler_name: None})
+ self.assertEqual(
+ 0, len(reporting.instantiated_handler_registry.registered_items))
+
class TestReportingEventStack(TestCase):
@mock.patch('cloudinit.reporting.report_finish_event')