From 76e36ab4d80fa9df2cd440173b5577dc623766ee Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Thu, 5 Nov 2020 20:59:50 +0100 Subject: [PATCH] broken engine test --- src/engines/aflengine.rs | 31 ------------------------- src/engines/mod.rs | 50 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 31 deletions(-) delete mode 100644 src/engines/aflengine.rs diff --git a/src/engines/aflengine.rs b/src/engines/aflengine.rs deleted file mode 100644 index 5d97150e36..0000000000 --- a/src/engines/aflengine.rs +++ /dev/null @@ -1,31 +0,0 @@ -use std::time; - -use crate::engines::Evaluator; -use crate::executors::Executor; -use crate::feedbacks::Feedback; -use crate::inputs::Input; -use crate::monitors::Monitor; -use crate::stages::Stage; -use crate::utils::Rand; - -/* -pub struct AflEngine<'a, I: Input> { - pub rand: &'a mut dyn Rand, - pub feedbacks: Vec>>, - - pub stages: Vec>>, - pub current_stage: &'a Box>, - - pub executor: Box>, - - pub executions: u64, - - pub time_start: time::SystemTime, - pub time_last_find: Option, - - // TODO: Map - pub monitors: Vec>, -} - -impl Engine<'_> for AflEngine<'_, I> {} -*/ diff --git a/src/engines/mod.rs b/src/engines/mod.rs index f406dd9d8b..bcbdfec074 100644 --- a/src/engines/mod.rs +++ b/src/engines/mod.rs @@ -156,3 +156,53 @@ where self.executor } } + +impl<'a, I, C, E> DefaultEngine<'a, I, C, E> +where + I: Input, + C: Corpus, + E: Executor, +{ + pub fn new(corpus: &'a mut C, executor: &'a mut E) -> Self { + DefaultEngine { + feedbacks: vec![], + stages: vec![], + corpus: corpus, + executor: executor, + } + } +} + +#[cfg(test)] +mod tests { + use crate::corpus::testcase::Testcase; + use crate::corpus::InMemoryCorpus; + use crate::engines::{DefaultEngine, Engine}; + use crate::executors::inmemory::InMemoryExecutor; + use crate::executors::{Executor, ExitKind}; + use crate::inputs::bytes::BytesInput; + use crate::stages::mutational::DefaultMutationalStage; + use crate::utils::Xoshiro256StarRand; + + use std::cell::RefCell; + use std::path::PathBuf; + use std::rc::Rc; + + fn harness(_executor: &dyn Executor, buf: &[u8]) -> ExitKind { + ExitKind::Ok + } + + #[test] + fn test_engine() { + let mut rand = Xoshiro256StarRand::new(); + let mut corpus = InMemoryCorpus::::new(&mut rand); + let mut executor = InMemoryExecutor::new(harness); + let mut engine = DefaultEngine::new(&mut corpus, &mut executor); + let mut rand1 = Xoshiro256StarRand::new(); + let mut stage = Box::new(DefaultMutationalStage::new(&mut rand1, &mut engine)); + engine.add_stage(stage); + engine.fuzz_one().unwrap(); + let mut stage1 = Box::new(DefaultMutationalStage::new(&mut rand1, &mut engine)); + engine.fuzz_one().unwrap(); + } +}