Nils Andreas Svee
ed62a5c80c
test: refactor real backend support for reliable output capture
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
706e3bd1e1
test: make IPv6 socket option tests more robust
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
9e9b2d641f
feat(cli): improve cli help text and unit test naming
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2a11e77cfd
chore: remove unused interop feature flag
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
d93e10ba45
feat(cli): add support for configuring outgoing TTL and hop limit
...
Introduce a `--ttl` flag to allow users to set the IPv4 TTL or IPv6 hop limit, providing control over packet lifespan and helping diagnose network topology issues.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
a80a5e2b7b
test(client): rename DSCP smoke test to reflect specific behavior
...
Update the test name to clarify that it verifies DSCP configuration during the session open and close lifecycle.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
063214b83b
feat(client): implement DSCP negotiation and socket traffic class application
...
Apply the negotiated DSCP value to the UDP socket after a successful session open and clear it before closing to support network-level quality of service. This change adds platform-specific socket option handling for IPv4 TOS and IPv6 Traffic Class.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ab95489f20
test(client): add integration tests for packet length and server fill
...
Verify that the client correctly handles custom packet lengths and server fill negotiation to ensure protocol compliance and support for larger MTUs. Add validation to reject empty server fill strings during configuration.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
a4e2f3aef4
test(client): unify fake and real backend testing via BackendPeer
...
Introduce a BackendPeer abstraction to transparently switch between fake and real IRTT backends. This simplifies test logic by removing manual skip checks and providing a consistent interface for server lifecycle management.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
3d49f725ae
test(client): add integration tests for compatibility with real IRTT backends
...
Introduce a mechanism to run tests against a live irtt binary to verify real-world protocol interoperability, including HMAC authentication and various timestamp modes.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
797120056e
test(client): add comprehensive integration tests for HMAC authentication
...
Verify HMAC negotiation, session closure, and error handling for authenticated probes to ensure protocol security and reliability.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
3f33f630b2
test(client): split client tests into behavior-focused modules
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
48891f8b5a
refactor(client): move internal client tests to a dedicated sub-module
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
8bd52f35fa
refactor(cli): rename m8 compatibility terms to advanced protocol options
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c80b108b6d
test(cli): consolidate invalid argument parsing tests
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
e49e91c528
test: verify RTT equality when no timestamping is present
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b5b6ecc69e
refactor(test): extract RTT processing verification to helper function
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2052417b6b
test: update mock timestamp simulation in test support
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
3de92749e9
test(client): add integration tests for m8 compatibility
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
aa5209dd0a
test(cli): expand test coverage for new CLI parameters
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
8aa8876dc5
feat(cli): add advanced negotiation and protocol options
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
8ecd113f04
feat(cli): add support for midpoint timestamps and received stats
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
880653a98d
feat(client): implement protocol configuration validation
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
1d7c9d70ec
feat(client): define constants and validation for DSCP and server fill
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
0a795379a7
test(client): validate parameter mapping from configuration
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ab855338af
test(proto): verify HMAC field placement in protocol packets
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
5831f4a3b5
test(proto): add unit tests for parameter encoding and decoding
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
cf65e88fa3
refactor(client): modularize duration restriction validation
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b1451742b4
feat(cli): implement continuous statistics and summary suppression
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b35bc50ca4
refactor(cli): enhance main loop and reply draining logic
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ba5dd8abb5
feat(cli): add support for continuous mode with zero duration
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
9fd9ee2c3a
refactor(client): improve session initialization and state access
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
54bb17ffd9
style(cli): rename machine output keys for clarity
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
4770d0d476
feat(cli): integrate StatsCollector into main execution loop
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
181b796e8d
feat(cli): implement summary formatting for statistics
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
91a3e6f383
build(cli): add irtt-stats dependency and feature flag
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f0121fa0fe
feat(cli): add Human output mode and summary logic
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2524f5d1b2
feat(client): drain late replies before closing session
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ca99b752a6
feat(stats): bound sequence tracking in continuous mode
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c345f4b549
fix(client): prune insertion order in TimedOutMap on removal
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
7d3a9f8da0
build(stats): add irtt-client dependency to irtt-stats
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
16c1af750c
feat(stats): implement core statistics collection and aggregation
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
5d791d1fcd
feat(client): emit EchoSent event with scheduling metadata
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ab951a440a
feat(client): track and handle late replies after timeout
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f41f63b922
feat(client): implement SignedDuration for precise RTT tracking
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
5ef9a8a366
feat(client): record and report packet size in client events
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
a773a94a45
refactor(managed): ensure event hub disconnection on all exit paths
...
Wrap the client execution in a cleanup handler to guarantee that event hub subscriptions are disconnected regardless of whether the session completes successfully or returns an error.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
0a9054a51d
test(managed): improve test reliability and coverage
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
a2d27b154b
feat(managed): implement automatic cancellation on session drop
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
4da8f962d4
feat(managed): automatically unregister dropped event subscriptions
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
16b81eb867
refactor(managed): rename malformed events to warning_events
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
37e3f243eb
feat(managed): export managed client modules
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
ffcbacd438
feat(managed): implement managed client runner
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
9a52a3f938
feat(managed): implement event hub for pub/sub communication
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
d9846b7868
feat(managed): implement thread-safe cancellation token
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
3f7afd4f7a
feat(error): introduce worker panic and subscription disconnection errors
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
3ba4f56221
feat(client): add run status and packet count helpers
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c5941d6383
refactor(cli): restrict test utilities to test module and expand value escaping
...
Move internal test helpers to the test module to clean up the public API and add support for escaping common whitespace characters in output values.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
49b48bdce2
perf(cli): use LineWriter for stdout to improve output responsiveness
...
Switch from BufWriter to LineWriter to ensure trace logs and events are flushed to the terminal immediately upon each line completion.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
be473d04ad
docs(cli): add TODO for refining final drain duration logic
...
Document the need to derive the final drain period from client state rather than using a hardcoded guess.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c65ba48e10
feat(cli): implement main execution loop and network I/O logic
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
510f307acc
feat(cli): implement command-line argument parsing and event formatting
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
4b90187d1d
chore(cli): add dependencies for CLI implementation
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
2715dcb5bd
test(client): add regression tests for packet processing and RTT
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
5a9231505e
refactor(probe): improve CompletedSet eviction logic using insertion order
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
0099ac799f
fix(client): handle negative RTT and simplify sample generation
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
d212258707
feat(client): add specific warning kinds for dropped packets
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b9fc4b9cee
refactor(client): capture send timestamp before socket call
...
Record the send timestamp immediately before the socket operation to include local enqueue overhead in RTT measurements, providing more conservative latency data for consumers.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
1cc0d60eac
refactor(client): unify production and test timing logic
...
Extract internal methods that accept an optional timestamp to eliminate code duplication between primary client logic and test helpers.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
4a35f5ba0f
test(client): add regression tests for edge cases and correctness
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
9661ebc4a6
fix(client): allow partial one-way delay samples
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
548363ad05
fix(client): improve probe tracking and reply handling
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
7cbc30a3a2
refactor(client): dynamic receive buffer sizing based on negotiated parameters
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
cdf41f2a82
feat(client): add configuration validation and new error types
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
265618b97e
refactor(client): use internal clock for timestamps and simplify probe signatures
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
abf4b8134c
test(client): add comprehensive tests for Milestone 3 probing functionality
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c373b957d5
feat(client): implement core echo probe sending and receiving logic
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
cebce832ff
feat(client): define new event types and error variants for echo probes
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
df3edf9f1d
feat(client): add configuration options for probe timing and budgets
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
b0dc1fb70c
feat(client): implement PendingMap and CompletedSet for probe tracking
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
e33b9b3f3f
refactor(client): rename ClientState to ClientPhase and introduce ActiveSession
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
30675ff85f
fix(client): Improve socket error handling and remove redundant validation
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
befe431304
feat(client): Reject empty open_timeouts configuration with dedicated error
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
04ebaf829a
refactor(proto): Remove unused protocol flags and helper functions
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
a5e8c80ecb
build(deps): Upgrade thiserror to version 2
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f1f5dfe541
test(client): Verify socket read timeout restoration after open()
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f095eb5930
refactor(client): Introduce and apply test helper for timeout servers
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
80bdb7d84a
test(client): Add open() state validation tests
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f8505b01f3
feat(client): Validate client state and restore socket timeout on open()
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
1266497119
feat(client): Add client session state error variants
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
14bc506b51
feat(client): Normalize IPv6 addresses without port in brackets
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
d26b049b06
feat(irtt-client): introduce core client connection logic
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
0a237462e9
refactor(irtt-client): update lib.rs for modularized client
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
7429beef79
refactor(irtt-client): modularize client components
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
6772a3def0
build(deps): upgrade thiserror to version 2
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
eb5e9dc9bc
feat(client): Implement initial IRTT client session management
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
7769c39dbe
build(client): Add core dependencies for irtt-client
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
c512bde36c
style(gitignore): Restrict target directory ignore scope
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
34dd2ee5d2
refactor(proto): Remove Clock::None and default to Clock::Both
...
Simplify clock parameter negotiation by rejecting the ambiguous 'None' value.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
cf74887bdf
feat(project): Establish initial IRTT workspace and protocol definitions
2026-05-10 20:56:28 +07:00