broken engine test

This commit is contained in:
Andrea Fioraldi 2020-11-05 20:59:50 +01:00
parent 4b16b8a172
commit 76e36ab4d8
2 changed files with 50 additions and 31 deletions

View File

@ -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<Box<dyn Feedback<I>>>,
pub stages: Vec<Box<dyn Stage<I>>>,
pub current_stage: &'a Box<dyn Stage<I>>,
pub executor: Box<dyn Executor<dyn Input>>,
pub executions: u64,
pub time_start: time::SystemTime,
pub time_last_find: Option<time::SystemTime>,
// TODO: Map
pub monitors: Vec<Box<dyn Monitor>>,
}
impl<I: Input> Engine<'_> for AflEngine<'_, I> {}
*/

View File

@ -156,3 +156,53 @@ where
self.executor
}
}
impl<'a, I, C, E> DefaultEngine<'a, I, C, E>
where
I: Input,
C: Corpus<I>,
E: Executor<I>,
{
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<I>(_executor: &dyn Executor<I>, buf: &[u8]) -> ExitKind {
ExitKind::Ok
}
#[test]
fn test_engine() {
let mut rand = Xoshiro256StarRand::new();
let mut corpus = InMemoryCorpus::<BytesInput, _>::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();
}
}