<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-04-28T11:47:27+00:00</updated>
<entry>
<title>test_vdkr_registry: fix test_image_requires_subcommand</title>
<updated>2026-04-28T11:47:27+00:00</updated>
<author>
<name>Tim Orling</name>
<email>ticotimo@gmail.com</email>
</author>
<published>2026-04-28T00:33:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=052241689a0c419d13e15e83e7ad65dd16fc8ffd'/>
<id>urn:sha1:052241689a0c419d13e15e83e7ad65dd16fc8ffd</id>
<content type='text'>
vdkr.run() merges stderr into stdout (see conftest.py), so the
error message ends up in result.stdout even though the script
writes it to stderr (&gt;&amp;2).

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: fix FD inheritance in test harness for all vdkr/vpdmn commands</title>
<updated>2026-04-22T23:10:15+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-22T20:18:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=2e0704ee9282e4e86c13180334cb7ce118e55dd9'/>
<id>urn:sha1:2e0704ee9282e4e86c13180334cb7ce118e55dd9</id>
<content type='text'>
Change VdkrRunner.run() and VpdmnRunner.run() to use Popen with
start_new_session=True, stdin=DEVNULL, and file-based stdout instead
of subprocess.run(capture_output=True). This prevents daemon background
processes from inheriting pipe FDs, which causes communicate() to hang
in CI/test harness environments (e.g., buildbot).

The fix applies to all commands, not just memres start, because any
vdkr command can auto-start the daemon (auto-daemon is enabled by
default).

Also fix test_volume_mount_requires_memres to check both stdout and
stderr for the error message, since stderr is now merged into stdout
by the Popen approach.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: fix memres start hanging in subprocess.run</title>
<updated>2026-04-22T19:14:52+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-22T19:14:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=b02e400b63849991c1590a3572e711740758583f'/>
<id>urn:sha1:b02e400b63849991c1590a3572e711740758583f</id>
<content type='text'>
memres start spawns background processes (QEMU VM, idle watchdog)
that persist after the vrunner script exits. When invoked via
subprocess.run(capture_output=True), these background processes
inherit the pipe file descriptors, preventing communicate() from
returning until all pipe holders exit — which can be 30+ minutes
(the idle timeout).

Fix by using Popen with:
- stdin=subprocess.DEVNULL (no inherited stdin pipe)
- file-based stdout (no pipe FDs to inherit)
- start_new_session=True (new process group, so wait() only
  waits for the parent script, not the background children)

This matches the behavior when running from a shell, where the
daemon processes are fully detached from the caller's FD table.

Applied to both VdkrRunner and VpdmnRunner memres_start methods.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: add @pytest.mark.memres to daemon-dependent tests</title>
<updated>2026-04-22T19:07:21+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-22T19:07:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=5f512359af5d02c037f85887bf5a428af05d4fb3'/>
<id>urn:sha1:5f512359af5d02c037f85887bf5a428af05d4fb3</id>
<content type='text'>
Test classes that depend on vmemres (daemon mode) were not marked,
causing them to run even when filtered with '-m "not memres"'. This
caused timeout failures on CI/buildbot environments where KVM may
not be available and daemon startup exceeds the test timeout.

Mark the following classes with @pytest.mark.memres in both
test_vdkr.py and test_vpdmn.py:
- TestMemresBasic
- TestPortForwarding (vdkr only)
- TestContainerLifecycle
- TestVolumeMounts
- TestSystem
- TestVstorage
- TestRun
- TestAutoStartDaemon (vdkr only)
- TestDynamicPortForwarding (vdkr only)
- TestPortForwardRegistry (vdkr only)

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>incus: add runtime test suite</title>
<updated>2026-04-09T03:35:47+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-09T03:35:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=68f0c8faf2e2b9024ee24ef97df1895bb117629c'/>
<id>urn:sha1:68f0c8faf2e2b9024ee24ef97df1895bb117629c</id>
<content type='text'>
pexpect-based tests covering:
- Daemon startup via systemd
- incus-admin group creation
- incus admin init --minimal
- Alpine container launch, exec, stop, delete

Run: pytest tests/test_incus_runtime.py -v --machine qemux86-64

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: update k3s multi-node to use kernel cmdline role setup</title>
<updated>2026-04-07T17:32:59+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-07T17:32:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=31baaea4ab87aa2a42579b526b5c167796e60097'/>
<id>urn:sha1:31baaea4ab87aa2a42579b526b5c167796e60097</id>
<content type='text'>
Update the multi-node test fixture to use kernel cmdline parameters
(k3s.role, k3s.node-ip, k3s.node-name) instead of manual IP
configuration and k3s restart. The k3s-role-setup.service handles
networking and role switching automatically on boot.

- Pass kernel_append to K3sRunner for k3s.role and k3s.node-ip
- Remove manual ip-addr-add and k3s stop/restart from fixture
- Use k3s-get-token helper to extract join token on server
- Agent starts k3s agent manually with extracted token (token
  not known at boot time)
- Remove _QEMU_ARCH_CONFIG dict (moved to run-qemu-vm.sh script)

All 10 tests pass: 5 single-node + 5 multi-node.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests, k3s: update test suite and README for multi-node</title>
<updated>2026-04-07T16:06:01+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-07T16:06:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=6b4415876f617b5afe17d1525a555a120df78bc0'/>
<id>urn:sha1:6b4415876f617b5afe17d1525a555a120df78bc0</id>
<content type='text'>
test_k3s_runtime.py:
- Use run-qemu-vm.sh script for multi-node QEMU launches instead of
  inline command building (shared infrastructure with manual testing)
