pub struct ConformanceViolation {
pub timestamp: DateTime<Utc>,
pub method: String,
pub path: String,
pub client_ip: String,
pub status: u16,
pub reason: String,
pub category: String,
pub occurrences: u32,
pub client_mockforge_version: Option<String>,
pub client_sent_at: Option<DateTime<Utc>>,
pub summary: String,
}Expand description
Server-side spec-violation entry surfaced by the new Conformance TUI screen (Issue #79 round 12).
Fields§
§timestamp: DateTime<Utc>§method: String§path: String§client_ip: String§status: u16§reason: String§category: String§occurrences: u32Round 30 — MOCKFORGE_CONFORMANCE_BUFFER_UNIQUE=true causes the
server-side buffer to dedup by signature and stamp every entry
with how many duplicate hits coalesced into it. Defaults to 1
when older mockforge instances send the field-less payload.
client_mockforge_version: Option<String>Round 36 (#876) — mockforge version of the client that sent
the request, read off the X-Mockforge-Client-Version header
server-side. None when the inbound request didn’t carry the
header (older clients, real proxy traffic).
client_sent_at: Option<DateTime<Utc>>Round 36 (#876) — wall-clock moment the client stamped on the
request, read off the X-Mockforge-Client-Sent-At header
server-side. Lets a user grep a bench JSONL row’s
client_sent_at and find the matching server-side violation
even when the request was retried / load-balanced.
summary: StringRound 44 (#79) — short human-readable line collapsing the
validator’s nested details[]/errors[] into one row, shaped
"<N> <category> violation(s): <name> (<rule>), ...". Empty
when the underlying reason didn’t carry a parseable details
payload. Defaults to empty for older servers that don’t ship
the field, so the TUI continues to render with just reason.
Trait Implementations§
Source§impl Clone for ConformanceViolation
impl Clone for ConformanceViolation
Source§fn clone(&self) -> ConformanceViolation
fn clone(&self) -> ConformanceViolation
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 ConformanceViolation
impl Debug for ConformanceViolation
Source§impl<'de> Deserialize<'de> for ConformanceViolation
impl<'de> Deserialize<'de> for ConformanceViolation
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>,
Auto Trait Implementations§
impl Freeze for ConformanceViolation
impl RefUnwindSafe for ConformanceViolation
impl Send for ConformanceViolation
impl Sync for ConformanceViolation
impl Unpin for ConformanceViolation
impl UnsafeUnpin for ConformanceViolation
impl UnwindSafe for ConformanceViolation
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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