Nils Andreas Svee
00fd0ebb15
test: consolidate duplicate CLI and client config cases
2026-05-17 00:34:18 +07:00
Nils Andreas Svee
ddd420cc21
test: consolidate and prune implementation-coupled tests
2026-05-17 00:28:05 +07:00
Nils Andreas Svee
5d471b77fb
refactor(irtt-cli): split stream runtime path
2026-05-13 22:20:51 +07:00
Nils Andreas Svee
61c527eb26
refactor(irtt-cli): rename stream output helper
2026-05-13 22:12:03 +07:00
Nils Andreas Svee
f5c35e8142
feat(irtt-cli): note running-only continuous summaries
2026-05-13 22:05:18 +07:00
Nils Andreas Svee
9adab6882d
test(cli): add tests for interrupted continuous mode summary
2026-05-13 22:01:56 +07:00
Nils Andreas Svee
67ef912ba0
feat(cli): print summary when continuous mode is interrupted
2026-05-13 22:01:56 +07:00
Nils Andreas Svee
f2f5728c72
refactor(cli): rename print_finite_summary to print_final_summary
2026-05-13 22:01:56 +07:00
Nils Andreas Svee
c19dac5aef
docs(irtt-cli): expand duration flag documentation
...
Add detailed help text to clarify the difference in statistics handling between finite and continuous test modes.
2026-05-13 21:36:30 +07:00
Nils Andreas Svee
480cb4fa92
warn(irtt-cli): flag large finite stats runs
2026-05-13 20:18:45 +07:00
Nils Andreas Svee
5138dee29f
refactor(irtt-stats): unify duration statistics into a single TimeStats type
...
Simplify the statistics model by merging signed and unsigned duration types into a single structure that uses i128 to consistently handle both positive and negative time offsets.
2026-05-13 12:32:47 +07:00
Nils Andreas Svee
542e67bf74
refactor(irtt-stats): consolidate snapshot types and rename summary to snapshot
2026-05-13 12:21:51 +07:00
Nils Andreas Svee
cbe91f2fe0
feat(client): track and report specific negotiation restrictions
...
Replace basic validation with a detailed negotiation process that records specific parameter changes. This allows the client to provide better feedback when a server restricts requested session parameters like duration or DSCP.
2026-05-12 15:18:02 +07:00
Nils Andreas Svee
7ad83ca1f6
refactor: remove logical_seq from client events, session tracking and stats usage
...
It was an attempt at handling integer wraparound more cleanly keeping in mind that we have a continuous mode,
and so we can more easily reach seq > u32::MAX
However after running the numbers, if we run with a interval of 10ms, it's still gonna take ~497 days before we hit integer overflow, so for now it doesn't seem worth to have this extra logic to handle something that'll in 99.9% of cases be purely an edge case
Keeping in mind autorate usage, in sqm-autorate-rust each send loop is 500 ms by default, and the sleep is then 500 ms / 5 reflectors, so our interval is 100 ms. that means it'll take 4970 days or ~13.6 years to reach the limit. Not worth dealing with IMO
2026-05-11 14:56:07 +07:00
Nils Andreas Svee
21bc7805f7
refactor: mark public enums as non-exhaustive to improve API stability
...
Apply the #[non-exhaustive] attribute to ClientError and WarningKind to prevent breaking changes when adding new variants. Handle the catch-all case in the CLI formatter.
2026-05-11 12:33:40 +07:00
Nils Andreas Svee
5f6bff5dcb
feat(client): add timestamp to ClientEvent::Warning
...
Include a timestamp when reporting warnings to allow consumers like the machine-readable formatter to provide temporal context for troubleshooting.
2026-05-11 09:50:16 +07:00
Nils Andreas Svee
1a04f44bb5
refactor(client): remove redundant timestamp parameter from poll_timeouts
...
Use internal monotonic time by default and introduce poll_timeouts_at for callers requiring a specific sampled Instant. This simplifies the API for standard usage while maintaining flexibility for external event loops.
2026-05-11 09:33:55 +07:00
Nils Andreas Svee
d8b580a19c
refactor(client): remove redundant timestamp parameter from close method
2026-05-10 23:47:46 +07:00
Nils Andreas Svee
023e85741a
refactor(client): remove redundant timestamp parameter from open method
2026-05-10 23:37:35 +07:00
Nils Andreas Svee
2061bb6ae7
feat(stats): track multiple IPDV pairs per event update
...
Expose multiple jitter updates when a single event fills a sequence gap, ensuring accurate IPDV reporting for out-of-order packets in human-readable output.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
8cdd5c63e8
feat(cli): quiet default human output
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
1d6310ec22
feat(cli): format human summary as aligned table
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f9c3685668
feat(cli): improve human event output
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
995293676d
feat(cli): handle interrupt as graceful shutdown
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
e3bb28c559
fix(client): validate packet length configuration
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
f9a639d73d
feat(cli): expose kernel receive timestamp in machine output
2026-05-10 20:56:43 +07:00
Nils Andreas Svee
231021fd40
feat(cli): expose receive metadata in machine output
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
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
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
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
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
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
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
f0121fa0fe
feat(cli): add Human output mode and summary logic
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
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
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