<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/meta-virtualization.git/tests, branch master-next</title>
<subtitle>Mirror of git.yoctoproject.org/meta-virtualization</subtitle>
<id>https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=master-next</id>
<link rel='self' href='https://git.enea.com/cgit/linux/meta-virtualization.git/atom?h=master-next'/>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/'/>
<updated>2026-06-14T03:57:14+00:00</updated>
<entry>
<title>tests: add lxc runtime tests with download-template regression</title>
<updated>2026-06-14T03:57:14+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-14T03:57:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=3d242c4c38a2b7d056b3c4e2af1c43b0d02d02ec'/>
<id>urn:sha1:3d242c4c38a2b7d056b3c4e2af1c43b0d02d02ec</id>
<content type='text'>
The "lxc was tested" claim during the recent runtime testing sweep was
actually transitive — incus runs against LXC libraries under the hood,
so incus passing was treated as evidence that LXC itself worked. That
inference was wrong: incus uses its own go bindings into liblxc rather
than the lxc-* command-line tools, and the breakage Ferry Toth reported
on 2026-06-13 sat entirely in templates/lxc-download.in (a script
invoked by lxc-create, never reached through incus). The bug would not
have been caught by any existing test in the layer.

Add tests/test_lxc_runtime.py to close the gap. The suite boots
container-image-host with CONTAINER_IMAGE_HOST_EXTRA_INSTALL=lxc, then
runs three groups of checks against the live guest:

  TestLxcInstalled — sanity that lxc-create, lxc-start and lxc --version
    work at all. Catches packaging and PATH-level regressions.

  TestLxcDownloadTemplate — explicit regression for the
    templates-actually-create-DOWNLOAD_TEMP-directory.patch failure
    mode. Runs `lxc-create --template download` and asserts the broken
    early-mktemp error string ("mktemp: failed to create file via
    template '-d…") does not appear in the output. We deliberately do
    not require the download itself to succeed — the bug fires before
    any HTTP request, so the test stays meaningful on air-gapped CI
    where the actual fetch would fail for unrelated reasons.

  TestLxcContainerLifecycle (@pytest.mark.network) — full end-to-end:
    create from images.linuxcontainers.org, start, attach, stop,
    destroy. Marked @network so offline runners deselect it cleanly.
    The regression test above is the primary guard; this is depth.

Also register the lxc marker in pytest.ini so collection doesn't warn.

The test conventions (pexpect-driven runqemu boot, marker-delimited
command runner, TERM=dumb to suppress shell integration escape
sequences) match test_incus_runtime.py and test_xen_runtime.py so the
three suites read consistently.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: add requirements.txt</title>
<updated>2026-06-12T18:48:59+00:00</updated>
<author>
<name>Tim Orling</name>
<email>tim.orling@konsulko.com</email>
</author>
<published>2026-06-04T00:19:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=d623a2e2593cb6ef8b637b754a4ecf0a6ff8cf4d'/>
<id>urn:sha1:d623a2e2593cb6ef8b637b754a4ecf0a6ff8cf4d</id>
<content type='text'>
Add requirements.txt to allow versions to be pinned.

Signed-off-by: Tim Orling &lt;tim.orling@konsulko.com&gt;
Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: add containerd and CRI-O recipe and runtime tests</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-05T20:54:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=a28f3d77c4abee80a38ee89d619c2fabc5279bd0'/>
<id>urn:sha1:a28f3d77c4abee80a38ee89d619c2fabc5279bd0</id>
<content type='text'>
35 tests across three tiers:

Tier 1 (static): containerd recipe checks (virtual/containerd provider,
systemd service, CNI networking, ctr/shim install), profile config,
packagegroup, nerdctl and cri-tools recipe existence, CRI-O recipe
checks (seccomp requirement, systemd service, CNI/conmon/runtime deps).

Tier 2 (build): containerd, nerdctl, and container-image-host with
containerd profile build verification.

Tier 3 (boot): containerd service status, ctr/nerdctl availability
and version, namespace listing, runtime availability, CNI plugins,
nerdctl pull/run/images cycle with busybox.

The boot tests build container-image-host with CONTAINER_PROFILE=containerd
automatically. CRI-O boot tests are not included — CRI-O requires a
kubelet to drive it, so runtime testing is covered by k3s tests when
k3s is configured to use CRI-O as its CRI.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: add libvirt recipe and runtime tests</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-05T20:51:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=7d6e51b7706e305fa393bbc741c869c3d56f5abe'/>
<id>urn:sha1:7d6e51b7706e305fa393bbc741c869c3d56f5abe</id>
<content type='text'>
46 tests across three tiers:

Tier 1 (static, no build): Recipe structure, PACKAGECONFIG options,
hook_support.py python3 compatibility (text mode, raw string regex,
syntax validation), service files, patch files, kvm-image-minimal
recipe checks.

Tier 2 (build): libvirt and kvm-image-minimal build verification.

Tier 3 (boot): libvirtd service status, virtlockd socket, virsh
connectivity via monolithic daemon socket, capabilities, nodeinfo,
domain listing, default network, hook script installation and
permissions, qemu user and libvirt group existence.

The boot tests use the explicit monolithic daemon socket path
(qemu+unix:///system?socket=/var/run/libvirt/libvirt-sock) because
libvirt v12 defaults to modular daemons (virtqemud) but the
kvm-image-minimal recipe runs the monolithic libvirtd.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: remove redundant DISTRO_FEATURES appends from build fixtures</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-05T17:46:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=2964385cc6a2b015e4bf9710e998e3bfab3274d9'/>
<id>urn:sha1:2964385cc6a2b015e4bf9710e998e3bfab3274d9</id>
<content type='text'>
The -R conf files used by test build fixtures appended DISTRO_FEATURES
values that are already provided by meta-virt-host.conf (virtualization,
vcontainer, systemd). BitBake tracks append operations in task hashes,
so a duplicate append changes the hash and invalidates sstate for every
recipe that depends on DISTRO_FEATURES — causing full rebuilds even
when the image was just built.

Only append features genuinely needed by the test profile and not
already present in the base config:
- k3s: append only "k3s" (virtualization already in base)
- xen: append only "xen vxn" (virtualization systemd vcontainer in base)
- incus: no append needed (CONTAINER_PROFILE alone is sufficient)

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>k3s: fix pause image reference for containerd v2</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-05T03:56:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=092f66d511ac303a73fb0853314d792dde69cd28'/>
<id>urn:sha1:092f66d511ac303a73fb0853314d792dde69cd28</id>
<content type='text'>
K3s's default pause image reference "rancher/mirrored-pause:3.6" is a
short name that containerd v1 auto-expanded to the fully qualified
"docker.io/rancher/mirrored-pause:3.6". The k3s v1.36 uprev moved to
containerd v2, which uses a new CRI plugin (io.containerd.cri.v1) with
a pinned_images config instead of the old sandbox_image. Containerd v2
no longer auto-expands short names when looking up pinned images,
causing every pod sandbox creation to fail with "image not found" even
though the image is present in the containerd image store under its
fully qualified name.

Pass --pause-image docker.io/rancher/mirrored-pause:3.6 in both the
server and agent systemd service files to use the fully qualified
reference that containerd v2 can resolve.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: make k3s, incus, and xen tests self-contained</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-05T01:01:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=93440a018d098f34f0c8f6c1a4ad8c66a914c225'/>
<id>urn:sha1:93440a018d098f34f0c8f6c1a4ad8c66a914c225</id>
<content type='text'>
These boot tests previously required manual local.conf changes to set
CONTAINER_PROFILE, DISTRO_FEATURES, and other variables before the
image could be built and tested. This meant complete test coverage
required editing local.conf between runs.

Add build fixtures that use bitbake -R with a temporary conf file to
inject the required variables automatically:
- k3s: builds container-image-host with CONTAINER_PROFILE=k3s-host
- incus: builds container-image-host with CONTAINER_PROFILE=incus
- xen: builds xen-image-minimal with xen/vxn DISTRO_FEATURES

Each test module now builds its own image before booting, using the
same run_bitbake + extra_vars pattern established in
test_container_cross_install.py.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: fix image ID parsing and 9p assertion patterns</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-04T22:10:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=5e958db73270a60c6ac04b19aec8f66b6ba474e2'/>
<id>urn:sha1:5e958db73270a60c6ac04b19aec8f66b6ba474e2</id>
<content type='text'>
test_vdkr_registry.py: Docker's images output changed from separate
REPOSITORY TAG IMAGE_ID columns to combined IMAGE ID DISK_USAGE
columns. The parser grabbed the disk usage (8.45MB) as the image ID.
Handle both old and new formats.

test_container_registry_script.py: The secure registry tests checked
for literal 'virtfs' and 'cashare' strings in vrunner.sh, but the
9p share setup was refactored to use hv_build_9p_opts(). Update
assertions to match the current abstraction.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: parametrize boot tests over container profiles for full coverage</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-04T22:03:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=dfb2c9a331e841faf3cae040439519ecf85a84a1'/>
<id>urn:sha1:dfb2c9a331e841faf3cae040439519ecf85a84a1</id>
<content type='text'>
The boot tests (TestBundledContainersBoot, TestCustomServiceFileBoot)
previously depended on whatever CONTAINER_PROFILE was in local.conf,
skipping docker checks when podman was configured and vice versa.
Getting complete coverage required manually editing local.conf and
running the tests twice.

Add --container-profiles pytest option (default: docker,podman) and
a profiled_session fixture that builds container-image-host with each
profile via a temporary bitbake -R conf file, boots it, and runs all
checks. Both docker and podman get a full build-boot-verify cycle in
a single test run with no local.conf changes.

Also fix:
- run_bitbake() gains extra_vars parameter for bitbake -R overrides
- Strip OSC 3008 shell integration escape sequences from run_command
  output (BusyBox shell emits these, corrupting file paths used in
  subsequent commands)
- Use known file paths for service file content checks instead of
  extracting paths from ls output (avoids escape sequence corruption)
- Add test_bundle_class_unpack_enabled to catch do_unpack[noexec]
  regression

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: fix container-cross-install bitbake invocation and busybox compat</title>
<updated>2026-06-12T02:58:55+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-06-04T20:04:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=b957866a8112fe14a37579e4e9188ce210ef3fc7'/>
<id>urn:sha1:b957866a8112fe14a37579e4e9188ce210ef3fc7</id>
<content type='text'>
Three issues in test_container_cross_install.py:

- run_bitbake() called bitbake directly, requiring the OE build
  environment to be pre-sourced. test_multilayer_oci.py wraps bitbake
  in 'bash -c source oe-init-build-env &amp;&amp; bitbake' which is self-
  contained. Adopt the same pattern so tests work from any shell.

- test_vdkr_initramfs_create and test_vpdmn_initramfs_create built
  the initramfs recipes in the main config, but these recipes require
  the vruntime multiconfig distro. Use mc:vruntime-x86-64: prefix.

- test_systemd_services_directory_exists used 'head -5' which BusyBox
  does not support (requires 'head -n 5'). The container-image-host
  image uses BusyBox when built without coreutils.

Also fix conftest.py VdkrRunner and VpdmnRunner ensure_memres() to
default no_registry=True, so pulled images use short names
(alpine:latest) rather than registry-prefixed names from the baked-in
VDKR_DEFAULT_REGISTRY config.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
</feed>
