An echo reply's receive wall timestamp now prefers the kernel arrival reading the Linux listener captured, where that reading is plausible for the datagram it describes. That removes socket-queue and runtime wakeup latency from the upstream one-way delay a client computes, and it is the only thing the observation is allowed to change. The runtime reaches the core through a crate-private entry point taking the optional observation as an explicit per-datagram argument; the public ServerCore::handle_datagram is unchanged in signature and in behavior, and both run one implementation. There is no "next receive timestamp" side channel and no clock wrapper. ClockSample stays one paired userspace instant: the preferred wall value is carried beside it on the classified echo, never inside it. Lifecycle, rate and maximum-duration policy remain on received_at.mono_ns, midpoints remain the mean of the paired userspace samples, and no monotonic instant is estimated from a wall reading. A reading that does not convert, that is later than the core's own sample, or that lags it by more than one second falls back to the userspace wall; it is never a reason to drop a datagram.
30 lines
924 B
Rust
30 lines
924 B
Rust
//! Deterministic tests for the server core.
|
|
//!
|
|
//! The core takes a source endpoint and datagram bytes and returns reply bytes,
|
|
//! so these drive it directly; no socket is bound. Requests are built with the
|
|
//! production encoders wherever the wire form is well-formed, and by hand only
|
|
//! where the point of the test is a payload a compliant encoder cannot produce.
|
|
//!
|
|
//! The two nondeterministic parts are injected. Tokens come from a scripted
|
|
//! source so session identity, collisions and allocation failure are all
|
|
//! assertable; the clock an echo reply's timestamps come from is scripted the
|
|
//! same way, so timestamp behavior is pinned exactly, with no sleeps, no
|
|
//! runtime and no timing tolerances.
|
|
|
|
mod admission;
|
|
mod close;
|
|
mod echo;
|
|
mod fill;
|
|
mod hmac;
|
|
mod kernel_rx;
|
|
mod lifecycle;
|
|
mod negotiation;
|
|
mod no_test;
|
|
mod open;
|
|
mod params;
|
|
mod rate;
|
|
mod sessions;
|
|
mod support;
|
|
mod tokens;
|
|
mod traffic_class;
|