Change StdWeightedScheduler API (#712)

* change

* fmt
This commit is contained in:
Dongjia Zhang 2022-07-27 14:17:45 +02:00 committed by GitHub
parent 1682ce6862
commit a5248d0250
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 6 deletions

View File

@ -318,9 +318,9 @@ fn fuzz(
let power = StdPowerMutationalStage::new(mutator, &edges_observer); let power = StdPowerMutationalStage::new(mutator, &edges_observer);
// A minimization+queue policy to get testcasess from the corpus // A minimization+queue policy to get testcasess from the corpus
let scheduler = IndexesLenTimeMinimizerScheduler::new(StdWeightedScheduler::new(Some( let scheduler = IndexesLenTimeMinimizerScheduler::new(StdWeightedScheduler::with_schedule(
PowerSchedule::EXPLORE, PowerSchedule::EXPLORE,
))); ));
// A fuzzer with feedbacks and a corpus scheduler // A fuzzer with feedbacks and a corpus scheduler
let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective);

View File

@ -141,8 +141,9 @@ fn fuzz(corpus_dirs: &[PathBuf], objective_dir: PathBuf, broker_port: u16) -> Re
let mut stages = tuple_list!(calibration, power); let mut stages = tuple_list!(calibration, power);
// A minimization+queue policy to get testcasess from the corpus // A minimization+queue policy to get testcasess from the corpus
let scheduler = let scheduler = IndexesLenTimeMinimizerScheduler::new(StdWeightedScheduler::with_schedule(
IndexesLenTimeMinimizerScheduler::new(StdWeightedScheduler::new(Some(PowerSchedule::FAST))); PowerSchedule::FAST,
));
// A fuzzer with feedbacks and a corpus scheduler // A fuzzer with feedbacks and a corpus scheduler
let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective);

View File

@ -93,17 +93,37 @@ pub struct WeightedScheduler<F, I, S> {
phantom: PhantomData<(F, I, S)>, phantom: PhantomData<(F, I, S)>,
} }
impl<F, I, S> Default for WeightedScheduler<F, I, S>
where
F: TestcaseScore<I, S>,
I: Input,
S: HasCorpus<I> + HasMetadata + HasRand,
{
fn default() -> Self {
Self::new()
}
}
impl<F, I, S> WeightedScheduler<F, I, S> impl<F, I, S> WeightedScheduler<F, I, S>
where where
F: TestcaseScore<I, S>, F: TestcaseScore<I, S>,
I: Input, I: Input,
S: HasCorpus<I> + HasMetadata + HasRand, S: HasCorpus<I> + HasMetadata + HasRand,
{ {
/// Create a new [`WeightedScheduler`] without any scheduling strategy
#[must_use]
pub fn new() -> Self {
Self {
strat: None,
phantom: PhantomData,
}
}
/// Create a new [`WeightedScheduler`] /// Create a new [`WeightedScheduler`]
#[must_use] #[must_use]
pub fn new(strat: Option<PowerSchedule>) -> Self { pub fn with_schedule(strat: PowerSchedule) -> Self {
Self { Self {
strat, strat: Some(strat),
phantom: PhantomData, phantom: PhantomData,
} }
} }