#[non_exhaustive]pub enum ScenarioFailure {
ReceiveTimeout {
endpoint: String,
deadline: Duration,
lanes: String,
},
ValidationMismatch {
action: usize,
detail: String,
},
VarUnresolved {
name: String,
},
ActionTransport {
action: usize,
source: TransportError,
},
PartnerStartup {
message: String,
},
ArrivalLaneOverflow {
endpoint: String,
dropped: usize,
},
ShutdownFailure {
message: String,
},
LogCaptureUnavailable {
detail: String,
},
}Expand description
Why a scenario failed (ADR-0069 §7). Verdict-class variants mean the system under test failed the scenario; apparatus-class variants mean the scenario never got a meaningful answer. The CLI maps verdict-class failures to exit 1 and apparatus-class failures to exit 2; doc validation also maps to exit 2.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ReceiveTimeout
Nothing reached the partner before the deadline (verdict
class, receive-timeout).
Fields
ValidationMismatch
A validation failed (verdict class, validation-mismatch).
Fields
VarUnresolved
A referenced variable was never set (apparatus class,
scenario-var-unresolved, bd rc-whof): an unset variable is an
authoring bug, not a product failure — the scenario never got a
meaningful answer.
ActionTransport
A send or receive failed at the transport before any assertion
ran (apparatus class, action-transport-failure).
Fields
source: TransportErrorThe transport failure.
PartnerStartup
A partner listener bound but its handler failed to start
(apparatus class, partner-startup-failure). Reserved in v1:
no adapter separates bind from handler start, and the CLI maps
bind failures to partner-bind-failure doc errors.
ArrivalLaneOverflow
The partner’s arrival lane dropped arrivals while the scenario
was not receiving (apparatus class, arrival-lane-overflow):
the harness lost them before the system under test could fail
the scenario on substance.
Fields
ShutdownFailure
Teardown of the boot or a partner timed out or erred after the
verdict was recorded (apparatus class, shutdown-failure).
The document declares a logs: block but the harness’s capture
subscriber does not own the process’s tracing seat (apparatus
class, log-capture-unavailable, rc-tdgh5): a foreign tracing
subscriber won the first-wins try_init, so the events the
block asserts against never reach the harness. The scenario
never got a meaningful answer.
Trait Implementations§
Source§impl Clone for ScenarioFailure
impl Clone for ScenarioFailure
Source§fn clone(&self) -> ScenarioFailure
fn clone(&self) -> ScenarioFailure
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 ScenarioFailure
impl Debug for ScenarioFailure
Source§impl Display for ScenarioFailure
impl Display for ScenarioFailure
Source§impl Error for ScenarioFailure
impl Error for ScenarioFailure
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl PartialEq for ScenarioFailure
impl PartialEq for ScenarioFailure
impl StructuralPartialEq for ScenarioFailure
Auto Trait Implementations§
impl Freeze for ScenarioFailure
impl RefUnwindSafe for ScenarioFailure
impl Send for ScenarioFailure
impl Sync for ScenarioFailure
impl Unpin for ScenarioFailure
impl UnsafeUnpin for ScenarioFailure
impl UnwindSafe for ScenarioFailure
Blanket Implementations§
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request