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);
|
||||
|
||||
// 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
|
||||
let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective);
|
||||
|
@ -463,20 +463,22 @@ impl Default for DummyFeedback {
|
||||
}
|
||||
}
|
||||
|
||||
pub type LenTimeMaximizerCorpusScheduler<CS, I, S> =
|
||||
MinimizerCorpusScheduler<CS, MaxLenTimeFavFactor<I>, I, MapIndexesMetadata, S>;
|
||||
//=========================== Scheduler
|
||||
|
||||
pub type TimeMaximizerCorpusScheduler<CS, I, S> =
|
||||
MinimizerCorpusScheduler<CS, MaxTimeFavFactor<I>, I, MapIndexesMetadata, S>;
|
||||
|
||||
/// Multiply the testcase size with the execution time.
|
||||
/// This favors small and quick testcases.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct MaxLenTimeFavFactor<I>
|
||||
pub struct MaxTimeFavFactor<I>
|
||||
where
|
||||
I: Input + HasLen,
|
||||
{
|
||||
phantom: PhantomData<I>,
|
||||
}
|
||||
|
||||
impl<I> FavFactor<I> for MaxLenTimeFavFactor<I>
|
||||
impl<I> FavFactor<I> for MaxTimeFavFactor<I>
|
||||
where
|
||||
I: Input + HasLen,
|
||||
{
|
||||
@ -486,3 +488,28 @@ where
|
||||
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