# Copyright 2018 the V8 project authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import random # List of configuration experiments for correctness fuzzing. # List of <probability>, <1st config name>, <2nd config name>, <2nd d8>. # Probabilities must add up to 100. FOOZZIE_EXPERIMENTS = [ [5, 'ignition', 'ignition_asm', 'd8'], [5, 'ignition', 'trusted', 'd8'], [5, 'ignition', 'trusted_opt', 'd8'], [10, 'ignition', 'slow_path', 'd8'], [5, 'ignition', 'slow_path_opt', 'd8'], [25, 'ignition', 'ignition_turbo', 'd8'], [20, 'ignition', 'ignition_turbo_opt', 'd8'], [5, 'ignition_turbo_opt', 'ignition_turbo_opt', 'clang_x86/d8'], [5, 'ignition_turbo', 'ignition_turbo', 'clang_x86/d8'], [5, 'ignition', 'ignition', 'clang_x86/d8'], [5, 'ignition', 'ignition', 'clang_x64_v8_arm64/d8'], [5, 'ignition', 'ignition', 'clang_x86_v8_arm/d8'], ] class Config(object): def __init__(self, name, rng=None): self.name = name self.rng = rng or random.Random() def choose_foozzie_flags(self): """Randomly chooses a configuration from FOOZZIE_EXPERIMENTS. Returns: List of flags to pass to v8_foozzie.py fuzz harness. """ acc = 0 threshold = self.rng.random() * 100 for prob, first_config, second_config, second_d8 in FOOZZIE_EXPERIMENTS: acc += prob if acc > threshold: return [ '--first-config=' + first_config, '--second-config=' + second_config, '--second-d8=' + second_d8, ] assert False