def test_new_fuzzer(self): """Tests to ensure that the new fuzzer query works properly.""" data_types.FuzzTarget(engine='libFuzzer', binary='old_fuzzer', project='test-project').put() data_types.FuzzTargetJob(fuzz_target_name='libFuzzer_old_fuzzer', engine='libFuzzer', job='dummy_job', weight=1.0).put() data_types.FuzzTarget(engine='libFuzzer', binary='new_fuzzer', project='test-project').put() data_types.FuzzTargetJob(fuzz_target_name='libFuzzer_new_fuzzer', engine='libFuzzer', job='dummy_job', weight=1.0).put() self.mock._query_helper.return_value = [ { 'fuzzer': 'libFuzzer_new_fuzzer', 'job': 'dummy_job', 'new_weight': 5.0, 'first_time': '<irrelavent for test>', }, ] fuzzer_and_job_weights.update_target_weights_for_engine( None, 'libFuzzer', [fuzzer_and_job_weights.NEW_FUZZER_SPECIFICATION]) expected_match = fuzzer_and_job_weights.SpecificationMatch( new_weight=5.0, reason=fuzzer_and_job_weights.NEW_FUZZER_SPECIFICATION.reason) self.mock.update_weight_for_target.assert_called_with( 'libFuzzer_new_fuzzer', 'dummy_job', expected_match)
def test_problem_penalized(self): """Ensure that we penalize a target for having problems.""" data_types.FuzzTarget(engine='libFuzzer', binary='problematic_fuzzer', project='test-project').put() data_types.FuzzTargetJob( fuzz_target_name='libFuzzer_problematic_fuzzer', engine='libFuzzer', job='dummy_job', weight=0.1).put() self.mock._query_helper.return_value = [ { 'fuzzer': 'libFuzzer_problematic_fuzzer', 'job': 'dummy_job', 'new_weight': 0.25, }, ] fuzzer_and_job_weights.update_target_weights_for_engine( None, 'libFuzzer', [_TEST_SPECIFICATION]) expected_match = fuzzer_and_job_weights.SpecificationMatch( new_weight=0.25, reason=_TEST_SPECIFICATION.reason) self.mock.update_weight_for_target.assert_called_with( 'libFuzzer_problematic_fuzzer', 'dummy_job', expected_match)
def test_weight_increase(self): """Ensure that weight increases are possible.""" data_types.FuzzTarget(engine='libFuzzer', binary='very_good_fuzzer', project='test-project').put() data_types.FuzzTargetJob(fuzz_target_name='libFuzzer_very_good_fuzzer', engine='libFuzzer', job='asan', weight=1.0).put() # Report that the issue is corrected. self.mock._query_helper.return_value = [ { 'fuzzer': 'libFuzzer_very_good_fuzzer', 'job': 'asan', 'new_weight': 2.00, }, ] specification = fuzzer_and_job_weights.QuerySpecification( query_format='ignored', formatter=fuzzer_and_job_weights._past_day_formatter, reason='increase weight for test') match = fuzzer_and_job_weights.SpecificationMatch( new_weight=2.0, reason=specification.reason) fuzzer_and_job_weights.update_target_weights_for_engine( None, 'libFuzzer', [specification]) self.mock.update_weight_for_target.assert_called_with( 'libFuzzer_very_good_fuzzer', 'asan', match)
def test_weight_increase(self): """Ensure that weight increases are possible.""" data_types.FuzzTarget(engine="libFuzzer", binary="very_good_fuzzer", project="test-project").put() data_types.FuzzTargetJob( fuzz_target_name="libFuzzer_very_good_fuzzer", engine="libFuzzer", job="asan", weight=1.0, ).put() # Report that the issue is corrected. self.mock._query_helper.return_value = [{ "fuzzer": "libFuzzer_very_good_fuzzer", "job": "asan", "new_weight": 2.00 }] specification = fuzzer_and_job_weights.QuerySpecification( query_format="ignored", formatter=fuzzer_and_job_weights._past_day_formatter, reason="increase weight for test", ) match = fuzzer_and_job_weights.SpecificationMatch( new_weight=2.0, reason=specification.reason) fuzzer_and_job_weights.update_target_weights_for_engine( None, "libFuzzer", [specification]) self.mock.update_weight_for_target.assert_called_with( "libFuzzer_very_good_fuzzer", "asan", match)
def test_new_fuzzer(self): """Tests to ensure that the new fuzzer query works properly.""" data_types.FuzzTarget(engine="libFuzzer", binary="old_fuzzer", project="test-project").put() data_types.FuzzTargetJob( fuzz_target_name="libFuzzer_old_fuzzer", engine="libFuzzer", job="dummy_job", weight=1.0, ).put() data_types.FuzzTarget(engine="libFuzzer", binary="new_fuzzer", project="test-project").put() data_types.FuzzTargetJob( fuzz_target_name="libFuzzer_new_fuzzer", engine="libFuzzer", job="dummy_job", weight=1.0, ).put() self.mock._query_helper.return_value = [{ "fuzzer": "libFuzzer_new_fuzzer", "job": "dummy_job", "new_weight": 5.0, "first_time": "<irrelavent for test>", }] fuzzer_and_job_weights.update_target_weights_for_engine( None, "libFuzzer", [fuzzer_and_job_weights.NEW_FUZZER_SPECIFICATION]) expected_match = fuzzer_and_job_weights.SpecificationMatch( new_weight=5.0, reason=fuzzer_and_job_weights.NEW_FUZZER_SPECIFICATION.reason, ) self.mock.update_weight_for_target.assert_called_with( "libFuzzer_new_fuzzer", "dummy_job", expected_match)
def test_problem_penalized(self): """Ensure that we penalize a target for having problems.""" data_types.FuzzTarget(engine="libFuzzer", binary="problematic_fuzzer", project="test-project").put() data_types.FuzzTargetJob( fuzz_target_name="libFuzzer_problematic_fuzzer", engine="libFuzzer", job="dummy_job", weight=0.1, ).put() self.mock._query_helper.return_value = [{ "fuzzer": "libFuzzer_problematic_fuzzer", "job": "dummy_job", "new_weight": 0.25, }] fuzzer_and_job_weights.update_target_weights_for_engine( None, "libFuzzer", [_TEST_SPECIFICATION]) expected_match = fuzzer_and_job_weights.SpecificationMatch( new_weight=0.25, reason=_TEST_SPECIFICATION.reason) self.mock.update_weight_for_target.assert_called_with( "libFuzzer_problematic_fuzzer", "dummy_job", expected_match)