This reverts commit 0f9c82f893b0bb8e91b78c5c17f8d1c8d452669e.
This commit is contained in:
parent
1556cba426
commit
620835a73f
@ -495,9 +495,6 @@ where
|
|||||||
monitor: MT,
|
monitor: MT,
|
||||||
/// The configuration
|
/// The configuration
|
||||||
configuration: EventConfig,
|
configuration: EventConfig,
|
||||||
/// Consider this testcase as interesting always if true
|
|
||||||
#[builder(default = false)]
|
|
||||||
always_interesting: bool,
|
|
||||||
/// The 'main' function to run for each client forked. This probably shouldn't return
|
/// The 'main' function to run for each client forked. This probably shouldn't return
|
||||||
#[builder(default, setter(strip_option))]
|
#[builder(default, setter(strip_option))]
|
||||||
run_client: Option<CF>,
|
run_client: Option<CF>,
|
||||||
@ -687,7 +684,6 @@ where
|
|||||||
|
|
||||||
// Fuzzer client. keeps retrying the connection to broker till the broker starts
|
// Fuzzer client. keeps retrying the connection to broker till the broker starts
|
||||||
let builder = RestartingMgr::<(), MT, S, SP>::builder()
|
let builder = RestartingMgr::<(), MT, S, SP>::builder()
|
||||||
.always_interesting(self.always_interesting)
|
|
||||||
.shmem_provider(self.shmem_provider.clone())
|
.shmem_provider(self.shmem_provider.clone())
|
||||||
.broker_port(self.broker_port)
|
.broker_port(self.broker_port)
|
||||||
.kind(ManagerKind::Client {
|
.kind(ManagerKind::Client {
|
||||||
|
@ -43,7 +43,7 @@ use crate::{
|
|||||||
ProgressReporter,
|
ProgressReporter,
|
||||||
},
|
},
|
||||||
executors::{Executor, HasObservers},
|
executors::{Executor, HasObservers},
|
||||||
fuzzer::{Evaluator, EvaluatorObservers, ExecutionProcessor},
|
fuzzer::{EvaluatorObservers, ExecutionProcessor},
|
||||||
inputs::{NopInput, UsesInput},
|
inputs::{NopInput, UsesInput},
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
state::{HasExecutions, HasLastReportTime, NopState, State, UsesState},
|
state::{HasExecutions, HasLastReportTime, NopState, State, UsesState},
|
||||||
@ -59,8 +59,6 @@ where
|
|||||||
{
|
{
|
||||||
/// We only send 1 testcase for every `throttle` second
|
/// We only send 1 testcase for every `throttle` second
|
||||||
pub(crate) throttle: Option<Duration>,
|
pub(crate) throttle: Option<Duration>,
|
||||||
/// Treat the incoming testcase as interesting always without evaluating them
|
|
||||||
always_interesting: bool,
|
|
||||||
/// We sent last message at `last_sent`
|
/// We sent last message at `last_sent`
|
||||||
last_sent: Duration,
|
last_sent: Duration,
|
||||||
hooks: EMH,
|
hooks: EMH,
|
||||||
@ -100,7 +98,6 @@ impl LlmpEventManager<(), NopState<NopInput>, NopShMemProvider> {
|
|||||||
pub struct LlmpEventManagerBuilder<EMH> {
|
pub struct LlmpEventManagerBuilder<EMH> {
|
||||||
throttle: Option<Duration>,
|
throttle: Option<Duration>,
|
||||||
hooks: EMH,
|
hooks: EMH,
|
||||||
always_interesting: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for LlmpEventManagerBuilder<()> {
|
impl Default for LlmpEventManagerBuilder<()> {
|
||||||
@ -116,7 +113,6 @@ impl LlmpEventManagerBuilder<()> {
|
|||||||
Self {
|
Self {
|
||||||
throttle: None,
|
throttle: None,
|
||||||
hooks: (),
|
hooks: (),
|
||||||
always_interesting: false,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,17 +121,6 @@ impl LlmpEventManagerBuilder<()> {
|
|||||||
LlmpEventManagerBuilder {
|
LlmpEventManagerBuilder {
|
||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
hooks,
|
hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Set `always_interesting`
|
|
||||||
#[must_use]
|
|
||||||
pub fn always_interesting(self, always_interesting: bool) -> LlmpEventManagerBuilder<()> {
|
|
||||||
LlmpEventManagerBuilder {
|
|
||||||
throttle: self.throttle,
|
|
||||||
hooks: self.hooks,
|
|
||||||
always_interesting,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +149,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -194,7 +178,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -225,7 +208,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -260,7 +242,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -289,7 +270,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -322,7 +302,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -350,7 +329,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -382,7 +360,6 @@ impl<EMH> LlmpEventManagerBuilder<EMH> {
|
|||||||
throttle: self.throttle,
|
throttle: self.throttle,
|
||||||
last_sent: Duration::from_secs(0),
|
last_sent: Duration::from_secs(0),
|
||||||
hooks: self.hooks,
|
hooks: self.hooks,
|
||||||
always_interesting: self.always_interesting,
|
|
||||||
llmp,
|
llmp,
|
||||||
#[cfg(feature = "llmp_compression")]
|
#[cfg(feature = "llmp_compression")]
|
||||||
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
compressor: GzipCompressor::with_threshold(COMPRESS_THRESHOLD),
|
||||||
@ -529,9 +506,7 @@ where
|
|||||||
where
|
where
|
||||||
E: Executor<Self, Z> + HasObservers<State = S>,
|
E: Executor<Self, Z> + HasObservers<State = S>,
|
||||||
for<'a> E::Observers: Deserialize<'a>,
|
for<'a> E::Observers: Deserialize<'a>,
|
||||||
Z: ExecutionProcessor<E::Observers, State = S>
|
Z: ExecutionProcessor<E::Observers, State = S> + EvaluatorObservers<E::Observers>,
|
||||||
+ EvaluatorObservers<E::Observers>
|
|
||||||
+ Evaluator<E, Self>,
|
|
||||||
{
|
{
|
||||||
if !self.hooks.pre_exec_all(state, client_id, &event)? {
|
if !self.hooks.pre_exec_all(state, client_id, &event)? {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
@ -549,40 +524,33 @@ where
|
|||||||
} => {
|
} => {
|
||||||
log::info!("Received new Testcase from {client_id:?} ({client_config:?}, forward {forward_id:?})");
|
log::info!("Received new Testcase from {client_id:?} ({client_config:?}, forward {forward_id:?})");
|
||||||
|
|
||||||
if self.always_interesting {
|
let res = if client_config.match_with(&self.configuration)
|
||||||
let item = fuzzer.add_input(state, executor, self, input)?;
|
&& observers_buf.is_some()
|
||||||
log::info!("Added received Testcase as item #{item}");
|
{
|
||||||
} else {
|
#[cfg(feature = "adaptive_serialization")]
|
||||||
let res = if client_config.match_with(&self.configuration)
|
let start = current_time();
|
||||||
&& observers_buf.is_some()
|
let observers: E::Observers =
|
||||||
|
postcard::from_bytes(observers_buf.as_ref().unwrap())?;
|
||||||
|
#[cfg(feature = "adaptive_serialization")]
|
||||||
{
|
{
|
||||||
#[cfg(feature = "adaptive_serialization")]
|
self.deserialization_time = current_time() - start;
|
||||||
let start = current_time();
|
|
||||||
let observers: E::Observers =
|
|
||||||
postcard::from_bytes(observers_buf.as_ref().unwrap())?;
|
|
||||||
#[cfg(feature = "adaptive_serialization")]
|
|
||||||
{
|
|
||||||
self.deserialization_time = current_time() - start;
|
|
||||||
}
|
|
||||||
#[cfg(feature = "scalability_introspection")]
|
|
||||||
{
|
|
||||||
state.scalability_monitor_mut().testcase_with_observers += 1;
|
|
||||||
}
|
|
||||||
fuzzer.execute_and_process(
|
|
||||||
state, self, input, &observers, &exit_kind, false,
|
|
||||||
)?
|
|
||||||
} else {
|
|
||||||
#[cfg(feature = "scalability_introspection")]
|
|
||||||
{
|
|
||||||
state.scalability_monitor_mut().testcase_without_observers += 1;
|
|
||||||
}
|
|
||||||
fuzzer.evaluate_input_with_observers::<E, Self>(
|
|
||||||
state, executor, self, input, false,
|
|
||||||
)?
|
|
||||||
};
|
|
||||||
if let Some(item) = res.1 {
|
|
||||||
log::info!("Added received Testcase as item #{item}");
|
|
||||||
}
|
}
|
||||||
|
#[cfg(feature = "scalability_introspection")]
|
||||||
|
{
|
||||||
|
state.scalability_monitor_mut().testcase_with_observers += 1;
|
||||||
|
}
|
||||||
|
fuzzer.execute_and_process(state, self, input, &observers, &exit_kind, false)?
|
||||||
|
} else {
|
||||||
|
#[cfg(feature = "scalability_introspection")]
|
||||||
|
{
|
||||||
|
state.scalability_monitor_mut().testcase_without_observers += 1;
|
||||||
|
}
|
||||||
|
fuzzer.evaluate_input_with_observers::<E, Self>(
|
||||||
|
state, executor, self, input, false,
|
||||||
|
)?
|
||||||
|
};
|
||||||
|
if let Some(item) = res.1 {
|
||||||
|
log::info!("Added received Testcase as item #{item}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Event::CustomBuf { tag, buf } => {
|
Event::CustomBuf { tag, buf } => {
|
||||||
@ -718,9 +686,7 @@ where
|
|||||||
SP: ShMemProvider,
|
SP: ShMemProvider,
|
||||||
E: HasObservers<State = S> + Executor<Self, Z>,
|
E: HasObservers<State = S> + Executor<Self, Z>,
|
||||||
for<'a> E::Observers: Deserialize<'a>,
|
for<'a> E::Observers: Deserialize<'a>,
|
||||||
Z: ExecutionProcessor<E::Observers, State = S>
|
Z: EvaluatorObservers<E::Observers, State = S> + ExecutionProcessor<E::Observers, State = S>,
|
||||||
+ EvaluatorObservers<E::Observers>
|
|
||||||
+ Evaluator<E, Self>,
|
|
||||||
{
|
{
|
||||||
fn process(
|
fn process(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -766,9 +732,7 @@ where
|
|||||||
EMH: EventManagerHooksTuple<S>,
|
EMH: EventManagerHooksTuple<S>,
|
||||||
S: State + HasExecutions + HasMetadata + HasLastReportTime,
|
S: State + HasExecutions + HasMetadata + HasLastReportTime,
|
||||||
SP: ShMemProvider,
|
SP: ShMemProvider,
|
||||||
Z: ExecutionProcessor<E::Observers, State = S>
|
Z: EvaluatorObservers<E::Observers, State = S> + ExecutionProcessor<E::Observers, State = S>,
|
||||||
+ EvaluatorObservers<E::Observers>
|
|
||||||
+ Evaluator<E, Self>,
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ use crate::{
|
|||||||
LlmpEventManager, LlmpShouldSaveState, ProgressReporter,
|
LlmpEventManager, LlmpShouldSaveState, ProgressReporter,
|
||||||
},
|
},
|
||||||
executors::{Executor, HasObservers},
|
executors::{Executor, HasObservers},
|
||||||
fuzzer::{Evaluator, EvaluatorObservers, ExecutionProcessor},
|
fuzzer::{EvaluatorObservers, ExecutionProcessor},
|
||||||
inputs::UsesInput,
|
inputs::UsesInput,
|
||||||
monitors::Monitor,
|
monitors::Monitor,
|
||||||
observers::ObserversTuple,
|
observers::ObserversTuple,
|
||||||
@ -219,9 +219,7 @@ where
|
|||||||
EMH: EventManagerHooksTuple<S>,
|
EMH: EventManagerHooksTuple<S>,
|
||||||
S: State + HasExecutions + HasMetadata,
|
S: State + HasExecutions + HasMetadata,
|
||||||
SP: ShMemProvider + 'static,
|
SP: ShMemProvider + 'static,
|
||||||
Z: ExecutionProcessor<E::Observers, State = S>
|
Z: EvaluatorObservers<E::Observers, State = S> + ExecutionProcessor<E::Observers>, //CE: CustomEvent<I>,
|
||||||
+ EvaluatorObservers<E::Observers>
|
|
||||||
+ Evaluator<E, LlmpEventManager<EMH, S, SP>>,
|
|
||||||
{
|
{
|
||||||
fn process(&mut self, fuzzer: &mut Z, state: &mut S, executor: &mut E) -> Result<usize, Error> {
|
fn process(&mut self, fuzzer: &mut Z, state: &mut S, executor: &mut E) -> Result<usize, Error> {
|
||||||
let res = self.llmp_mgr.process(fuzzer, state, executor)?;
|
let res = self.llmp_mgr.process(fuzzer, state, executor)?;
|
||||||
@ -238,9 +236,7 @@ where
|
|||||||
EMH: EventManagerHooksTuple<S>,
|
EMH: EventManagerHooksTuple<S>,
|
||||||
S: State + HasExecutions + HasMetadata + HasLastReportTime,
|
S: State + HasExecutions + HasMetadata + HasLastReportTime,
|
||||||
SP: ShMemProvider + 'static,
|
SP: ShMemProvider + 'static,
|
||||||
Z: ExecutionProcessor<E::Observers, State = S>
|
Z: EvaluatorObservers<E::Observers, State = S> + ExecutionProcessor<E::Observers>, //CE: CustomEvent<I>,
|
||||||
+ EvaluatorObservers<E::Observers>
|
|
||||||
+ Evaluator<E, LlmpEventManager<EMH, S, SP>>,
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,9 +402,6 @@ where
|
|||||||
/// The shared memory provider to use for the broker or client spawned by the restarting
|
/// The shared memory provider to use for the broker or client spawned by the restarting
|
||||||
/// manager.
|
/// manager.
|
||||||
shmem_provider: SP,
|
shmem_provider: SP,
|
||||||
#[builder(default = false)]
|
|
||||||
/// Consider this testcase as interesting always if true
|
|
||||||
always_interesting: bool,
|
|
||||||
/// The configuration
|
/// The configuration
|
||||||
configuration: EventConfig,
|
configuration: EventConfig,
|
||||||
/// The monitor to use
|
/// The monitor to use
|
||||||
@ -494,12 +487,10 @@ where
|
|||||||
LlmpConnection::IsClient { client } => {
|
LlmpConnection::IsClient { client } => {
|
||||||
#[cfg(not(feature = "adaptive_serialization"))]
|
#[cfg(not(feature = "adaptive_serialization"))]
|
||||||
let mgr: LlmpEventManager<EMH, S, SP> = LlmpEventManager::builder()
|
let mgr: LlmpEventManager<EMH, S, SP> = LlmpEventManager::builder()
|
||||||
.always_interesting(self.always_interesting)
|
|
||||||
.hooks(self.hooks)
|
.hooks(self.hooks)
|
||||||
.build_from_client(client, self.configuration)?;
|
.build_from_client(client, self.configuration)?;
|
||||||
#[cfg(feature = "adaptive_serialization")]
|
#[cfg(feature = "adaptive_serialization")]
|
||||||
let mgr: LlmpEventManager<EMH, S, SP> = LlmpEventManager::builder()
|
let mgr: LlmpEventManager<EMH, S, SP> = LlmpEventManager::builder()
|
||||||
.always_interesting(self.always_interesting)
|
|
||||||
.hooks(self.hooks)
|
.hooks(self.hooks)
|
||||||
.build_from_client(
|
.build_from_client(
|
||||||
client,
|
client,
|
||||||
@ -524,7 +515,6 @@ where
|
|||||||
// We are a client
|
// We are a client
|
||||||
#[cfg(not(feature = "adaptive_serialization"))]
|
#[cfg(not(feature = "adaptive_serialization"))]
|
||||||
let mgr = LlmpEventManager::builder()
|
let mgr = LlmpEventManager::builder()
|
||||||
.always_interesting(self.always_interesting)
|
|
||||||
.hooks(self.hooks)
|
.hooks(self.hooks)
|
||||||
.build_on_port(
|
.build_on_port(
|
||||||
self.shmem_provider.clone(),
|
self.shmem_provider.clone(),
|
||||||
@ -533,7 +523,6 @@ where
|
|||||||
)?;
|
)?;
|
||||||
#[cfg(feature = "adaptive_serialization")]
|
#[cfg(feature = "adaptive_serialization")]
|
||||||
let mgr = LlmpEventManager::builder()
|
let mgr = LlmpEventManager::builder()
|
||||||
.always_interesting(self.always_interesting)
|
|
||||||
.hooks(self.hooks)
|
.hooks(self.hooks)
|
||||||
.build_on_port(
|
.build_on_port(
|
||||||
self.shmem_provider.clone(),
|
self.shmem_provider.clone(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user