Align remote fallback test with availability diagnostic#1801
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| use super::common::*; | ||
| use super::*; | ||
| use rsync_core::fallback::describe_missing_fallback_binary; |
There was a problem hiding this comment.
Remove unused fallback helper import
The new use rsync_core::fallback::describe_missing_fallback_binary; is never referenced in this file, so cargo clippy --workspace --all-targets -- -Dwarnings will emit an unused_imports error and fail the lint job. Either drop the import or update the assertion to call describe_missing_fallback_binary so the helper is actually exercised.
Useful? React with 👍 / 👎.
…e) (#1795) (#4266) Introduce a structured connection primitive that wraps the existing `SshCommand` builder behind explicit `SshConnectConfig` and `KeepAliveConfig` structs. This is the first concrete step in the SSH transport chain (#1795 -> #1796 -> #1797 -> #1805 -> #1806) and lets upstream call sites compose connect, auth, and session-setup steps from a single config value instead of a long sequence of builder setters. The new `SshConnection::connect_with_config(remote, &config)` entry point stays synchronous and reuses the existing watchdog + stderr-drain plumbing. Defaults mirror the historical `SshCommand::new` behaviour (30 s connect timeout, 20 s keepalive interval, 3 allowed failures); a `None` field disables the corresponding `-o ConnectTimeout` or `-o ServerAlive*` injection. The async variant is reserved for task #1801 and intentionally not introduced here, so no new runtime dependencies land in this PR. Unit coverage exercises the config defaults, the builder-setter round trip, the rendered argv (timeout, keepalive, remote command ordering), keepalive disabled / custom-value cases, sub-second rounding, and user/host splitting. A unix-gated, env-guarded smoke test (`OC_RSYNC_SSH_NET=1`) confirms an unreachable host surfaces an io::Error within ~2x the configured timeout.
…e) (#1795) (#4266) Introduce a structured connection primitive that wraps the existing `SshCommand` builder behind explicit `SshConnectConfig` and `KeepAliveConfig` structs. This is the first concrete step in the SSH transport chain (#1795 -> #1796 -> #1797 -> #1805 -> #1806) and lets upstream call sites compose connect, auth, and session-setup steps from a single config value instead of a long sequence of builder setters. The new `SshConnection::connect_with_config(remote, &config)` entry point stays synchronous and reuses the existing watchdog + stderr-drain plumbing. Defaults mirror the historical `SshCommand::new` behaviour (30 s connect timeout, 20 s keepalive interval, 3 allowed failures); a `None` field disables the corresponding `-o ConnectTimeout` or `-o ServerAlive*` injection. The async variant is reserved for task #1801 and intentionally not introduced here, so no new runtime dependencies land in this PR. Unit coverage exercises the config defaults, the builder-setter round trip, the rendered argv (timeout, keepalive, remote command ordering), keepalive disabled / custom-value cases, sub-second rounding, and user/host splitting. A unix-gated, env-guarded smoke test (`OC_RSYNC_SSH_NET=1`) confirms an unreachable host surfaces an io::Error within ~2x the configured timeout.
…e) (#1795) (#4266) Introduce a structured connection primitive that wraps the existing `SshCommand` builder behind explicit `SshConnectConfig` and `KeepAliveConfig` structs. This is the first concrete step in the SSH transport chain (#1795 -> #1796 -> #1797 -> #1805 -> #1806) and lets upstream call sites compose connect, auth, and session-setup steps from a single config value instead of a long sequence of builder setters. The new `SshConnection::connect_with_config(remote, &config)` entry point stays synchronous and reuses the existing watchdog + stderr-drain plumbing. Defaults mirror the historical `SshCommand::new` behaviour (30 s connect timeout, 20 s keepalive interval, 3 allowed failures); a `None` field disables the corresponding `-o ConnectTimeout` or `-o ServerAlive*` injection. The async variant is reserved for task #1801 and intentionally not introduced here, so no new runtime dependencies land in this PR. Unit coverage exercises the config defaults, the builder-setter round trip, the rendered argv (timeout, keepalive, remote command ordering), keepalive disabled / custom-value cases, sub-second rounding, and user/host splitting. A unix-gated, env-guarded smoke test (`OC_RSYNC_SSH_NET=1`) confirms an unreachable host surfaces an io::Error within ~2x the configured timeout.
Summary
Testing
https://chatgpt.com/codex/tasks/task_e_6905430b48248323b07fb6bfe3ed3f97