pub struct Trace<PT: ProtocolTypes> {
pub descriptors: Vec<AgentDescriptor<PT::PUTConfig>>,
pub steps: Vec<Step<PT>>,
pub prior_traces: Vec<Trace<PT>>,
}Fields§
§descriptors: Vec<AgentDescriptor<PT::PUTConfig>>§steps: Vec<Step<PT>>§prior_traces: Vec<Trace<PT>>Implementations§
source§impl<PT: ProtocolTypes> Trace<PT>
impl<PT: ProtocolTypes> Trace<PT>
source§impl<PT: ProtocolTypes> Trace<PT>
impl<PT: ProtocolTypes> Trace<PT>
pub fn count_functions_by_name(&self, find_name: &'static str) -> usize
pub fn count_functions(&self) -> usize
pub fn write_plots(&self, i: u16)
source§impl<PT: ProtocolTypes> Trace<PT>
impl<PT: ProtocolTypes> Trace<PT>
A Trace consists of several Steps. Each has either a OutputAction or an
InputAction. Each Steps references an Agent by name. Furthermore, a trace also has a
list of AgentDescriptors which act like a blueprint to spawn Agents with a corresponding
server or client role and a specific TLs version. Essentially they are an Agent without a
stream.
pub fn spawn_agents<PB>(&self, ctx: &mut TraceContext<PB>) -> Result<(), Error>where
PB: ProtocolBehavior<ProtocolTypes = PT> + ProtocolBehavior,
pub fn execute_until_step_wrap<PB>(
&self,
ctx: &mut TraceContext<PB>,
stop_at_step: usize,
trace_number: &mut usize,
) -> Result<(), Error>where
PB: ProtocolBehavior<ProtocolTypes = PT>,
pub fn execute_until_step<PB>(
&self,
ctx: &mut TraceContext<PB>,
stop_at_step: usize,
trace_number: &mut usize,
) -> Result<(), Error>where
PB: ProtocolBehavior<ProtocolTypes = PT>,
pub fn execute<PB>(
&self,
ctx: &mut TraceContext<PB>,
trace_number: &mut usize,
) -> Result<(), Error>where
PB: ProtocolBehavior<ProtocolTypes = PT>,
pub fn serialize_postcard(&self) -> Result<Vec<u8>, Error>
pub fn deserialize_postcard(slice: &[u8]) -> Result<Self, Error>
pub fn all_payloads(&self) -> Vec<&Payloads>
pub fn all_payloads_mut(&mut self) -> Vec<&mut Payloads>
pub fn is_symbolic(&self) -> bool
sourcepub fn truncate_at_step(&mut self, after_step: usize)
pub fn truncate_at_step(&mut self, after_step: usize)
Remove the steps after (excluding) after_step
Trait Implementations§
source§impl<PT: ProtocolTypes> Debug for Trace<PT>
impl<PT: ProtocolTypes> Debug for Trace<PT>
source§impl<PT: ProtocolTypes> Default for Trace<PT>
impl<PT: ProtocolTypes> Default for Trace<PT>
source§impl<'de, PT> Deserialize<'de> for Trace<PT>where
PT: ProtocolTypes,
impl<'de, PT> Deserialize<'de> for Trace<PT>where
PT: ProtocolTypes,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<PT: ProtocolTypes> Display for Trace<PT>
impl<PT: ProtocolTypes> Display for Trace<PT>
source§impl<PT: ProtocolTypes> HasLen for Trace<PT>
impl<PT: ProtocolTypes> HasLen for Trace<PT>
source§impl<PT: ProtocolTypes> Input for Trace<PT>
impl<PT: ProtocolTypes> Input for Trace<PT>
source§fn generate_name(&self, _idx: usize) -> String
fn generate_name(&self, _idx: usize) -> String
Generate a name for this input, the user is responsible for making each name of testcase unique.
§fn wrapped_as_testcase(&mut self)
fn wrapped_as_testcase(&mut self)
An hook executed if the input is stored as
Testcasesource§impl<'a, S, PB: ProtocolBehavior> Mutator<Trace<<PB as ProtocolBehavior>::ProtocolTypes>, S> for GenerateMutator<'a, S, PB>where
S: HasRand,
impl<'a, S, PB: ProtocolBehavior> Mutator<Trace<<PB as ProtocolBehavior>::ProtocolTypes>, S> for GenerateMutator<'a, S, PB>where
S: HasRand,
source§impl<S, PT> Mutator<Trace<PT>, S> for BitFlipMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BitFlipMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteDecMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteDecMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteFlipMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteFlipMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteIncMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteIncMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteInterestingMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteInterestingMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteNegMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteNegMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for ByteRandMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for ByteRandMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesCopyMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesCopyMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesDeleteMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesDeleteMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesExpandMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesExpandMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesInsertCopyMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesInsertCopyMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesInsertMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesInsertMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesLargeExpandMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesLargeExpandMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesRandInsertMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesRandInsertMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesRandSetMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesRandSetMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesSetMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesSetMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for BytesSwapMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for BytesSwapMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for CrossoverInsertMutatorDY<S>where
S: HasCorpus + HasRand + HasMaxSize + UsesInput<Input = Trace<PT>>,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for CrossoverInsertMutatorDY<S>where
S: HasCorpus + HasRand + HasMaxSize + UsesInput<Input = Trace<PT>>,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for CrossoverReplaceMutatorDY<S>where
S: HasCorpus + HasRand + HasMaxSize + UsesInput<Input = Trace<PT>>,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for CrossoverReplaceMutatorDY<S>where
S: HasCorpus + HasRand + HasMaxSize + UsesInput<Input = Trace<PT>>,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for DwordAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for DwordAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for DwordInterestingMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for DwordInterestingMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<'a, S, PT: ProtocolTypes, PB> Mutator<Trace<PT>, S> for MakeMessage<'a, PB>where
S: HasRand,
PB: ProtocolBehavior<ProtocolTypes = PT>,
impl<'a, S, PT: ProtocolTypes, PB> Mutator<Trace<PT>, S> for MakeMessage<'a, PB>where
S: HasRand,
PB: ProtocolBehavior<ProtocolTypes = PT>,
source§impl<S, PT> Mutator<Trace<PT>, S> for QwordAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for QwordAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<'a, S, PT: ProtocolTypes, PB> Mutator<Trace<PT>, S> for ReadMessage<'a, PB>where
S: HasRand,
PB: ProtocolBehavior<ProtocolTypes = PT>,
impl<'a, S, PT: ProtocolTypes, PB> Mutator<Trace<PT>, S> for ReadMessage<'a, PB>where
S: HasRand,
PB: ProtocolBehavior<ProtocolTypes = PT>,
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for RemoveAndLiftMutator<S>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for RemoveAndLiftMutator<S>where
S: HasRand,
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for RepeatMutator<S>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for RepeatMutator<S>where
S: HasRand,
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for ReplaceMatchMutator<S, PT>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for ReplaceMatchMutator<S, PT>where
S: HasRand,
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for ReplaceReuseMutator<S>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for ReplaceReuseMutator<S>where
S: HasRand,
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for SkipMutator<S>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for SkipMutator<S>where
S: HasRand,
source§impl<S, PT> Mutator<Trace<PT>, S> for SpliceMutatorDY<S>where
S: HasCorpus + HasRand + HasMaxSize + UsesInput<Input = Trace<PT>>,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for SpliceMutatorDY<S>where
S: HasCorpus + HasRand + HasMaxSize + UsesInput<Input = Trace<PT>>,
PT: ProtocolTypes,
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for SwapMutator<S>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for SwapMutator<S>where
S: HasRand,
source§impl<S, PT> Mutator<Trace<PT>, S> for WordAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for WordAddMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
source§impl<S, PT> Mutator<Trace<PT>, S> for WordInterestingMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
impl<S, PT> Mutator<Trace<PT>, S> for WordInterestingMutatorDY<S>where
S: HasRand + HasMaxSize,
PT: ProtocolTypes,
Auto Trait Implementations§
impl<PT> Freeze for Trace<PT>
impl<PT> !RefUnwindSafe for Trace<PT>
impl<PT> Send for Trace<PT>
impl<PT> Sync for Trace<PT>
impl<PT> Unpin for Trace<PT>
impl<PT> !UnwindSafe for Trace<PT>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneAny for T
impl<T> CloneAny for T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)§impl<I, S> MutatedTransform<I, S> for Iwhere
I: Input + Clone,
S: HasCorpus<Input = I>,
impl<I, S> MutatedTransform<I, S> for Iwhere
I: Input + Clone,
S: HasCorpus<Input = I>,
§fn try_transform_from(
base: &mut Testcase<I>,
state: &S,
_corpus_idx: CorpusId,
) -> Result<I, Error>
fn try_transform_from( base: &mut Testcase<I>, state: &S, _corpus_idx: CorpusId, ) -> Result<I, Error>
Transform the provided testcase into this type
§fn try_transform_into(
self,
_state: &S,
) -> Result<(I, <I as MutatedTransform<I, S>>::Post), Error>
fn try_transform_into( self, _state: &S, ) -> Result<(I, <I as MutatedTransform<I, S>>::Post), Error>
Transform this instance back into the original input type
§impl<Tail, T> Prepend<T> for Tail
impl<Tail, T> Prepend<T> for Tail
§type PreprendResult = Tail
type PreprendResult = Tail
The Resulting [
TupleList], of an [Prepend::prepend()] call,
including the prepended entry.