Nils Andreas Svee
2d6581f31f
refactor(client): encapsulate SignedDuration and enhance its API
...
Hide internal fields to improve type safety and provide helper methods for unit conversions and negative value checks. Fix several feature-gated test compilation issues.
2026-05-17 22:47:16 +07:00
Nils Andreas Svee
bec56d4114
refactor(client): use SignedDuration for effective RTT to support negative values
...
Simplify RttSample by merging signed and unsigned fields into a single SignedDuration for adjusted and effective RTT. This ensures accurate reporting and statistics when server processing time exceeds raw RTT.
2026-05-17 21:30:51 +07:00
Nils Andreas Svee
37de7c96a1
test(client): remove redundant probe/reply tests
2026-05-17 15:22:08 +07:00
Nils Andreas Svee
6c5972aa58
test(client): refactor probes and replies tests into submodules
...
Split the monolithic `probes_replies.rs` file into logical submodules and expose internal packet processing methods to improve test maintainability and coverage of boundary conditions.
2026-05-17 14:54:59 +07:00
Nils Andreas Svee
bed877760e
test: prune client tests that assert private implementation details
2026-05-17 14:48:45 +07:00
Nils Andreas Svee
39d414d588
test: consolidate formatter and hub policy cases
2026-05-17 00:39:23 +07:00
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
a7288cc612
test(client): extract backend smoke tests into a dedicated module
2026-05-17 00:17:10 +07:00
Nils Andreas Svee
fdcdb3b9d7
test(client): remove implementation-coupled client tests
2026-05-16 23:41:11 +07:00
Nils Andreas Svee
bd9ed7eb88
test(client): trim implementation-coupled probe tests
2026-05-16 23:41:11 +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
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