示例#1
0
 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()
示例#2
0
    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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
  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()
示例#6
0
 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)
示例#7
0
    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)
示例#8
0
  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'])