1010from cloudinit .tests .util import mock
1111
1212
13+ def _fake_registry ():
14+ return mock .Mock (registered_items = {'a' : mock .MagicMock (),
15+ 'b' : mock .MagicMock ()})
16+
17+
1318class TestReportStartEvent (unittest .TestCase ):
1419
15- @mock .patch ('cloudinit.reporting.HANDLERS ' ,
16- new_callable = lambda : [ mock . MagicMock (), mock . MagicMock ()] )
20+ @mock .patch ('cloudinit.reporting.handler_registry ' ,
21+ new_callable = _fake_registry )
1722 def test_report_start_event_passes_something_with_as_string_to_handlers (
18- self , HANDLERS ):
23+ self , handler_registry ):
1924 event_name , event_description = 'my_test_event' , 'my description'
2025 reporting .report_start_event (event_name , event_description )
2126 expected_string_representation = ': ' .join (
2227 ['start' , event_name , event_description ])
23- for handler in HANDLERS :
28+ for _ , handler in handler_registry . registered_items . items () :
2429 self .assertEqual (1 , handler .publish_event .call_count )
2530 event = handler .publish_event .call_args [0 ][0 ]
2631 self .assertEqual (expected_string_representation , event .as_string ())
@@ -36,42 +41,42 @@ def _report_finish_event(self, successful=None):
3641
3742 def assertHandlersPassedObjectWithAsString (
3843 self , handlers , expected_as_string ):
39- for handler in handlers :
44+ for _ , handler in handlers . items () :
4045 self .assertEqual (1 , handler .publish_event .call_count )
4146 event = handler .publish_event .call_args [0 ][0 ]
4247 self .assertEqual (expected_as_string , event .as_string ())
4348
44- @mock .patch ('cloudinit.reporting.HANDLERS ' ,
45- new_callable = lambda : [ mock . MagicMock (), mock . MagicMock ()] )
49+ @mock .patch ('cloudinit.reporting.handler_registry ' ,
50+ new_callable = _fake_registry )
4651 def test_report_finish_event_passes_something_with_as_string_to_handlers (
47- self , HANDLERS ):
52+ self , handler_registry ):
4853 event_name , event_description = self ._report_finish_event ()
4954 expected_string_representation = ': ' .join (
5055 ['finish' , event_name , event_description ])
5156 self .assertHandlersPassedObjectWithAsString (
52- HANDLERS , expected_string_representation )
57+ handler_registry . registered_items , expected_string_representation )
5358
54- @mock .patch ('cloudinit.reporting.HANDLERS ' ,
55- new_callable = lambda : [ mock . MagicMock (), mock . MagicMock ()] )
56- def test_reporting_successful_finish_has_sensible_string_repr (self ,
57- HANDLERS ):
59+ @mock .patch ('cloudinit.reporting.handler_registry ' ,
60+ new_callable = _fake_registry )
61+ def test_reporting_successful_finish_has_sensible_string_repr (
62+ self , handler_registry ):
5863 event_name , event_description = self ._report_finish_event (
5964 successful = True )
6065 expected_string_representation = ': ' .join (
6166 ['finish' , event_name , 'success' , event_description ])
6267 self .assertHandlersPassedObjectWithAsString (
63- HANDLERS , expected_string_representation )
68+ handler_registry . registered_items , expected_string_representation )
6469
65- @mock .patch ('cloudinit.reporting.HANDLERS ' ,
66- new_callable = lambda : [ mock . MagicMock (), mock . MagicMock ()] )
67- def test_reporting_unsuccessful_finish_has_sensible_string_repr (self ,
68- HANDLERS ):
70+ @mock .patch ('cloudinit.reporting.handler_registry ' ,
71+ new_callable = _fake_registry )
72+ def test_reporting_unsuccessful_finish_has_sensible_string_repr (
73+ self , handler_registry ):
6974 event_name , event_description = self ._report_finish_event (
7075 successful = False )
7176 expected_string_representation = ': ' .join (
7277 ['finish' , event_name , 'fail' , event_description ])
7378 self .assertHandlersPassedObjectWithAsString (
74- HANDLERS , expected_string_representation )
79+ handler_registry . registered_items , expected_string_representation )
7580
7681
7782class TestReportingEvent (unittest .TestCase ):
@@ -115,3 +120,13 @@ def test_log_message_uses_event_as_string(self, getLogger):
115120 reporting .LogHandler ().publish_event (event )
116121 self .assertIn (event .as_string (),
117122 getLogger .return_value .info .call_args [0 ][0 ])
123+
124+
125+ class TestDefaultRegisteredHandler (TestCase ):
126+
127+ def test_log_handler_registered_by_default (self ):
128+ for _ , item in reporting .handler_registry .registered_items .items ():
129+ if isinstance (item , reporting .LogHandler ):
130+ break
131+ else :
132+ self .fail ('No reporting LogHandler registered by default.' )
0 commit comments