def setUp(self, task_class=TurbiniaTask, evidence_class=evidence.RawDisk): self.task_class = task_class self.evidence_class = evidence_class self.remove_files = [] self.remove_dirs = [] # Set up Tasks under test self.base_output_dir = tempfile.mkdtemp() self.plaso_task = PlasoTask(base_output_dir=self.base_output_dir) self.plaso_task.output_manager = mock.MagicMock() self.plaso_task.output_manager.get_local_output_dirs.return_value = ( None, None) self.task = self.task_class(base_output_dir=self.base_output_dir) self.task.job_name = 'PlasoJob' self.task.output_manager = mock.MagicMock() self.task.output_manager.get_local_output_dirs.return_value = (None, None) self.task.get_metrics = mock.MagicMock() # Set up RawDisk Evidence test_disk_path = tempfile.mkstemp(dir=self.base_output_dir)[1] self.remove_files.append(test_disk_path) self.test_stdout_path = tempfile.mkstemp(dir=self.base_output_dir)[1] self.remove_files.append(self.test_stdout_path) self.evidence = evidence.RawDisk(source_path=test_disk_path) self.evidence.config['abort'] = False self.evidence.config['globals'] = {} self.evidence.preprocess = mock.MagicMock() # Set up TurbiniaTaskResult self.result = TurbiniaTaskResult(base_output_dir=self.base_output_dir) self.result.output_dir = self.base_output_dir
def setUp(self, task_class=TurbiniaTask, evidence_class=evidence.RawDisk): self.task_class = task_class self.evidence_class = evidence_class self.remove_files = [] self.remove_dirs = [] # Set up Tasks under test self.base_output_dir = tempfile.mkdtemp() self.plaso_task = PlasoTask(base_output_dir=self.base_output_dir) self.plaso_task.output_manager = mock.MagicMock() self.plaso_task.output_manager.get_local_output_dirs.return_value = ( None, None) self.task = self.task_class(base_output_dir=self.base_output_dir) self.task.output_manager = mock.MagicMock() self.task.output_manager.get_local_output_dirs.return_value = (None, None) # Set up Evidence test_artifact_path = tempfile.mkstemp(dir=self.base_output_dir)[1] self.remove_files.append(test_artifact_path) self.evidence = self.evidence_class(local_path=test_artifact_path) # Set up TurbiniaTaskResult self.result = TurbiniaTaskResult(base_output_dir=self.base_output_dir) self.result.setup(self.task) self.result.output_dir = self.base_output_dir
def setUp(self, _): self.remove_files = [] self.remove_dirs = [] self.state_manager = None config.LoadConfig() self.state_manager_save = config.STATE_MANAGER self.test_data = { 'name': 'TestTask', 'request_id': 'TestRequestId', 'status': 'TestStatus', 'saved_paths': ['testpath1', 'testpath2'] } # Set up TurbiniaTask self.base_output_dir = tempfile.mkdtemp() self.task = TurbiniaTask(base_output_dir=self.base_output_dir, name=self.test_data['name'], request_id=self.test_data['request_id']) self.task.output_manager = mock.MagicMock() self.task.output_manager.get_local_output_dirs.return_value = ( '/fake/tmp/dir', self.base_output_dir) # Set up TurbiniaTaskResult self.result = TurbiniaTaskResult(base_output_dir=self.base_output_dir) self.result.setup(self.task) self.result.status = self.test_data['status'] self.result.saved_paths = self.test_data['saved_paths'] self.task.result = self.result
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 testTurbiniaTaskRunWrapperBadResult(self): """Test that the run wrapper recovers from run returning bad result.""" bad_result = 'Not a TurbiniaTaskResult' checked_result = TurbiniaTaskResult( task=self.task, base_output_dir=self.base_output_dir) checked_result.status = 'CheckedResult' self.setResults(run=bad_result, validate_result=checked_result) new_result = self.task.run_wrapper(self.evidence) self.task.validate_result.assert_any_call(bad_result) self.assertEqual(type(new_result), TurbiniaTaskResult) self.assertIn('CheckedResult', new_result.status)
def run(results): """Celery task that reduces the results into one SQLite database. Args: results: List of returned values from Celery tasks. Returns: Task result object (instance of TurbiniaTaskResult) as JSON. """ job_id = results[0] cmd_output = subprocess.check_output( ['/usr/local/bin/be_reducer.sh', job_id]) result = TurbiniaTaskResult() result.add_result(result_type='PATH', result=cmd_output) return result.to_json()
def setUp(self): self.remove_files = [] self.remove_dirs = [] # Set up TurbiniaTask self.base_output_dir = tempfile.mkdtemp() self.task = TurbiniaTask(base_output_dir=self.base_output_dir) self.task.output_manager = mock.MagicMock() # Set up RawDisk Evidence test_disk_path = tempfile.mkstemp(dir=self.base_output_dir)[1] self.remove_files.append(test_disk_path) self.evidence = evidence.RawDisk(local_path=test_disk_path) # Set up TurbiniaTaskResult self.result = TurbiniaTaskResult(task=self.task, base_output_dir=self.base_output_dir) self.result.output_dir = self.base_output_dir
def run(src_path, out_path, job_id, **kwargs): """Task that process data with Plaso. Args: src_path: Path to data to process. out_path: Path to temporary storage of results. job_id: Unique ID for this task. Returns: Task result object (instance of TurbiniaTaskResult) as JSON. """ out_path = '{0:s}/{1:s}'.format(out_path, job_id) if not os.path.exists(out_path): os.makedirs(out_path) cmd_output = subprocess.check_output( ['/usr/local/bin/plaso_wrapper.sh', src_path, out_path, job_id]) res, version, metadata = cmd_output.split(' ', 2) result = TurbiniaTaskResult(version=version, metadata=json.loads(metadata)) result.add_result(result_type='PATH', result=res) return result.to_json()