pub struct Trace<PT: ProtocolTypes> {
pub descriptors: Vec<AgentDescriptor>,
pub steps: Vec<Step<PT>>,
pub prior_traces: Vec<Trace<PT>>,
}
Fields§
§descriptors: Vec<AgentDescriptor>
§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 Step
s. Each has either a OutputAction
or an
InputAction
. Each Step
s references an Agent
by name. Furthermore, a trace also has a
list of AgentDescriptors which act like a blueprint to spawn Agent
s with a corresponding
server or client role and a specific TLs version. Essentially they are an Agent
without a
stream.
fn spawn_agents<PB: ProtocolBehavior>( &self, ctx: &mut TraceContext<PB>, ) -> Result<(), Error>
pub fn execute<PB>(&self, ctx: &mut TraceContext<PB>) -> Result<(), Error>where
PB: ProtocolBehavior<ProtocolTypes = PT>,
pub fn serialize_postcard(&self) -> Result<Vec<u8>, Error>
pub fn deserialize_postcard(slice: &[u8]) -> Result<Trace<PT>, Error>
Trait Implementations§
source§impl<PT: ProtocolTypes> Debug for Trace<PT>
impl<PT: ProtocolTypes> Debug 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
Testcase
source§impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for GenerateMutator<S, PT>where
S: HasRand,
impl<S, PT: ProtocolTypes> Mutator<Trace<PT>, S> for GenerateMutator<S, PT>where
S: HasRand,
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: 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,
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.