Commit Graph
45 Commits
Author SHA1 Message Date
Nils Andreas Svee a41a1e319d fix(client): handle close-flagged echo replies 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 48f6cb80ed fix(proto): require exact echo reply packet length 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ef18bb549c fix(client): report counter overflows clearly 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2c75e08e30 fix(client): reject invalid timing parameters earlier 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 9977d26a43 perf(client): reuse receive buffer 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 33e2b663b8 fix(client): report read-timeout restore failures 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 860594ebec fix(client): check probe scheduling arithmetic 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b53e650c53 fix(client): handle sequence wrap in reply ordering 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 40dc41dc39 feat(client): add receive datagram abstraction 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 25d5c1db1c feat(client): add receive metadata scaffold 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 48891f8b5a refactor(client): move internal client tests to a dedicated sub-module 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 0a795379a7 test(client): validate parameter mapping from configuration 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 2524f5d1b2 feat(client): drain late replies before closing session 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 3ba4f56221 feat(client): add run status and packet count helpers 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 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 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 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 d26b049b06 feat(irtt-client): introduce core client connection logic 2026-05-10 20:56:43 +07:00