def test_get_progress_report_summary(self): parent_step = PluginStep('parent_step') step = PluginStep('foo_step') parent_step.add_child(step) step.state = reporting_constants.STATE_COMPLETE report = parent_step.get_progress_report_summary() target_report = { 'foo_step': reporting_constants.STATE_COMPLETE } compare_dict(report, target_report)
def test_process_lifecycle(self): # set working_dir and conduit. This is required by process_lifecycle step = PluginStep('parent', working_dir=self.working_dir, conduit=self.conduit) step.process = Mock() child_step = PluginStep('child', working_dir=self.working_dir, conduit=self.conduit) child_step.process = Mock() step.add_child(child_step) step.report_progress = Mock() step.process_lifecycle() step.process.assert_called_once_with() child_step.process.assert_called_once_with() step.report_progress.assert_called_once_with(force=True)
def test_process_child_on_error_notifies_parent(self): # set working_dir and conduit. This is required by process_lifecycle step = PluginStep('parent', working_dir=self.working_dir, conduit=self.conduit) child_step = PluginStep('child', working_dir=self.working_dir, conduit=self.conduit) child_step.initialize = Mock(side_effect=Exception('boo')) child_step.on_error = Mock(side_effect=Exception('flux')) step.on_error = Mock() step.add_child(child_step) self.assertRaises(Exception, step.process_lifecycle) self.assertEquals(reporting_constants.STATE_FAILED, step.state) self.assertEquals(reporting_constants.STATE_FAILED, child_step.state) self.assertTrue(step.on_error.called) self.assertTrue(child_step.on_error.called)