ZFS-Integrationstests für die Test-VM #31

Closed
thorsten.spille wants to merge 0 commits from thorsten.spille/feature-25-integration-tests into main AGit

Erster Teil von #25: echte ZFS-Tests auf der Test-VM (runner-trixie, Debian 13, ZFS 2.3.9, zwei 8-GB-Platten).

Inhalt

  • tests/integration/run.sh + lib.sh: jeder Fall bekommt frische Pools zci-src/zci-dst auf den Testplatten, repliziert mit dem installierten Paket über root@localhost (bzw. source=local) und prüft das Ergebnis am Ziel; danach werden die Pools zerstört. Vor jedem Lauf: nur Platten per by-id aus /etc/zsync-ci.conf, keine fremden Pools, nur Präfix zci-.
  • remote.sh: vom Entwicklungsrechner Paket aus dem Arbeitsstand bauen (nfpm-Container), auf der VM installieren, testen
  • ci.sh: dasselbe für den Runner mit Label zfs (Workflow-Job folgt, sobald der Runner registriert ist)
  • tests/integration/README.md: wie die Test-VM eingerichtet ist

Fälle (10/10 bestanden)

replication (Dateisystem mit Kind, Volume, raw-verschlüsselt), engine_internal (remote-snapshot-manager über ssh), rotation, refquota (echtes „quota exceeded“ ohne Anhebung), rollback (diverged → target_rollback=1), broken_chain (Ursache Rotation, Checkmk CRIT), orphans (fehlend, quittiert), local_mode (Ziel im selben Pool, kein ssh), bandwidth_lock (echtes pv, zweiter Lauf übersprungen), checkmk

Befund

Die Tests haben #30 gefunden: Snapshots aus derselben Sekunde werden nach creation nicht eindeutig sortiert; zsync hält dann den neuesten der Gruppe für den ältesten. Bis zur Entscheidung legen die Tests Snapshots mit je einer Sekunde Abstand an.

Refs #25

🤖 Generated with Claude Code

Erster Teil von #25: echte ZFS-Tests auf der Test-VM (`runner-trixie`, Debian 13, ZFS 2.3.9, zwei 8-GB-Platten). ## Inhalt - `tests/integration/run.sh` + `lib.sh`: jeder Fall bekommt frische Pools `zci-src`/`zci-dst` auf den Testplatten, repliziert mit dem **installierten Paket** über `root@localhost` (bzw. `source=local`) und prüft das Ergebnis am Ziel; danach werden die Pools zerstört. Vor jedem Lauf: nur Platten per by-id aus `/etc/zsync-ci.conf`, keine fremden Pools, nur Präfix `zci-`. - `remote.sh`: vom Entwicklungsrechner Paket aus dem Arbeitsstand bauen (nfpm-Container), auf der VM installieren, testen - `ci.sh`: dasselbe für den Runner mit Label `zfs` (Workflow-Job folgt, sobald der Runner registriert ist) - `tests/integration/README.md`: wie die Test-VM eingerichtet ist ## Fälle (10/10 bestanden) replication (Dateisystem mit Kind, Volume, raw-verschlüsselt), engine_internal (remote-snapshot-manager über ssh), rotation, refquota (echtes „quota exceeded“ ohne Anhebung), rollback (diverged → target_rollback=1), broken_chain (Ursache Rotation, Checkmk CRIT), orphans (fehlend, quittiert), local_mode (Ziel im selben Pool, kein ssh), bandwidth_lock (echtes pv, zweiter Lauf übersprungen), checkmk ## Befund Die Tests haben #30 gefunden: Snapshots aus derselben Sekunde werden nach `creation` nicht eindeutig sortiert; zsync hält dann den neuesten der Gruppe für den ältesten. Bis zur Entscheidung legen die Tests Snapshots mit je einer Sekunde Abstand an. Refs #25 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add ZFS integration tests for a test VM
Some checks failed
/ build (pull_request) Successful in 25s
/ test (ubuntu-24.04) (pull_request) Failing after 26s
/ test (debian-13) (pull_request) Failing after 26s
/ test (ubuntu-26.04) (pull_request) Failing after 29s
/ test (debian-12) (pull_request) Failing after 38s
/ publish (pull_request) Has been skipped
/ package (pull_request) Failing after 0s
16c6ce1332
The stub tests check the calls, not ZFS itself. tests/integration runs real
replications on a test VM with two dedicated disks: every case gets fresh
pools zci-src/zci-dst, replicates with the installed package over
root@localhost (or source=local) and checks the result on the target.

Cases: replication (filesystem with child, volume, raw encrypted), engine
internal, rotation, refquota, rollback, broken chain, orphans, local mode,
bandwidth limit with lock, Checkmk check. All 10 pass on Debian 13 with
ZFS 2.3.9.

- run.sh / lib.sh: cases and helpers; only the disks from /etc/zsync-ci.conf
  and pools with prefix zci- are touched, checked before every run
- remote.sh: build the package from the working tree, install and test on the VM
- ci.sh: the same on the runner with label zfs (job follows once it is registered)
- README: how the test VM is set up

The tests found #30 (snapshots of the same second are sorted ambiguously by
creation); test snapshots get their own second until it is decided.

Refs #25

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Der Inhalt (16c6ce1) ist seit dem Merge Merge branch 'feature/25-integration-tests' in main. Die rote CI dieses PRs stammt vom damaligen Ausfall des alten aptly-Servers (apt.bashclub.org intern auf 192.168.221.247), der inzwischen behoben ist; seitdem laufen die Integrationstests bei jedem PR grün. Der PR blieb offen, weil das Schließen nach dem damaligen CI-Fehler nicht ausgeführt wurde. Schließe ihn.

Der Inhalt (16c6ce1) ist seit dem Merge `Merge branch 'feature/25-integration-tests'` in `main`. Die rote CI dieses PRs stammt vom damaligen Ausfall des alten aptly-Servers (apt.bashclub.org intern auf 192.168.221.247), der inzwischen behoben ist; seitdem laufen die Integrationstests bei jedem PR grün. Der PR blieb offen, weil das Schließen nach dem damaligen CI-Fehler nicht ausgeführt wurde. Schließe ihn.
thorsten.spille closed this pull request 2026-10-15 23:27:10 +02:00
Some checks failed
/ build (pull_request) Successful in 25s
/ test (ubuntu-24.04) (pull_request) Failing after 26s
/ test (debian-13) (pull_request) Failing after 26s
/ test (ubuntu-26.04) (pull_request) Failing after 29s
/ test (debian-12) (pull_request) Failing after 38s
/ publish (pull_request) Has been skipped
/ package (pull_request) Failing after 0s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync!31
No description provided.