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_weights.update_target_weights_for_engine(None, 'libFuzzer', [_TEST_SPECIFICATION]) expected_match = fuzzer_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_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_weights.update_target_weights_for_engine( None, 'libFuzzer', [fuzzer_weights.NEW_FUZZER_SPECIFICATION]) expected_match = fuzzer_weights.SpecificationMatch( new_weight=5.0, reason=fuzzer_weights.NEW_FUZZER_SPECIFICATION.reason) self.mock.update_weight_for_target.assert_called_with( 'libFuzzer_new_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_weights.QuerySpecification( query_format='ignored', formatter=fuzzer_weights._past_day_formatter, reason='increase weight for test') match = fuzzer_weights.SpecificationMatch( new_weight=2.0, reason=specification.reason) fuzzer_weights.update_target_weights_for_engine(None, 'libFuzzer', [specification]) self.mock.update_weight_for_target.assert_called_with( 'libFuzzer_very_good_fuzzer', 'asan', match)