pub struct BenchReport {
pub key: String,
pub requested: usize,
pub completed: usize,
pub concurrency: usize,
pub errors: usize,
pub silent: usize,
pub panicked: usize,
pub elapsed_s: f64,
pub calls_per_s: f64,
pub origins: Vec<OriginLatency>,
}Expand description
zenctl bench rpc (issue #52).
Fields§
§key: String§requested: usize§completed: usize§concurrency: usize§errors: usizeError replies (RFC 05 §3) plus calls the GET itself failed.
silent: usizeCalls that drew zero replies — counted apart from errors, because silence is not a failure and averaging it away would hide it (RFC 05 §3.1).
panicked: usizeCalls whose task panicked: a third population, apart from both
errors and silent (#329).
A panicked call answered nothing and measured nothing, and it is not
news about the fleet — it is news about this tool. Folding it into
errors would blame the producer for a bug here; folding it into
silent would claim an observation nobody made. Dropping it, which is
what let Ok(result) = handle.await else { continue } did, deletes a
whole population from a report whose other counters exist precisely so
that a benchmark cannot average a non-answer away (RFC 13 §3 O6).
elapsed_s: f64§calls_per_s: f64§origins: Vec<OriginLatency>Trait Implementations§
Source§impl Clone for BenchReport
impl Clone for BenchReport
Source§fn clone(&self) -> BenchReport
fn clone(&self) -> BenchReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BenchReport
impl Debug for BenchReport
Auto Trait Implementations§
impl Freeze for BenchReport
impl RefUnwindSafe for BenchReport
impl Send for BenchReport
impl Sync for BenchReport
impl Unpin for BenchReport
impl UnsafeUnpin for BenchReport
impl UnwindSafe for BenchReport
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more