def test_record_fuzz_target_ossfuzz(self, binary_name): """Test that record_fuzz_target works with OSS-Fuzz projects.""" self.mock.is_oss_fuzz.return_value = True data_types.Job(name='job', environment_string='PROJECT_NAME = proj\n').put() fuzz_task.record_fuzz_target('libFuzzer', binary_name, 'job') fuzz_target = ndb.Key(data_types.FuzzTarget, 'libFuzzer_proj_child').get() self.assertDictEqual({ 'binary': binary_name, 'engine': 'libFuzzer', 'project': 'proj', }, fuzz_target.to_dict()) job_mapping = ndb.Key(data_types.FuzzTargetJob, 'libFuzzer_proj_child/job').get() self.assertDictEqual({ 'fuzz_target_name': 'libFuzzer_proj_child', 'job': 'job', 'engine': 'libFuzzer', 'last_run': datetime.datetime(2018, 1, 1, 0, 0), 'weight': 1.0, }, job_mapping.to_dict()) self.assertEqual('libFuzzer_proj_child', fuzz_target.fully_qualified_name()) self.assertEqual('proj_child', fuzz_target.project_qualified_name())
def test_record_fuzz_target_existing(self): """Test that record_fuzz_target works when updating an existing entity.""" data_types.FuzzTarget( binary='child', engine='libFuzzer', project='test-project').put() data_types.FuzzTargetJob( fuzz_target_name='libFuzzer_child', job='job', engine='libFuzzer', last_run=datetime.datetime(2017, 12, 31, 0, 0)).put() fuzz_task.record_fuzz_target('libFuzzer', 'child', 'job') fuzz_target = ndb.Key(data_types.FuzzTarget, 'libFuzzer_child').get() self.assertDictEqual({ 'binary': 'child', 'engine': 'libFuzzer', 'project': 'test-project', }, fuzz_target.to_dict()) job_mapping = ndb.Key(data_types.FuzzTargetJob, 'libFuzzer_child/job').get() self.assertDictEqual({ 'fuzz_target_name': 'libFuzzer_child', 'job': 'job', 'engine': 'libFuzzer', 'last_run': datetime.datetime(2018, 1, 1, 0, 0), 'weight': 1.0, }, job_mapping.to_dict()) self.assertEqual('libFuzzer_child', fuzz_target.fully_qualified_name()) self.assertEqual('child', fuzz_target.project_qualified_name())
def test_record_fuzz_target_no_binary_name(self): """Test recording fuzz target with no binary.""" # Passing None to binary_name is an error. We shouldn't create any # FuzzTargets as a result. fuzz_task.record_fuzz_target('libFuzzer', None, 'job') fuzz_target = ndb.Key(data_types.FuzzTarget, 'libFuzzer_child').get() self.assertIsNone(fuzz_target) job_mapping = ndb.Key(data_types.FuzzTargetJob, 'libFuzzer_child/job').get() self.assertIsNone(job_mapping)
def test_record_fuzz_target(self): """Test that record_fuzz_target works.""" fuzz_task.record_fuzz_target('libFuzzer', 'child', 'job') fuzz_target = ndb.Key(data_types.FuzzTarget, 'libFuzzer_child').get() self.assertDictEqual({ 'binary': 'child', 'engine': 'libFuzzer', 'project': 'test-project', }, fuzz_target.to_dict()) job_mapping = ndb.Key(data_types.FuzzTargetJob, 'libFuzzer_child/job').get() self.assertDictEqual({ 'fuzz_target_name': 'libFuzzer_child', 'job': 'job', 'engine': 'libFuzzer', 'last_run': datetime.datetime(2018, 1, 1, 0, 0), 'weight': 1.0, }, job_mapping.to_dict()) self.assertEqual('libFuzzer_child', fuzz_target.fully_qualified_name()) self.assertEqual('child', fuzz_target.project_qualified_name())