@@ -108,15 +108,10 @@ def test_worker_fails_for_deferred_exceptions(
108108 assert not mock_start .called
109109 assert not mock_execute .called
110110
111- @patch .object (executor .MapTaskExecutor , 'execute' )
112- @patch .object (batchworker .ProgressReporter , 'start_reporting_progress' )
113- @patch .object (batchworker .ProgressReporter , 'stop_reporting_progress' )
114- @patch .object (batchworker .ProgressReporter , 'report_status' )
115- def test_worker_sends_completion_in_case_of_a_failure (
116- self , mock_report_status , mock_stop , mock_start , mock_execute ):
111+ def _run_send_completion_test (self , mock_report_status , mock_stop , mock_start ,
112+ mock_execute , expected_exception ):
117113 worker = batchworker .BatchWorker (self .dummy_properties (), {})
118114 mock_work_item = mock .MagicMock ()
119- mock_execute .side_effect = Exception ('test_exception' )
120115 worker .do_work (mock_work_item )
121116
122117 class AnyStringWith (str ):
@@ -125,12 +120,46 @@ def __eq__(self, other):
125120 return self in other
126121
127122 mock_report_status .assert_called_with (
128- completed = True , exception_details = AnyStringWith ('test_exception' ))
123+ completed = True ,
124+ exception_details = AnyStringWith (expected_exception ))
129125
130126 mock_start .assert_called_once_with ()
131127 mock_execute .assert_called_once_with (mock .ANY )
132128 mock_stop .assert_called_once_with ()
133129
130+ @patch .object (executor .MapTaskExecutor , 'execute' )
131+ @patch .object (batchworker .ProgressReporter , 'start_reporting_progress' )
132+ @patch .object (batchworker .ProgressReporter , 'stop_reporting_progress' )
133+ @patch .object (batchworker .ProgressReporter , 'report_status' )
134+ def test_send_completion_execute_failure (self , mock_report_status , mock_stop ,
135+ mock_start , mock_execute ):
136+ mock_execute .side_effect = Exception ('test_exception' )
137+ self ._run_send_completion_test (mock_report_status , mock_stop , mock_start ,
138+ mock_execute , 'test_exception' )
139+
140+ @patch .object (executor .MapTaskExecutor , 'execute' )
141+ @patch .object (batchworker .ProgressReporter , 'start_reporting_progress' )
142+ @patch .object (batchworker .ProgressReporter , 'stop_reporting_progress' )
143+ @patch .object (batchworker .ProgressReporter , 'report_status' )
144+ def test_send_completion_stop_progress_reporter_failure (self ,
145+ mock_report_status ,
146+ mock_stop , mock_start ,
147+ mock_execute ):
148+ mock_stop .side_effect = Exception ('test_exception' )
149+ self ._run_send_completion_test (mock_report_status , mock_stop , mock_start ,
150+ mock_execute , 'test_exception' )
151+
152+ @patch .object (executor .MapTaskExecutor , 'execute' )
153+ @patch .object (batchworker .ProgressReporter , 'start_reporting_progress' )
154+ @patch .object (batchworker .ProgressReporter , 'stop_reporting_progress' )
155+ @patch .object (batchworker .ProgressReporter , 'report_status' )
156+ def test_send_completion_execute_and_stop_progress_reporter_failure (
157+ self , mock_report_status , mock_stop , mock_start , mock_execute ):
158+ mock_execute .side_effect = Exception ('test_exception_1' )
159+ mock_stop .side_effect = Exception ('test_exception_2' )
160+ self ._run_send_completion_test (mock_report_status , mock_stop , mock_start ,
161+ mock_execute , 'test_exception_1' )
162+
134163
135164class ProgressReporterTest (unittest .TestCase ):
136165
0 commit comments