- Resolve script path to absolute for pexpect compatibility
- Accept &gt;= 1 Ready node in single-node test (persistent rootfs state)

README.md:
- Complete rewrite with current build profile workflow
- Document single-node quick start and multi-node cluster setup
- Document kernel cmdline parameters for role-based boot
- Document k3s-get-token helper, packages, and useful commands
- Add automated testing instructions

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: fix k3s multi-node test suite</title>
<updated>2026-04-06T23:49:24+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-06T23:43:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=55f63c8a12f86c1a5d5fe1ccf0e9ddb719e7747e'/>
<id>urn:sha1:55f63c8a12f86c1a5d5fe1ccf0e9ddb719e7747e</id>
<content type='text'>
Fix several issues discovered during multi-node testing:

- Find native QEMU binary from build sysroots-components instead of
  relying on PATH (qemu-system-native is not in OE build env PATH)
- Set LD_LIBRARY_PATH for native QEMU shared library dependencies
  (libSDL2, etc. from native sysroots)
- Add if=virtio to drive parameter so root device appears as /dev/vda
- Add CNI bin dirs to PATH when starting k3s manually (systemd service
  has the PATH fix but manual launch does not)
- Wipe server TLS/cred/db state and kubeconfig before restarting with
  cluster IPs to avoid stale certificate errors (cert only valid for
  DHCP IP, not 192.168.50.1)
- Add --tls-san for cluster IP to server start
- Wipe agent k3s state to avoid "not authorized" from stale tokens
- Remove server-only config.yaml on agent (disable-cloud-controller
  flag crashes the agent)
- Set unique --node-name on agent to prevent hostname collision when
  both VMs boot from the same image

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>tests: add k3s runtime test suite</title>
<updated>2026-04-06T23:49:24+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-06T15:49:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=ac89a0c46589c79c6ff583a11e0284e54af6a2cb'/>
<id>urn:sha1:ac89a0c46589c79c6ff583a11e0284e54af6a2cb</id>
<content type='text'>
Add test_k3s_runtime.py with 10 tests for k3s single-node and
multi-node verification:

Single-node (5 tests):
- Boot, verify k3s binary and service unit
- Start k3s server, wait for node Ready
- Verify 1 node in Ready state
- Deploy a busybox pod, verify Running
- Delete pod, verify cleanup

Multi-node (5 tests):
- Boot 2 VMs via QEMU socket networking
- Verify inter-VM ping on socket network
- Start k3s server on VM1, join agent on VM2
- Verify 2 nodes Ready
- Deploy 2-replica deployment, verify scheduling

Uses architecture-aware QEMU configuration (x86-64 and arm64
supported). Multi-node tests launch QEMU directly (not runqemu)
to support two concurrent VMs. kubectl commands use KUBECONFIG
instead of embedded 'k3s kubectl' which is not available in the
Yocto build.

Signed-off-by: Bruce Ashfield &lt;bruce.ashfield@gmail.com&gt;
</content>
</entry>
<entry>
<title>vruntime, vrunner, conftest: fix multiconfig and batch import issues</title>
<updated>2026-04-06T23:48:37+00:00</updated>
<author>
<name>Bruce Ashfield</name>
<email>bruce.ashfield@gmail.com</email>
</author>
<published>2026-04-05T02:10:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.enea.com/cgit/linux/meta-virtualization.git/commit/?id=4b0789cbb615c29ad7a0d072ab88b5fa81099605'/>
<id>urn:sha1:4b0789cbb615c29ad7a0d072ab88b5fa81099605</id>
<content type='text'>
vruntime.conf:
- Reset all VIRTUAL-RUNTIME_container_* variables to prevent
  CONTAINER_PROFILE selections from leaking into vruntime multiconfigs
  (e.g., podman profile pulling netavark into vruntime builds)
- Disable ptest for glib-2.0 — its -ptest RDEPENDS chain
  (python3-dbusmock -&gt; python3-pygobject -&gt; cairo -&gt; fontconfig)
  pulls the entire graphics stack which is masked in vruntime
- OE-core commit 159148f4de2 replaced DISTRO_FEATURES_BACKFILL_CONSIDERED
  with DISTRO_FEATURES_OPTED_OUT. The old variable no longer has any
  effect, which meant ptest, gobject-introspection-data, wayland, and
  other features were no longer being blocked in vruntime builds. This
  caused glib-2.0's ptest RDEPENDS to pull in the cairo → fontconfig →
  freetype graphics stack, which is masked by the vruntime BBMASK.
- Set PREFERRED_PROVIDER_virtual/runc with strong assignment to
  ensure the unified runc recipe is used

vrunner.sh:
- Fix batch import exit code handling: wrap import chain in subshell
  and make the images listing best-effort. The previous '&amp;&amp; podman
  images' caused false failures when podman images couldn't initialize
  its network backend. Using 'exit' was also wrong as the command runs
  inside PID 1 init's eval — exit kills init causing kernel panic.

vpdmn-rootfs-image.bb:
- Switch from netavark to CNI networking — netavark's dependency chain
  (nmap -&gt; libpcap -&gt; bluez5 -&gt; python3-pygobject -&gt; cairo) cannot be
  built under the vruntime BBMASK environment
- Add nsswitch.conf override (files-only backend) to prevent
  libnss_systemd segfaults — the vruntime VM uses busybox init with
  no systemd running, but libnss_systemd.so is pulled in as a
  dependency and segfaults on NSS resolution

vdkr-rootfs-image.bb:
- Document skopeo requirement for batch import

conftest.py:
- Add --k3s-timeout option and k3s/multinode markers for upcoming
  K3s test suite

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