Use tmux for test runner — detachable SSH sessions
Tests now run inside a tmux session so you can disconnect and reconnect without interrupting multi-hour test runs. Changes: - create-vm.sh: cloud-init no longer auto-runs tests, just provisions packages and clones the repo. Installs a `darkforge-test` command in /usr/local/bin that wraps run-in-vm.sh in tmux. - run-in-vm.sh: detects when called as `darkforge-test` and re-execs inside a tmux session named "darkforge". --tmux flag for internal use. - README updated with tmux workflow (detach/reattach instructions). Workflow: ssh darkforge@<ip> darkforge-test --quick # starts in tmux Ctrl+B D # detach, go do other things tmux attach -t darkforge # come back later Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -40,33 +40,63 @@ Without the target hardware (9950X3D / RTX 5090), we can still test:
|
||||
### 1. Create the test VM (run on Proxmox host)
|
||||
|
||||
```bash
|
||||
# Copy scripts to Proxmox host
|
||||
scp tests/proxmox/create-vm.sh root@proxmox:/root/
|
||||
scp tests/proxmox/run-in-vm.sh root@proxmox:/root/
|
||||
|
||||
# Create the VM
|
||||
ssh root@proxmox bash /root/create-vm.sh
|
||||
# Copy the script to Proxmox and run it
|
||||
scp tests/proxmox/create-vm.sh root@your-proxmox:/root/
|
||||
ssh root@your-proxmox bash /root/create-vm.sh
|
||||
```
|
||||
|
||||
### 2. Run the tests (automated via cloud-init or manual SSH)
|
||||
This creates the VM and cloud-init installs all packages + clones the repo. Wait ~5 minutes for provisioning to complete.
|
||||
|
||||
### 2. SSH in and run tests
|
||||
|
||||
```bash
|
||||
# Option A: wait for cloud-init to finish (fully automated)
|
||||
# The VM runs tests automatically on first boot.
|
||||
# Get the VM IP from Proxmox
|
||||
ssh root@your-proxmox "qm guest cmd 900 network-get-interfaces" | grep ip-address
|
||||
|
||||
# Option B: SSH in and run manually
|
||||
ssh darkforge@<vm-ip> bash /home/darkforge/run-in-vm.sh
|
||||
# SSH into the VM
|
||||
ssh darkforge@<VM_IP> # password: darkforge
|
||||
```
|
||||
|
||||
Then start the tests. They run inside a **tmux session** so you can disconnect and reconnect without interrupting them:
|
||||
|
||||
```bash
|
||||
# Full test suite (~2-6 hours) — runs in tmux, safe to disconnect
|
||||
darkforge-test
|
||||
|
||||
# Fast mode (~30 min) — skips toolchain/kernel/ISO builds
|
||||
darkforge-test --quick
|
||||
|
||||
# Medium mode (~1 hour) — skips only toolchain bootstrap
|
||||
darkforge-test --no-build
|
||||
```
|
||||
|
||||
**tmux controls:**
|
||||
- `Ctrl+B` then `D` — detach (tests keep running in background)
|
||||
- `tmux attach -t darkforge` — reattach to see progress
|
||||
- `tmux ls` — list running sessions
|
||||
|
||||
### 3. Collect the report
|
||||
|
||||
Once tests finish (check with `tmux attach -t darkforge`):
|
||||
|
||||
```bash
|
||||
scp darkforge@<vm-ip>:/home/darkforge/darkforge/tests/report.json ./
|
||||
scp darkforge@<vm-ip>:/home/darkforge/darkforge/tests/report.txt ./
|
||||
# From your local machine
|
||||
scp darkforge@<VM_IP>:~/darkforge/tests/report.json ./
|
||||
scp darkforge@<VM_IP>:~/darkforge/tests/report.txt ./
|
||||
```
|
||||
|
||||
The `report.txt` is a human-readable summary. The `report.json` is machine-readable and can be given to the development process for automated debugging.
|
||||
|
||||
### 4. Re-run after code changes
|
||||
|
||||
```bash
|
||||
ssh darkforge@<VM_IP>
|
||||
cd ~/darkforge
|
||||
git pull --recurse-submodules
|
||||
darkforge-test --quick # re-run tests
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
- `create-vm.sh` — runs on the Proxmox host, creates and configures the VM
|
||||
- `run-in-vm.sh` — runs inside the VM, clones the project and runs all tests
|
||||
- `cloud-init-user.yaml` — cloud-init user-data for automated first-boot testing
|
||||
- `run-in-vm.sh` — runs inside the VM, executes all test suites, generates reports
|
||||
|
||||
Reference in New Issue
Block a user