def testTurbiniaTaskRunWrapperAutoClose(self): """Test that the run wrapper closes the task.""" self.setResults() new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.assertEqual(new_result.status, 'TestStatus') self.result.close.assert_called()
def testTurbiniaTaskRunWrapperExceptionThrown(self): """Test that the run wrapper recovers from run throwing an exception.""" self.setResults() self.task.run = mock.MagicMock(side_effect=TurbiniaException) new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.assertEqual(type(new_result), TurbiniaTaskResult) self.assertIn('failed', new_result.status)
def testTurbiniaTaskJobUnavailable(self): """Test that the run wrapper can fail if the job doesn't exist.""" self.setResults() self.task.job_name = 'non_exist' canary_status = ('Task will not run due to the job: ' 'non_exist being disabled on the worker.') new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.assertEqual(new_result.status, canary_status)
def testTurbiniaTaskEvidenceValidationFailure(self, evidence_decode_mock): """Tests Task fails when evidence validation fails.""" self.setResults() test_evidence = evidence.RawDisk() test_evidence.REQUIRED_ATTRIBUTES = ['doesnotexist'] evidence_decode_mock.return_value = test_evidence test_result = self.task.run_wrapper(test_evidence.__dict__) test_result = TurbiniaTaskResult.deserialize(test_result) self.assertFalse(test_result.successful) self.assertIn('validation failed', test_result.status)
def testTurbiniaTaskRunWrapper(self): """Test that the run wrapper executes task run.""" self.unregisterMetrics() self.setResults() self.result.closed = True new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.assertEqual(new_result.status, 'TestStatus') self.result.close.assert_not_called()
def testTurbiniaTaskRunWrapperBadResult(self, _): """Test that the run wrapper recovers from run returning bad result.""" self.unregisterMetrics() bad_result = 'Not a TurbiniaTaskResult' checked_result = TurbiniaTaskResult(base_output_dir=self.base_output_dir) checked_result.setup(self.task) checked_result.status = 'CheckedResult' self.setResults(run=bad_result, validate_result=checked_result) new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.task.validate_result.assert_any_call(bad_result) self.assertEqual(type(new_result), TurbiniaTaskResult) self.assertIn('CheckedResult', new_result.status)
def testTurbiniaTaskRunWrapperSetupFail(self): """Test that the run wrapper recovers from setup failing.""" self.task.result = None canary_status = 'exception_message' self.task.setup = mock.MagicMock( side_effect=TurbiniaException('exception_message')) self.remove_files.append( os.path.join(self.task.base_output_dir, 'worker-log.txt')) new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.assertEqual(type(new_result), TurbiniaTaskResult) self.assertIn(canary_status, new_result.status)
def testTurbiniaTaskRunWrapperSetupFail(self, _, mock_create_result): """Test that the run wrapper recovers from setup failing.""" self.task.result = None canary_status = 'exception_message' self.task.setup = mock.MagicMock( side_effect=TurbiniaException('exception_message')) self.result.no_output_manager = True mock_create_result.return_value = self.result self.remove_files.append( os.path.join(self.task.base_output_dir, 'worker-log.txt')) new_result = self.task.run_wrapper(self.evidence.__dict__) new_result = TurbiniaTaskResult.deserialize(new_result) self.assertEqual(type(new_result), TurbiniaTaskResult) # Checking specifically for `False` value and not whether this evaluates to # `False` because we don't want the `None` case to pass. self.assertEqual(new_result.successful, False) create_results_args = mock_create_result.call_args.kwargs self.assertIn(canary_status, create_results_args['message'])