Skip to content

Add remote install failure harness with 20 SSH host profiles#10505

Draft
alokedesai wants to merge 1 commit intomasterfrom
oz/remote-host-harness
Draft

Add remote install failure harness with 20 SSH host profiles#10505
alokedesai wants to merge 1 commit intomasterfrom
oz/remote-host-harness

Conversation

@alokedesai
Copy link
Copy Markdown
Member

@alokedesai alokedesai commented May 8, 2026

Problem

The remote-server installer had many production failure families, but we did not have a repeatable way to construct hosts that exhibit those conditions. Without live repro profiles, fixes could only be validated with unit tests or by inspecting raw CSV examples, which is not enough to prove end-to-end behavior across SSH, shell startup, download tools, filesystems, and disconnects.

Solution

  • Add script/remote-install-harness/run_harness.sh, which creates local SSH test users, starts an OpenSSH server, serves fake download artifacts, and runs the install script over SSH.
  • Add per-profile host setup scripts for baseline success and failure families including missing curl/wget, no HTTP client, missing tar, unsupported architecture, DNS failure, connection refused, HTTP 403/502, partial download, permission failures, no space/quota, read-only filesystem, tar/write failures, startup-file permission noise, forced disconnect, missing Bash, TLS/CA failure, and download write failure.
  • Record per-profile logs under harness results and mark each as expected success, expected sentinel exit, or expected host failure.

Proof / validation

No screenshots are applicable because the proof is remote-host command output. The harness was run inside a privileged Ubuntu Docker container after integration:

  • Baseline: 00_baseline_normal: RESULT: EXPECTED_EXIT (exit 0).
  • Tool fallback profiles: 01_missing_curl and 02_missing_wget both exited 0.
  • Sentinel profiles: no HTTP client exited 3, missing tar exited 5, and DNS/connection/HTTP/partial/TLS/download-write profiles exited 4.
  • Host-condition profiles such as read-only filesystem, permission denied, and no-space/quota were reported as expected failures.
  • Forced disconnect reproduced SSH exit 255.

Co-Authored-By: Oz oz-agent@warp.dev

@cla-bot cla-bot Bot added the cla-signed label May 8, 2026
Builds a reusable test harness under script/remote-install-harness/ that
reproduces each CSV failure family for the remote-server install script.

The harness starts a local sshd on port 2222, creates per-profile user
accounts, and runs the install_remote_server.sh template (with substituted
placeholders pointing at a fake Python HTTP server) over SSH.

Profiles covered:
- 00: baseline normal install (succeeds)
- 01: missing curl (wget fallback)
- 02: missing wget (curl only)
- 03: no HTTP client (exit 3, SCP fallback trigger)
- 04: missing tar (exit 127)
- 05: unsupported arch via mocked uname (exit 2)
- 06: DNS failure (curl exit 6)
- 07: connection refused (curl exit 7)
- 08: HTTP 403 (curl exit 22)
- 09: HTTP 502 (curl exit 22)
- 10: partial/truncated download (curl exit 18)
- 11: read-only home directory (exit 1)
- 12: permission-denied install dir (exit 1)
- 13: no space / quota (curl exit 23)
- 14: read-only filesystem (exit 1)
- 15: tar ownership/permission failure (curl exit 23)
- 16: startup-file (.bashrc) permission denied (succeeds with stderr)
- 17: forced SSH disconnect (exit 255)
- 18: missing bash (exit 127)
- 19: TLS/CA verification failure (curl exit 77)
- 20: download write failure (curl exit 23)

Co-Authored-By: Oz <oz-agent@warp.dev>
@alokedesai alokedesai force-pushed the oz/remote-host-harness branch from 4da87c2 to a24ea38 Compare May 8, 2026 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant