switch scheduler
This commit is contained in:
parent
06d382bff8
commit
dbd6391b59
@ -353,7 +353,9 @@ fn fuzz(
|
|||||||
let power = PowerMutationalStage::new(mutator, PowerSchedule::FAST, &edges_observer);
|
let power = PowerMutationalStage::new(mutator, PowerSchedule::FAST, &edges_observer);
|
||||||
|
|
||||||
// A minimization+queue policy to get testcasess from the corpus
|
// A minimization+queue policy to get testcasess from the corpus
|
||||||
let scheduler = IndexesLenTimeMinimizerCorpusScheduler::new(PowerQueueCorpusScheduler::new());
|
// let scheduler = IndexesLenTimeMinimizerCorpusScheduler::new(PowerQueueCorpusScheduler::new());
|
||||||
|
let scheduler = LenTimeMaximizerCorpusScheduler::new(PowerQueueCorpusScheduler::new());
|
||||||
|
|
||||||
|
|
||||||
// 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);
|
||||||
|
@ -463,20 +463,22 @@ impl Default for DummyFeedback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type LenTimeMaximizerCorpusScheduler<CS, I, S> =
|
//=========================== Scheduler
|
||||||
MinimizerCorpusScheduler<CS, MaxLenTimeFavFactor<I>, I, MapIndexesMetadata, S>;
|
|
||||||
|
pub type TimeMaximizerCorpusScheduler<CS, I, S> =
|
||||||
|
MinimizerCorpusScheduler<CS, MaxTimeFavFactor<I>, I, MapIndexesMetadata, S>;
|
||||||
|
|
||||||
/// Multiply the testcase size with the execution time.
|
/// Multiply the testcase size with the execution time.
|
||||||
/// This favors small and quick testcases.
|
/// This favors small and quick testcases.
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct MaxLenTimeFavFactor<I>
|
pub struct MaxTimeFavFactor<I>
|
||||||
where
|
where
|
||||||
I: Input + HasLen,
|
I: Input + HasLen,
|
||||||
{
|
{
|
||||||
phantom: PhantomData<I>,
|
phantom: PhantomData<I>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<I> FavFactor<I> for MaxLenTimeFavFactor<I>
|
impl<I> FavFactor<I> for MaxTimeFavFactor<I>
|
||||||
where
|
where
|
||||||
I: Input + HasLen,
|
I: Input + HasLen,
|
||||||
{
|
{
|
||||||
@ -486,3 +488,28 @@ where
|
|||||||
Ok(execs_per_hour)
|
Ok(execs_per_hour)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub type LenTimeMaximizerCorpusScheduler<CS, I, S> =
|
||||||
|
MinimizerCorpusScheduler<CS, MaxExecsLenFavFactor<I>, I, MapIndexesMetadata, S>;
|
||||||
|
|
||||||
|
/// Multiply the testcase size with the execution time.
|
||||||
|
/// This favors small and quick testcases.
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct MaxExecsLenFavFactor<I>
|
||||||
|
where
|
||||||
|
I: Input + HasLen,
|
||||||
|
{
|
||||||
|
phantom: PhantomData<I>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<I> FavFactor<I> for MaxExecsLenFavFactor<I>
|
||||||
|
where
|
||||||
|
I: Input + HasLen,
|
||||||
|
{
|
||||||
|
fn compute(entry: &mut Testcase<I>) -> Result<u64, Error> {
|
||||||
|
// TODO maybe enforce entry.exec_time().is_some()
|
||||||
|
let execs_per_hour = (3600.0/entry.exec_time().expect("testcase.exec_time is needed for scheduler").as_secs_f64()) as u64;
|
||||||
|
let execs_times_length_per_hour = execs_per_hour*entry.cached_len()? as u64;
|
||||||
|
Ok(execs_times_length_per_hour)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user