fixed testcases:
This commit is contained in:
parent
f966e2e807
commit
7a7167dcac
@ -4,6 +4,7 @@ pub mod llmp;
|
|||||||
pub mod shmem_translated;
|
pub mod shmem_translated;
|
||||||
|
|
||||||
use alloc::string::String;
|
use alloc::string::String;
|
||||||
|
use tuple_list::tuple_list_type;
|
||||||
use core::{marker::PhantomData, time};
|
use core::{marker::PhantomData, time};
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -316,7 +317,7 @@ where
|
|||||||
// we need to pass engine to process() too, TODO
|
// we need to pass engine to process() too, TODO
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
println!("Received new Testcase");
|
println!("Received new Testcase");
|
||||||
let observers: OT = postcard::from_bytes(&observers_buf)?;
|
let observers: OT = self.deserialize_observers(&observers_buf)?;
|
||||||
let interestingness = state.is_interesting(&input, &observers)?;
|
let interestingness = state.is_interesting(&input, &observers)?;
|
||||||
state.add_if_interesting(corpus, input, interestingness)?;
|
state.add_if_interesting(corpus, input, interestingness)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -326,6 +327,14 @@ where
|
|||||||
)),
|
)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn serialize_observers(&mut self, observers: &OT) -> Result<Vec<u8>, AflError> {
|
||||||
|
Ok(postcard::to_allocvec(observers)?)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn deserialize_observers(&mut self, observers_buf: &[u8]) -> Result<OT, AflError> {
|
||||||
|
Ok(postcard::from_bytes(observers_buf)?)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
@ -405,6 +414,8 @@ where
|
|||||||
fn start_time(&mut self) -> time::Duration {
|
fn start_time(&mut self) -> time::Duration {
|
||||||
self.start_time
|
self.start_time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
@ -513,49 +524,51 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
use crate::events::Event;
|
use std::io::stderr;
|
||||||
|
|
||||||
|
use crate::{events::Event, observers::ObserversTuple};
|
||||||
use crate::inputs::bytes::BytesInput;
|
use crate::inputs::bytes::BytesInput;
|
||||||
use crate::observers::StdMapObserver;
|
use crate::observers::StdMapObserver;
|
||||||
use crate::serde_anymap::{Ptr, PtrMut};
|
use crate::serde_anymap::{Ptr, PtrMut};
|
||||||
use crate::tuples::{tuple_list, tuple_list_type, MatchNameAndType, Named};
|
use crate::tuples::{tuple_list, tuple_list_type, MatchNameAndType, Named};
|
||||||
|
use crate::events::EventManager;
|
||||||
|
|
||||||
|
use super::LoggerEventManager;
|
||||||
|
|
||||||
static mut MAP: [u32; 4] = [0; 4];
|
static mut MAP: [u32; 4] = [0; 4];
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_event_serde() {
|
fn test_event_serde() {
|
||||||
let obv = StdMapObserver::new("test", unsafe { &mut MAP });
|
let obv = StdMapObserver::new("test", unsafe { &mut MAP });
|
||||||
let mut map = tuple_list!(obv);
|
let mut map = tuple_list!(obv);
|
||||||
let observers_buf = postcard::to_allocvec(&map).unwrap();
|
let observers_buf = map.serialize().unwrap();
|
||||||
|
// test_event_mgr.serialize_observers(&map).unwrap();
|
||||||
|
|
||||||
let i = BytesInput::new(vec![0]);
|
let i = BytesInput::new(vec![0]);
|
||||||
let e = Event::NewTestcase {
|
let e = Event::NewTestcase {
|
||||||
sender_id: 0,
|
sender_id: 0,
|
||||||
input: &i,
|
input: i,
|
||||||
observers_buf: observers_buf,
|
observers_buf,
|
||||||
client_config: "conf".into(),
|
client_config: "conf".into(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let j = serde_json::to_string(&e).unwrap();
|
let serialized = postcard::to_allocvec(&e).unwrap();
|
||||||
|
|
||||||
let d: Event<BytesInput, tuple_list_type!(StdMapObserver<u32>)> =
|
match postcard::from_bytes::<Event<BytesInput>>(&serialized).unwrap() {
|
||||||
serde_json::from_str(&j).unwrap();
|
|
||||||
match d {
|
|
||||||
Event::NewTestcase {
|
Event::NewTestcase {
|
||||||
sender_id: _,
|
sender_id: _,
|
||||||
input: _,
|
input: _,
|
||||||
observers_buf,
|
observers_buf,
|
||||||
client_config: String,
|
client_config: _,
|
||||||
} => {
|
} => {
|
||||||
let o = postcard::from_bytes(&observers_buf)
|
let o = map.deserialize(&observers_buf).unwrap();
|
||||||
.unwrap()
|
let test_observer = o.match_name_type::<StdMapObserver<u32>>("test")
|
||||||
.as_ref()
|
|
||||||
.match_name_type::<StdMapObserver<u32>>("test")
|
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!("test", o.name());
|
assert_eq!("test", test_observer.name());
|
||||||
}
|
}
|
||||||
_ => panic!("mistmatch".to_string()),
|
_ => panic!("mistmatch".to_string()),
|
||||||
};
|
};
|
||||||
|
@ -26,10 +26,21 @@ pub trait Observer: Named + serde::Serialize + serde::de::DeserializeOwned + 'st
|
|||||||
pub trait ObserversTuple:
|
pub trait ObserversTuple:
|
||||||
MatchNameAndType + MatchType + serde::Serialize + serde::de::DeserializeOwned
|
MatchNameAndType + MatchType + serde::Serialize + serde::de::DeserializeOwned
|
||||||
{
|
{
|
||||||
|
/// Reset all executors in the tuple
|
||||||
fn reset_all(&mut self) -> Result<(), AflError>;
|
fn reset_all(&mut self) -> Result<(), AflError>;
|
||||||
fn post_exec_all(&mut self) -> Result<(), AflError>;
|
fn post_exec_all(&mut self) -> Result<(), AflError>;
|
||||||
//fn for_each(&self, f: fn(&dyn Observer));
|
//fn for_each(&self, f: fn(&dyn Observer));
|
||||||
//fn for_each_mut(&mut self, f: fn(&mut dyn Observer));
|
//fn for_each_mut(&mut self, f: fn(&mut dyn Observer));
|
||||||
|
|
||||||
|
/// Serialize this tuple to a buf
|
||||||
|
fn serialize(&self) -> Result<Vec<u8>, AflError> {
|
||||||
|
Ok(postcard::to_allocvec(&self)?)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Deserilaize
|
||||||
|
fn deserialize(&self, serialized: &[u8]) -> Result<Self, AflError> {
|
||||||
|
Ok(postcard::from_bytes(serialized)?)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ObserversTuple for () {
|
impl ObserversTuple for () {
|
||||||
@ -39,6 +50,8 @@ impl ObserversTuple for () {
|
|||||||
fn post_exec_all(&mut self) -> Result<(), AflError> {
|
fn post_exec_all(&mut self) -> Result<(), AflError> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//fn for_each(&self, f: fn(&dyn Observer)) { }
|
//fn for_each(&self, f: fn(&dyn Observer)) { }
|
||||||
//fn for_each_mut(&mut self, f: fn(&mut dyn Observer)) { }
|
//fn for_each_mut(&mut self, f: fn(&mut dyn Observer)) { }
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user