Skip to content

Add a reproducible QEMU guest test harness #635

Closed

Description

@jhuntwork

Part of #633. Harness work: #636, #637, and #638. Mere/dinit boot configuration and service lifecycle validation belong to #634; package-manager changes belong to jhuntwork/mere#63.

Keep developer VM tooling under test/qemu, using POSIX shell where practical and explicit inputs.

Completed and observed:

Implemented and locally verified in #639 (open; not merged): run Mere inside the guest

  • Include an explicit Mere binary plus its required runtime inputs in the guest and record their identities.
  • Enter a prepared profile through mere shell and verify a command actually runs inside its isolated environment.
  • Build a minimal local recipe through Mere's normal isolated build path; require a script marker and validate the resulting package artifact.
  • Check that an intentionally failing recipe returns failure rather than producing a false pass.
  • Preserve guest logs, command outcomes, and input records; make failure propagate to the host launcher.

Fresh setup and saved-input replay passed Mere profile entry, isolated recipe build, decompression/extraction and archive payload validation, expected failure (Mere exit 1 with recipe exit code 7), and dinit power-off. The guest has no network device and uses upstream signed metadata through a local file repository. Dynamic ELF rejection also passed. #639 contains the harness integration and documentation; these results are local guest validation, not a claim of merge or CI completion.

Observed inputs so far: QEMU 8.2.2 TCG; Ubuntu kernel 6.8.0-138-generic and static BusyBox 1.36.1 for namespace probes; Mere linux 6.18.42-2, BusyBox 1.37.0-10, and dinit 0.22.1-1 for disk boot. The guest test graph completed and requested kernel power-off through dinit.

Developer test tooling is separate from end-user image tools. A test-only initramfs does not establish a distro requirement. Saved-input replay depends on repository retention. Keep implementation, merge status, and guest validation distinct.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions