Commit Graph
100 Commits
Author SHA1 Message Date
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 ea85384ced docs(irtt-stats): clarify event contribution for rolling_count 2026-05-13 16:58:12 +07:00
Nils Andreas Svee aa6c3f4fa6 refactor(irtt-stats): remove unknown loss field 2026-05-13 16:25:11 +07:00
Nils Andreas Svee dd1b08c51c docs(irtt-stats): enforce public API documentation 2026-05-13 15:26:37 +07:00
Nils Andreas Svee a180388dc6 docs(irtt-stats): Add documentation comments to public-facing types and fields
Add docstrings to clarify the purpose of statistics collection types and describe the units and behaviors of metric fields.
2026-05-13 15:15:41 +07:00
Nils Andreas Svee 19e0e7aab9 refactor(irtt-stats): extract core aggregation module 2026-05-13 14:57:19 +07:00
Nils Andreas Svee c26008a0b6 refactor(irtt-stats): extract event normalization module 2026-05-13 14:53:13 +07:00
Nils Andreas Svee 1469a2d9e8 refactor(irtt-stats): extract rolling events module 2026-05-13 14:44:56 +07:00
Nils Andreas Svee ebc0d46621 refactor(irtt-stats): extract loss stats module 2026-05-13 14:32:12 +07:00
Nils Andreas Svee cc43b43f00 refactor(irtt-stats): extract IPDV tracking module 2026-05-13 14:25:54 +07:00
Nils Andreas Svee 04d5b634a2 refactor(irtt-stats): extract time stats module 2026-05-13 14:16:07 +07:00
Nils Andreas Svee 557c946796 refactor(irtt-stats): split snapshot builders 2026-05-13 14:07:43 +07:00
Nils Andreas Svee bda1d83c27 refactor(irtt-stats): extract rolling event storage 2026-05-13 13:59:54 +07:00
Nils Andreas Svee 820304f6eb refactor(irtt-stats): split unique reply accounting 2026-05-13 13:49:43 +07:00
Nils Andreas Svee f211845645 refactor(irtt-stats): extract IPDV update recording 2026-05-13 13:45:28 +07:00
Nils Andreas Svee 851825822d refactor(irtt-stats): split CoreStats event handlers 2026-05-13 13:40:55 +07:00
Nils Andreas Svee 969d26d0f1 refactor(irtt-stats): extract event normalization boundary 2026-05-13 13:31:27 +07:00
Nils Andreas Svee c1b2486046 refactor(irtt-stats): split reply and IPDV samples 2026-05-13 13:28:08 +07:00
Nils Andreas Svee 90bb29cd75 refactor(irtt-stats): extract IPDV tracker 2026-05-13 13:20:58 +07:00
Nils Andreas Svee 0dd137a59e refactor(irtt-stats): rename WindowEvent to StatsEvent 2026-05-13 13:12:06 +07:00
Nils Andreas Svee 05f9732760 refactor(irtt-stats): rename median mode to sample mode 2026-05-13 12:58:13 +07:00
Nils Andreas Svee ce4b3c37ab fix(irtt-stats): keep RTT IPDV independent from directional timing 2026-05-13 12:57:10 +07:00
Nils Andreas Svee f05b7cceb2 refactor(irtt-stats): improve duration safety by handling negative time offsets 2026-05-13 12:44:35 +07:00
Nils Andreas Svee 0a66f6fb49 refactor(irtt-stats): remove unused push_duration helper 2026-05-13 12:36:51 +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 197903fb8e test(irtt-stats): rename internal date-time helper and update test case name
Rename system_time_ns to unix_time_ns_after_epoch for better clarity on output behavior and update a continuous mode test case name to more accurately reflect its purpose.
2026-05-13 12:07:51 +07:00
Nils Andreas Svee adfe8e7a6b test(irtt-stats): move integration tests to dedicated test module 2026-05-13 11:59:06 +07:00
Nils Andreas Svee 72470bd196 test(client): update and expand DSCP negotiation test coverage 2026-05-13 00:37:54 +07:00
Nils Andreas Svee fec14b2c7c feat(session): restrict DSCP negotiation to allow only disabling (reset to 0) 2026-05-13 00:37:53 +07:00
Nils Andreas Svee 3dfca1ab5e refactor(session): implement Display and add documentation for NegotiationRestriction 2026-05-13 00:37:45 +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 a7e10358fd test(client): use fallible packet length helpers in integration tests 2026-05-12 13:05:45 +07:00
Nils Andreas Svee 4549d95d0a test(client): update test helpers to handle fallible packet length calculations 2026-05-12 13:05:45 +07:00
Nils Andreas Svee 1b79c864d4 refactor(client): propagate ProtoError from recv_buffer_size calculation 2026-05-12 13:05:45 +07:00
Nils Andreas Svee 20a1d9dc8e refactor(proto): make echo_packet_len return Result to handle negative lengths 2026-05-12 13:05:45 +07:00
Nils Andreas Svee b508a94198 build: bump version to 0.2.0 2026-05-11 15:11:58 +07:00
Nils Andreas Svee 4ed09e2209 ci: add cargo-dist for automated release management
Introduce cargo-dist workflows and configuration to automate binary building and GitHub Release creation across multiple platforms.
2026-05-11 15:10:15 +07:00
Nils Andreas Svee e2a9d68843 ci: add actions read permission to OSV-Scanner workflow
Grant necessary read access to actions to ensure the vulnerability scanner can evaluate the execution environment.
2026-05-11 15:01:05 +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 8ef53c999a build: optimize release profile for binary size and performance
Enable LTO, single codegen units, and symbol stripping to reduce binary footprint and improve execution efficiency.
2026-05-11 13:27:50 +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 8d1d0f50de style(client): reformat imports in test files
Collapse multi-line import statements into single lines to improve code legibility and maintain consistent formatting across test suites.
2026-05-11 10:13:06 +07:00
Nils Andreas Svee d6c6e60742 refactor(client): expose len methods for map structures 2026-05-11 10:10:24 +07:00
Nils Andreas Svee 1cdd100473 refactor(irtt-stats): remove redundant process_with_update method
Simplify the StatsCollector API by removing an unnecessary indirection that performed the same logic as the main process method.
2026-05-11 10:09:13 +07:00
Nils Andreas Svee 80fda92231 fix(irtt-stats): use event timestamp for warnings instead of current time
Ensure warning statistics reflect the actual time the event occurred rather than the moment the event was processed.
2026-05-11 09:55:11 +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 2258509021 chore: bump version to 0.1.1 across all crates
Update workspace members and dependencies to version 0.1.1 to prepare for a new release.
2026-05-10 21:17:22 +07:00
Nils Andreas Svee 6b373380f4 ci: pin GitHub Action digests in Renovate configuration
Add the pinGitHubActionDigests helper to improve CI security by using immutable commit SHA digests instead of mutable tags.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee fc8e6d10e8 ci: add cargo-semver-checks to verify API compatibility
Check for breaking changes against all features on tags and manual triggers to ensure semantic versioning compliance.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 1a314778ad ci: expand workflow security auditing with actionlint
Rename the zizmor workflow to actions-security and add actionlint to provide comprehensive static analysis and linting for GitHub Actions.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2e9ad57d61 ci: remove redundant build and test workflow
Deletes the basic build_and_test.yml to avoid duplication with more specialized CI pipelines and security scanners.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee b00d3ef633 ci: add zizmor for GitHub Actions security scanning 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ae5f939fb2 ci: implement supply chain security and workflow linting 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 385d531461 chore: refine cargo-deny policy for stricter dependency auditing
Replace the default template with a tailored configuration that enforces explicit license checks, denies unknown registries, and mandates exact commit pins for git dependencies.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 00aab3dd6b ci: modernize clippy sarif workflow 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8343bcbb54 ci: add primary rust continuous integration pipeline 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b8d60fcc23 chore: add cargo-deny configuration for dependency auditing 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 44ffb9557a fix(client): use correct socket option for IPv4 TOS reception on Linux 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 26fbe86e90 chore: add OSV-Scanner workflow for vulnerability scanning 2026-05-10 20:56:43 +07:00
Nils Andreas Svee b3f4a2d9eb chore: add rust-clippy workflow for code analysis 2026-05-10 20:56:43 +07:00
Nils Andreas Svee c386f87a0e fix(deps): update rust crate ctrlc to 3.5.2 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 47a8143bce refactor(irtt-proto): update HMAC implementation for Digest 0.11 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 831fd0cc45 build(deps): update hmac and md-5 dependencies 2026-05-10 20:56:43 +07:00
Nils Andreas Svee fe418d650d refactor(client): upgrade socket2 to 0.6 and use version-specific API 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 13404297c4 build: update windows-sys dependencies and consolidate versions 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 8d24d4811a chore: upgrade ctrlc to version 3.5 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 416e5b43ba build: add package metadata to member crates for publishing
Include descriptions, keywords, categories, and workspace-inherited fields (repository, homepage, readme) to prepare crates for distribution on crates.io.
2026-05-10 20:56:43 +07:00
Nils Andreas Svee 2368e0b3ee build: centralize internal dependencies using workspace inheritance 2026-05-10 20:56:43 +07:00
Nils Andreas Svee a1fb2b636b chore: add license 2026-05-10 20:56:43 +07:00
Nils Andreas Svee 38416876aa docs: add README with project overview and usage examples 2026-05-10 20:56:43 +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 8f35b1d229 feat(stats): expose per-event jitter updates 2026-05-10 20:56:43 +07:00
Nils Andreas Svee ce7e5ca235 chore(workflow): add build workflow 2026-05-10 20:56:43 +07:00
Nils Andreas Svee fa06177c60 docs(proto): document HMAC-MD5 compatibility 2026-05-10 20:56:43 +07:00
Nils Andreas Svee c3f2a524a3 fix(client): avoid lossy timing casts 2026-05-10 20:56:43 +07:00
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 b8d16f3d18 test(client): cover timing validation boundaries 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 8374a51054 fix(client): reject runtime-invalid negotiated dscp 2026-05-10 20:56:43 +07:00
Nils Andreas Svee dfdc43292a fix(proto): reject invalid echo packet lengths 2026-05-10 20:56:43 +07:00
Nils Andreas Svee d53dd7f406 fix(proto): reject oversized echo payloads 2026-05-10 20:56:43 +07:00
Nils Andreas Svee f5cdaf4b67 perf(proto): compute HMAC without packet allocation 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 be2f43b07a chore(client): polish managed runner ergonomics 2026-05-10 20:56:43 +07:00