コード例 #1
0
  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)
コード例 #2
0
  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)
コード例 #3
0
  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)