chore(release): prepare client 0.7.0, stats 0.6.0 and app 0.10.0
This commit is contained in:
13 files changed
+149
-34
No files matched your search
+79
-2
@@ -10,6 +10,12 @@ release. The format is loosely based on
|
|||||||
|
|
||||||
## irtt-proto
|
## irtt-proto
|
||||||
|
|
||||||
|
### 0.5.2
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- Exported `VERSION`, the compiled crate's Cargo package version, for applications reporting their component versions. Wire behavior is unchanged.
|
||||||
|
|
||||||
### 0.5.1
|
### 0.5.1
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
@@ -34,6 +40,25 @@ release. The format is loosely based on
|
|||||||
|
|
||||||
## irtt-client
|
## irtt-client
|
||||||
|
|
||||||
|
### 0.7.0
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- Opt-in automatic session reconnection in the Tokio managed driver and `BlockingManagedClient`. Continuous measurement runs can retry initial connection failures, failed or peer-closed sessions, and server-limited session completion. Silence detection reconnects a session that stops replying while probes are being sent.
|
||||||
|
- Each desired target retries independently, leaving healthy targets running. Exponential backoff doubles from `reconnect_initial_delay` (default 250 ms) to `reconnect_max_delay` (default 10 s); a valid reply restores the initial delay. Reopening resolves the original endpoint again. Target removal and explicit shutdown cancel recovery.
|
||||||
|
- Exported `VERSION` for compiled component-version reporting.
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Stopping or replacing a target during session opening cancels the pending open immediately, instead of waiting for its retry schedule to finish.
|
||||||
|
|
||||||
|
#### Compatibility
|
||||||
|
|
||||||
|
- `ManagedClientConfig` gains `reconnect_timeout`, `reconnect_initial_delay`, and `reconnect_max_delay`; update complete struct literals or use `..Default::default()`. Reconnection is disabled by default (`reconnect_timeout: None`) and is valid only for continuous normal measurement mode, with a positive schedulable silence timeout. Retry delays must be positive and schedulable, and the maximum must be at least twice the initial delay.
|
||||||
|
- `ManagedConfigError` gains `InvalidReconnectPolicy` and `InvalidReconnectDelays`; downstream exhaustive matches must handle them. Delay validation applies even when recovery is disabled.
|
||||||
|
- A reconnecting target returns to pending/opening status rather than producing a terminal outcome for each retry. Consumers must handle repeated session-start events for the same target instance and reset session-bound statistics and sequence tracking on each new session.
|
||||||
|
- Use `irtt-stats` 0.6 with this client version when exchanging `ClientEvent` values. Tokio remains optional; the default low-level client remains runtime-free. No wire-protocol migration is required.
|
||||||
|
|
||||||
### 0.6.0
|
### 0.6.0
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
@@ -105,6 +130,12 @@ release. The format is loosely based on
|
|||||||
|
|
||||||
## irtt-server
|
## irtt-server
|
||||||
|
|
||||||
|
### 0.5.4
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- Exported `VERSION`, the compiled crate's Cargo package version, for applications reporting their component versions. Server policy and wire behavior are unchanged.
|
||||||
|
|
||||||
### 0.5.3
|
### 0.5.3
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
@@ -150,6 +181,23 @@ release. The format is loosely based on
|
|||||||
|
|
||||||
## irtt-stats
|
## irtt-stats
|
||||||
|
|
||||||
|
### 0.6.0
|
||||||
|
|
||||||
|
#### Changed
|
||||||
|
|
||||||
|
- Updated the public `irtt-client` dependency to 0.7. Applications passing `ClientEvent` values into this crate must upgrade both dependencies together; client 0.6 and 0.7 event types come from different crate versions and cannot be mixed.
|
||||||
|
- Added signed nanosecond changes to `IpdvPairUpdate`: `rtt_ipdv_ns`, `send_ipdv_ns`, and `receive_ipdv_ns`. Existing `Duration` fields and aggregate IPDV statistics remain absolute magnitudes. Update complete struct literals to include the new fields.
|
||||||
|
- Exported `VERSION` for compiled component-version reporting.
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Directional IPDV is available with midpoint timestamps, using the midpoint for both server endpoints.
|
||||||
|
- Per-packet IPDV preserves the sign of the delay change instead of reporting only its magnitude.
|
||||||
|
|
||||||
|
#### Compatibility
|
||||||
|
|
||||||
|
- Collectors remain scoped to one target session. Reset or replace a collector when the managed client reconnects; this release does not aggregate across session sequence resets.
|
||||||
|
|
||||||
### 0.5.2
|
### 0.5.2
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
@@ -192,6 +240,30 @@ release. The format is loosely based on
|
|||||||
|
|
||||||
## irtt-rs
|
## irtt-rs
|
||||||
|
|
||||||
|
### 0.10.0
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- Continuous CLI recovery with `--continuous --reconnect` (or `--duration 0 --reconnect`). Failed initial opens, failed or closed sessions, server-limited completion, and reply silence trigger independent per-target retries. Healthy targets keep running, including in multi-target and `--targets-stdin` runs; removing a desired target cancels its retries.
|
||||||
|
- `--reconnect-timeout` configures reply-silence detection while sending (default 10 s). `--reconnect-initial-delay` and `--reconnect-max-delay` configure per-target exponential backoff (defaults 250 ms and 10 s); the maximum must be at least twice the initial delay. Valid replies reset the backoff. Explicit stops do not retry.
|
||||||
|
- `--no-stats` disables client statistics collection, retention warnings, and final summaries while retaining measurement events and structured output columns. Statistics-dependent fields have absent values.
|
||||||
|
- Optional `stats` Cargo feature, enabled by default and required by `tui`. Build a lightweight client without statistics using `cargo build --release -p irtt-rs --bin irtt-client --no-default-features --features client`; use `--features client,stats` for a client-only build with statistics.
|
||||||
|
- `--continuous` as an explicit alias for zero duration, `-d` for duration, `-i` for interval, `-l` for packet length, client `-f` for output format, and `-v` for verbose output. Client/TUI durations accept fractional and composite values such as `2.5s` and `1m30s`.
|
||||||
|
- Client/TUI `--timeouts` configures the session-opening attempt schedule independently of session reconnection.
|
||||||
|
- Client `-n` / `--no-test` negotiates parameters and exits without measurement probes, using the selected output format.
|
||||||
|
- `--version` on the dispatcher and applets; applets also report their compiled library versions and whether client statistics are disabled.
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
- Signed per-packet IPDV is preserved in output; directional IPDV is available with midpoint timestamps.
|
||||||
|
|
||||||
|
#### Compatibility
|
||||||
|
|
||||||
|
- Reconnection is opt-in for the CLI and requires continuous measurement mode; it cannot be combined with `--no-test`. Statistics reset on every reopened session, so summaries describe only the latest session per target, not the whole continuous run. A warning explains this when recovery and statistics are both enabled. Continuous TUI recovery remains enabled as before.
|
||||||
|
- Statistics are no longer implied by the `client` feature. Existing custom builds using `--no-default-features --features client` must add `stats` to retain collection and summaries. `--no-stats` is accepted in builds without statistics; output schemas are preserved, with absent IPDV values.
|
||||||
|
- Nonzero duration values require units; zero (including `0s`) still selects continuous mode. `--continuous` and an explicit `--duration` are mutually exclusive.
|
||||||
|
- Application-library users must account for the added client argument/configuration fields and optional statistics feature. Dependencies are now client 0.7 and stats 0.6, with proto >=0.5.2 and server >=0.5.4 for component-version reporting. MSRV remains Rust 1.88.
|
||||||
|
|
||||||
### 0.9.0
|
### 0.9.0
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
@@ -330,10 +402,15 @@ Starting with this release, crates are versioned and tagged independently
|
|||||||
rather than in lockstep. Each crate's release is tagged as `<crate>/vX.Y.Z`
|
rather than in lockstep. Each crate's release is tagged as `<crate>/vX.Y.Z`
|
||||||
(e.g. `irtt-proto/v0.5.0`), pointing at the commit its version was released
|
(e.g. `irtt-proto/v0.5.0`), pointing at the commit its version was released
|
||||||
from. `irtt-proto`, `irtt-client`, `irtt-server`, and `irtt-stats` are
|
from. `irtt-proto`, `irtt-client`, `irtt-server`, and `irtt-stats` are
|
||||||
libraries published to [crates.io](https://crates.io); their tags exist to
|
libraries published to [crates.io](https://crates.io); publication is a separate
|
||||||
|
manual Cargo step. Their tags exist to
|
||||||
identify the exact source for a given crates.io release and do not produce a
|
identify the exact source for a given crates.io release and do not produce a
|
||||||
GitHub Release. The application package (`irtt-cli` through 0.5.0, `irtt-rs`
|
GitHub Release. The application package (`irtt-cli` through 0.5.0, `irtt-rs`
|
||||||
from 0.6.0 onward) is the only package with prebuilt binary artifacts: pushing
|
from 0.6.0 onward) is the only package with prebuilt binary artifacts: pushing
|
||||||
an `irtt-rs/vX.Y.Z` tag triggers [cargo-dist](https://opensource.axo.dev/cargo-dist/)
|
an `irtt-rs/vX.Y.Z` tag triggers [cargo-dist](https://opensource.axo.dev/cargo-dist/)
|
||||||
to build and publish a GitHub Release with platform binaries. The historical
|
to build and publish a GitHub Release with platform binaries. On Gitea, the
|
||||||
|
same application tag triggers the server Docker image workflow, publishing
|
||||||
|
`X.Y.Z` and `latest` to Gitea and GHCR. Library tags
|
||||||
|
trigger the Gitea Semver workflow, but neither binary nor image publication.
|
||||||
|
The application tag also triggers that Semver check. The historical
|
||||||
`irtt-cli/v0.5.0` tag remains as released; it is not rewritten or replaced.
|
`irtt-cli/v0.5.0` tag remains as released; it is not rewritten or replaced.
|
||||||
Generated
+5
-5
@@ -857,7 +857,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-client"
|
name = "irtt-client"
|
||||||
version = "0.6.0"
|
version = "0.7.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"irtt-proto",
|
"irtt-proto",
|
||||||
"irtt-server",
|
"irtt-server",
|
||||||
@@ -879,7 +879,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-proto"
|
name = "irtt-proto"
|
||||||
version = "0.5.1"
|
version = "0.5.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hmac",
|
"hmac",
|
||||||
"md-5",
|
"md-5",
|
||||||
@@ -890,7 +890,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-rs"
|
name = "irtt-rs"
|
||||||
version = "0.9.0"
|
version = "0.10.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"clap",
|
"clap",
|
||||||
@@ -911,7 +911,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-server"
|
name = "irtt-server"
|
||||||
version = "0.5.3"
|
version = "0.5.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom 0.4.3",
|
"getrandom 0.4.3",
|
||||||
"irtt-proto",
|
"irtt-proto",
|
||||||
@@ -923,7 +923,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-stats"
|
name = "irtt-stats"
|
||||||
version = "0.5.2"
|
version = "0.6.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"irtt-client",
|
"irtt-client",
|
||||||
"measurement-stats",
|
"measurement-stats",
|
||||||
|
|||||||
+4
-4
@@ -16,10 +16,10 @@ rust-version = "1.88"
|
|||||||
repository = "https://github.com/Lochnair/irtt-rs"
|
repository = "https://github.com/Lochnair/irtt-rs"
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
irtt-proto = { version = "0.5.0", path = "crates/irtt-proto" }
|
irtt-proto = { version = "0.5.2", path = "crates/irtt-proto" }
|
||||||
irtt-client = { version = "0.6.0", path = "crates/irtt-client" }
|
irtt-client = { version = "0.7.0", path = "crates/irtt-client" }
|
||||||
irtt-server = { version = "0.5.2", path = "crates/irtt-server" }
|
irtt-server = { version = "0.5.4", path = "crates/irtt-server" }
|
||||||
irtt-stats = { version = "0.5.2", path = "crates/irtt-stats" }
|
irtt-stats = { version = "0.6.0", path = "crates/irtt-stats" }
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
opt-level = "z"
|
opt-level = "z"
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ this project's interop harness.
|
|||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| Wire protocol | Protocol version 1, verified against upstream v0.9.1 | Protocol version 1 (unchanged in v0.9.2) |
|
| Wire protocol | Protocol version 1, verified against upstream v0.9.1 | Protocol version 1 (unchanged in v0.9.2) |
|
||||||
| Finite probing | Supported, default 10s | Supported, default 1m |
|
| Finite probing | Supported, default 10s | Supported, default 1m |
|
||||||
| Continuous/indefinite operation | Supported (`--duration 0`); still computes running statistics (see below) | Supported via streaming mode (`-s`, added in v0.9.2); computes no statistics at all in that mode |
|
| Continuous/indefinite operation | Supported (`--continuous` or `--duration 0`), with optional per-target reconnection | Supported via streaming mode (`-s`, added in v0.9.2); computes no statistics at all in that mode |
|
||||||
| Statistics in continuous mode | Running count/min/max/mean/variance per target; exact medians unavailable; bounded IPDV tracking | None in streaming mode — raw/event output only, by design, to avoid unbounded memory |
|
| Statistics in continuous mode | Optional running count/min/max/mean/variance per session; no exact medians; bounded IPDV tracking. Use `--no-stats` or omit the `stats` feature to disable collection | None in streaming mode — raw/event output only, by design, to avoid unbounded memory |
|
||||||
| Multi-target probing (one invocation) | Supported, with labels and staggered/burst pacing | Not supported — one remote address per invocation |
|
| Multi-target probing (one invocation) | Supported, with labels and staggered/burst pacing | Not supported — one remote address per invocation |
|
||||||
| Terminal UI | `irtt-tui`, a live graph/dashboard applet | Not present |
|
| Terminal UI | `irtt-tui`, a live graph/dashboard applet | Not present |
|
||||||
| Output formats | table, csv, tsv, jsonl, with selectable columns | Text summary, JSON (optionally gzip to file), and a fixed-field raw mode; no CSV/TSV and no column selection |
|
| Output formats | table, csv, tsv, jsonl, with selectable columns | Text summary, JSON (optionally gzip to file), and a fixed-field raw mode; no CSV/TSV and no column selection |
|
||||||
@@ -115,9 +115,16 @@ irtt-client --no-test netperf-eu.bufferbloat.net:2112
|
|||||||
Probe continuously until interrupted (`Ctrl-C`):
|
Probe continuously until interrupted (`Ctrl-C`):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
irtt-client netperf-eu.bufferbloat.net:2112 --duration 0
|
irtt-client netperf-eu.bufferbloat.net:2112 --continuous
|
||||||
|
|
||||||
|
# Recover failed, closed, or silent sessions independently per target
|
||||||
|
irtt-client netperf-eu.bufferbloat.net:2112 --continuous --reconnect \
|
||||||
|
--reconnect-timeout 10s --reconnect-initial-delay 250ms --reconnect-max-delay 10s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reconnection resets statistics for that target; summaries cover its latest
|
||||||
|
session. Add `--no-stats` for measurement events without statistics collection.
|
||||||
|
|
||||||
Watch the same session live in the terminal UI:
|
Watch the same session live in the terminal UI:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "irtt-rs"
|
name = "irtt-rs"
|
||||||
version = "0.9.0"
|
version = "0.10.0"
|
||||||
description = "IRTT-compatible client, TUI, and server applications"
|
description = "IRTT-compatible client, TUI, and server applications"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "irtt-client"
|
name = "irtt-client"
|
||||||
version = "0.6.0"
|
version = "0.7.0"
|
||||||
description = "IRTT-compatible Rust client library"
|
description = "IRTT-compatible Rust client library"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|||||||
@@ -35,6 +35,21 @@ Use `ClientEvent::from(receipt)` for an `EchoSent` event with `scheduled_at` and
|
|||||||
`timer_error` absent; the managed driver supplies those schedule measurements
|
`timer_error` absent; the managed driver supplies those schedule measurements
|
||||||
and publishes committed sends even when post-send processing fails.
|
and publishes committed sends even when post-send processing fails.
|
||||||
|
|
||||||
|
Managed continuous measurement runs can opt into automatic recovery with
|
||||||
|
`ManagedClientConfig.reconnect_timeout: Some(timeout)`. Initial connection
|
||||||
|
failures, closed/failed sessions, server-limited completion, and reply silence
|
||||||
|
while sending trigger independent per-target retries. `reconnect_initial_delay`
|
||||||
|
(default 250 ms) doubles to `reconnect_max_delay` (default 10 s); a valid reply
|
||||||
|
resets the delay. Both delays must be positive and schedulable, with the maximum
|
||||||
|
at least twice the initial delay. Explicit stop and target removal cancel retries.
|
||||||
|
Recovery is disabled by default and is invalid for finite or negotiation-only runs.
|
||||||
|
|
||||||
|
In 0.7, complete `ManagedClientConfig` literals must include the three recovery
|
||||||
|
fields (or use `..Default::default()`), and exhaustive `ManagedConfigError`
|
||||||
|
matches must handle the new recovery-policy variants. A target can emit repeated
|
||||||
|
session-start events within one instance; reset session-bound state, including
|
||||||
|
statistics, for each reopened session. Use `irtt-stats` 0.6 with client 0.7 events.
|
||||||
|
|
||||||
Tokio stays optional: the default build has no runtime and no Tokio
|
Tokio stays optional: the default build has no runtime and no Tokio
|
||||||
dependency at all.
|
dependency at all.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "irtt-proto"
|
name = "irtt-proto"
|
||||||
version = "0.5.1"
|
version = "0.5.2"
|
||||||
description = "IRTT protocol encoding and decoding primitives"
|
description = "IRTT protocol encoding and decoding primitives"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "irtt-server"
|
name = "irtt-server"
|
||||||
version = "0.5.3"
|
version = "0.5.4"
|
||||||
description = "IRTT-compatible Rust server library"
|
description = "IRTT-compatible Rust server library"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "irtt-stats"
|
name = "irtt-stats"
|
||||||
version = "0.5.2"
|
version = "0.6.0"
|
||||||
description = "Statistics aggregation for irtt-client events"
|
description = "Statistics aggregation for irtt-client events"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|||||||
@@ -16,10 +16,16 @@ re-export. Event interpretation, IPDV pairing, loss, and snapshot reconstruction
|
|||||||
remain here.
|
remain here.
|
||||||
|
|
||||||
A `StatsCollector` has one sequence/IPDV namespace and one packet count, both
|
A `StatsCollector` has one sequence/IPDV namespace and one packet count, both
|
||||||
scoped to a single target. A managed session covering multiple targets needs
|
scoped to a single target session. A managed session covering multiple targets
|
||||||
one collector per target — as the `irtt-rs` CLI does — since a target's
|
needs one collector per target — as the `irtt-rs` CLI does — since a target's
|
||||||
sequence numbers start over at zero and feeding two targets into one
|
sequence numbers start over at zero and feeding two targets into one
|
||||||
collector would pair up unrelated probes.
|
collector would pair up unrelated probes. Reset or replace the collector when a
|
||||||
|
target reconnects, since the new session restarts its sequence numbers.
|
||||||
|
|
||||||
|
Version 0.6 consumes `irtt-client` 0.7 events. Applications using both crates
|
||||||
|
must upgrade them together to avoid incompatible `ClientEvent` types.
|
||||||
|
`IpdvPairUpdate` exposes signed nanosecond changes alongside the existing
|
||||||
|
absolute `Duration` values; aggregate IPDV statistics remain absolute magnitudes.
|
||||||
|
|
||||||
## Retention modes
|
## Retention modes
|
||||||
|
|
||||||
|
|||||||
+20
-10
@@ -115,7 +115,8 @@ A fixed local port may cause binding conflicts when multiple target sockets are
|
|||||||
|
|
||||||
## DYNAMIC TARGET SETS FROM STANDARD INPUT
|
## DYNAMIC TARGET SETS FROM STANDARD INPUT
|
||||||
|
|
||||||
`--targets-stdin` is available only with continuous mode (`--duration 0`).
|
`--targets-stdin` is available only with continuous mode (`--continuous` or
|
||||||
|
`--duration 0`).
|
||||||
Positional targets remain an initial desired set, and may be omitted to
|
Positional targets remain an initial desired set, and may be omitted to
|
||||||
start empty:
|
start empty:
|
||||||
|
|
||||||
@@ -208,12 +209,14 @@ Omitting the option preserves the library default schedule.
|
|||||||
`--duration` controls the run length:
|
`--duration` controls the run length:
|
||||||
|
|
||||||
- Any nonzero duration (default `10s`) is a **finite** run: probing stops
|
- Any nonzero duration (default `10s`) is a **finite** run: probing stops
|
||||||
after that long, and a final summary is always printed for table output
|
after that long, and a final summary is printed for table output when
|
||||||
(see [OUTPUT](#output) below — CSV, TSV, and JSON Lines never print one).
|
statistics are enabled (see [OUTPUT](#output) below — CSV, TSV, and
|
||||||
- `--duration 0` is **continuous**: the client runs until interrupted
|
JSON Lines never print one).
|
||||||
(`Ctrl-C`). For table output, a final summary is printed only if the run
|
- `--continuous` (or `--duration 0`) is **continuous**: the client runs until
|
||||||
was interrupted. Stdin-controlled mode is the exception: EOF also requests
|
interrupted (`Ctrl-C`). With statistics enabled and table output, a final
|
||||||
a graceful stop and prints the final retained summary. An uninterrupted
|
summary is printed only if the run was interrupted. Stdin-controlled mode
|
||||||
|
is the exception: EOF also requests a graceful stop and prints the final
|
||||||
|
retained summary. An uninterrupted
|
||||||
continuous run that exits for another reason does not get one.
|
continuous run that exits for another reason does not get one.
|
||||||
|
|
||||||
See [MEASUREMENTS AND MEMORY](#measurements-and-memory) below for why this
|
See [MEASUREMENTS AND MEMORY](#measurements-and-memory) below for why this
|
||||||
@@ -249,6 +252,8 @@ Example for continuous, multi-target CSV output without statistics:
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
irtt-client --continuous --reconnect --no-stats \
|
irtt-client --continuous --reconnect --no-stats \
|
||||||
|
--reconnect-timeout 10s \
|
||||||
|
--reconnect-initial-delay 250ms --reconnect-max-delay 10s \
|
||||||
--format csv --header never \
|
--format csv --header never \
|
||||||
--columns client_receive_wall_ns,target,seq,rd_us,sd_us \
|
--columns client_receive_wall_ns,target,seq,rd_us,sd_us \
|
||||||
reflector1 reflector2
|
reflector1 reflector2
|
||||||
@@ -344,6 +349,10 @@ processing time is derived from the same server receive endpoint.
|
|||||||
|
|
||||||
## MEASUREMENTS AND MEMORY
|
## MEASUREMENTS AND MEMORY
|
||||||
|
|
||||||
|
The statistics retention below applies only when the `stats` feature is compiled
|
||||||
|
in and `--no-stats` is absent. Disabling collection keeps the client
|
||||||
|
classification bounds but allocates no statistics collectors.
|
||||||
|
|
||||||
Finite and continuous modes make a different tradeoff between exact
|
Finite and continuous modes make a different tradeoff between exact
|
||||||
statistics and bounded memory.
|
statistics and bounded memory.
|
||||||
|
|
||||||
@@ -394,9 +403,10 @@ the client exits nonzero — so a process supervisor can restart it; an
|
|||||||
interrupted run (`Ctrl-C`) never reports peer closure as an error, whichever
|
interrupted run (`Ctrl-C`) never reports peer closure as an error, whichever
|
||||||
mode it was in.
|
mode it was in.
|
||||||
|
|
||||||
With `--targets-stdin`, peer closure is target-local: other desired targets
|
With `--reconnect`, a desired target reopens automatically after peer closure.
|
||||||
and the stdin controller continue running. Including that target in a later
|
Without recovery, `--targets-stdin` makes peer closure target-local: other
|
||||||
complete set starts a fresh generation.
|
desired targets and the stdin controller continue running. Including that
|
||||||
|
target in a later complete set starts a fresh generation.
|
||||||
|
|
||||||
## EXIT STATUS
|
## EXIT STATUS
|
||||||
|
|
||||||
|
|||||||
Generated
+2
-2
@@ -132,7 +132,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-proto"
|
name = "irtt-proto"
|
||||||
version = "0.5.1"
|
version = "0.5.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hmac",
|
"hmac",
|
||||||
"md-5",
|
"md-5",
|
||||||
@@ -152,7 +152,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "irtt-server"
|
name = "irtt-server"
|
||||||
version = "0.5.3"
|
version = "0.5.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom",
|
"getrandom",
|
||||||
"irtt-proto",
|
"irtt-proto",
|
||||||
|
|||||||
Reference in new issue
Block a user