Skip to content

Introduce conformance test CLI - #346

Open
henrybear327 wants to merge 2 commits into
sysprog21:mainfrom
henrybear327:conf/harness
Open

Introduce conformance test CLI#346
henrybear327 wants to merge 2 commits into
sysprog21:mainfrom
henrybear327:conf/harness

Conversation

@henrybear327

@henrybear327 henrybear327 commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Build extensible CLI to host gvisor and LTP (and potentially much more) conformance test suites


Summary by cubic

Introduces a conformance test harness that runs registered Linux suites (gvisor, LTP, and more) against elfuse and a QEMU reference, judging results against JSONC expectations. The scripts/conformance CLI has a fixed capability-first command set that suite registration cannot extend.

New Features

  • Adds scripts/conformance commands for listing suites, enumerating cases, running lanes, seeding expectations, and writing reports.
  • Adds elfuse and QEMU backends with process capture, timeouts, and signal classification.
  • Adds JSONC expectation files to declare passes, failures, skips, and quarantines.
  • Adds payload pinning to lock suite artifacts to content hashes.
  • Adds a CI workflow running PR-scoped and full scheduled conformance runs.

Other Changes

  • Updates the QEMU runner to write a state file, fail when guest /tmp setup fails, arm its cleanup per CLI command, and verify a recorded pid still belongs to the VM before stopping.
  • Wires the harness into make check via selftests and adds docs/conformance.md plus the command reference in docs/testing.md.

Written for commit 417be2a. Summary will update on new commits.

Review in cubic

@henrybear327
henrybear327 requested a review from jserv August 31, 2026 18:20
@henrybear327 henrybear327 self-assigned this Aug 31, 2026
cubic-dev-ai[bot]

This comment was marked as resolved.

@henrybear327
henrybear327 force-pushed the conf/harness branch 3 times, most recently from d07c9e3 to 9482ae7 Compare August 31, 2026 20:28
@henrybear327
henrybear327 marked this pull request as draft August 31, 2026 20:38
@henrybear327
henrybear327 marked this pull request as ready for review August 31, 2026 20:38
Comment thread .github/workflows/conformance.yml Outdated

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Introduce re-usable shell scripts as common library.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 48 files

Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.

Re-trigger cubic

Comment thread tests/conformance/backends/qemu.py
Comment thread mk/conformance.mk Outdated
Comment thread mk/conformance.mk Outdated
Comment thread tests/conformance/ids.py Outdated
Comment thread tests/conformance/backends/proc.py
Comment thread tests/conformance/providers/base.py
Comment thread tests/conformance/payload.py
Comment thread .github/workflows/conformance.yml Outdated
Comment thread tests/conformance/cli.py
Comment thread tests/conformance/backends/elfuse.py
@henrybear327

Copy link
Copy Markdown
Collaborator Author

Introduce re-usable shell scripts as common library.

Extracted the SSH part out.

@henrybear327
henrybear327 force-pushed the conf/harness branch 2 times, most recently from 51d5d32 to 1523520 Compare August 31, 2026 22:36
The parser owns one capability-first command tree used by Make and CI.
Suite registration cannot add commands.

qemu-runner.sh stores VM state across start and stop commands. A
command that starts a VM owns its cleanup trap, preserving the trap
installed by test-matrix.sh. Start rejects an unusable guest /tmp,
and stop verifies the recorded process still names its pidfile before
sending a signal.
docs/testing.md lists every public command and its defaults. The
conformance reference defines the result and extension contracts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants