This set supersedes the previous "batch 3" which had some problems. This fixes a number of problems I've encountered trying to run the passt tests on a Fedora host. It also makes a number of small cleanups and improvements to the test running framework. David Gibson (14): Handle the case of a DNS server on localhost tests: qemu-system-ppc64le isn't a thing Invoke specific qemu-system-* binaries tests: Introduce makefile for building test assets tests: Move mbuto download and execution to asset build tests: Search multiple places for aarch64 EDK2 bios image Clean up passt.pid file tests: Remove unused set_mode() function tests: Remove not-very-useful "req" directive tests: Don't automatically traverse directories of test files tests: Explicitly list test files in test/run, remove "onlyfor" support tests: Move distro image download to asset build makefile tests: Prepare distro images during asset build phase tests: Remove unused DNS6 calculation from fedora tests Stefano Brivio (1): test: Add external mbuto profile, drop udhcpc, and switch to it .gitignore | 1 + Makefile | 3 +- conf.c | 16 +++ passt.1 | 6 +- test/.gitignore | 6 ++ test/Makefile | 177 +++++++++++++++++++++++++++++++ test/build/all | 22 +++- test/build/install | 34 ------ test/demo/passt | 5 +- test/demo/pasta | 1 - test/demo/podman | 2 - test/dhcp/passt | 1 - test/dhcp/pasta | 1 - test/distro/debian | 124 +++------------------- test/distro/fedora | 206 ++++-------------------------------- test/distro/opensuse | 24 ++--- test/distro/ubuntu | 39 ++----- test/find-arm64-firmware.sh | 13 +++ test/icmp/passt_in_ns | 1 - test/lib/setup | 50 ++++----- test/lib/test | 35 ++---- test/lib/util | 13 --- test/ndp/passt | 1 - test/ndp/pasta | 1 - test/passt.mbuto | 34 ++++++ test/perf/passt_tcp | 1 - test/perf/passt_udp | 1 - test/perf/pasta_tcp | 1 - test/perf/pasta_udp | 1 - test/prepare-distro-img.sh | 18 ++++ test/run | 58 +++++----- test/tcp/passt | 1 - test/tcp/passt_in_ns | 1 - test/tcp/pasta | 1 - test/udp/passt | 1 - test/udp/passt_in_ns | 1 - test/udp/pasta | 1 - test/valgrind/passt | 1 - test/valgrind/passt_in_ns | 1 - 39 files changed, 405 insertions(+), 499 deletions(-) create mode 100644 test/Makefile delete mode 100644 test/build/install create mode 100755 test/find-arm64-firmware.sh create mode 100755 test/passt.mbuto create mode 100755 test/prepare-distro-img.sh -- 2.36.1
From: Stefano Brivio <sbrivio(a)redhat.com> This depends on a future change in mbuto to accept external profile files. Add a file defining what we need for tests and demos, dropping udhcpc, plus udhcpc and dhclient scripts as they're not needed anymore, and switch to it. Suggested-by: David Gibson <david(a)gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio(a)redhat.com> Message-Id: <20220623124635.2408173-1-sbrivio(a)redhat.com> --- test/demo/passt | 2 +- test/lib/setup | 2 +- test/passt.mbuto | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 test/passt.mbuto diff --git a/test/demo/passt b/test/demo/passt index ee4e7c2..7c69e94 100644 --- a/test/demo/passt +++ b/test/demo/passt @@ -56,7 +56,7 @@ say Let's create a small initramfs image for the guest. guest cd __TEMPDIR__ guest git clone git://mbuto.sh/mbuto guest cd mbuto -guest ./mbuto -f passt.img -p passt -c lz4 +guest ./mbuto -f passt.img -p __TEMPDIR__/passt/test/passt.mbuto -c lz4 sleep 2 nl diff --git a/test/lib/setup b/test/lib/setup index e57d97c..afa5101 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -34,7 +34,7 @@ setup_passt() { pane_run GUEST "git -C ${__mbuto_dir} clone git://mbuto.sh/mbuto" pane_status GUEST - pane_run GUEST "${__mbuto_dir}/mbuto/mbuto -p passt -c lz4 -f mbuto.img" + pane_run GUEST "${__mbuto_dir}/mbuto/mbuto -p test/passt.mbuto -c lz4 -f mbuto.img" pane_status GUEST rm -rf "${__mbuto_dir}" diff --git a/test/passt.mbuto b/test/passt.mbuto new file mode 100755 index 0000000..5cafb30 --- /dev/null +++ b/test/passt.mbuto @@ -0,0 +1,34 @@ +#!/bin/sh +# +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# PASST - Plug A Simple Socket Transport +# for qemu/UNIX domain socket mode +# +# test/passt.mbuto - mbuto (https://mbuto.sh) profile for test images +# +# Copyright (c) 2022 Red Hat GmbH +# Author: Stefano Brivio <sbrivio(a)redhat.com> + +PROGS="${PROGS:-ash,dash,bash ip mount ls insmod mkdir ln cat chmod lsmod + modprobe find grep mknod mv rm umount jq iperf3 dhclient busybox logger + sed tr chown sipcalc cut md5sum nc dd strace ping tail killall sleep + sysctl nproc tcp_rr tcp_crr udp_rr which tee seq bc}" + +KMODS="${KMODS:- virtio_net virtio_pci}" + +LINKS="${LINKS:- + ash,dash,bash /init + ash,dash,bash /bin/sh + ash,dash,bash /usr/bin/bash}" + +DIRS="${DIRS} /tmp" + +FIXUP="${FIXUP} + :> /etc/fstab + sh +m +" + +OUTPUT="KERNEL=__KERNEL__ +INITRD=__INITRD__ +" -- 2.36.1
By default, passt detects the nameserver used by the host system by reading /etc/resolv.conf, and advertises that to the guest via DHCP. However this breaks down if the host's nameserver is local (on 127.0.0.1 or ::1); connecting to localhost on the guest won't reach the host's nameserver. Using a local nameserver is a reasonably common case when using dnsmasq or similar to merge name resolution on a home network with name resolution from an organization-private VPN. We already have the gateway mapping support to allow reaching host-local services from the guest via the address of the default gateway. Add code to detect the case of a local DNS server and use the gateway mapping to advertise it usefully to the guest. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- conf.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/conf.c b/conf.c index 22949fd..13cb5a1 100644 --- a/conf.c +++ b/conf.c @@ -350,6 +350,14 @@ static void get_dns(struct ctx *c) if (!dns4_set && dns4 - &c->dns4[0] < ARRAY_SIZE(c->dns4) - 1 && inet_pton(AF_INET, p + 1, dns4)) { + /* We can only access local addresses via the gw redirect */ + if (ntohl(*dns4) >> IN_CLASSA_NSHIFT == IN_LOOPBACKNET) { + if (c->no_map_gw) { + *dns4 = 0; + continue; + } + *dns4 = c->gw4; + } dns4++; *dns4 = 0; } @@ -357,6 +365,14 @@ static void get_dns(struct ctx *c) if (!dns6_set && dns6 - &c->dns6[0] < ARRAY_SIZE(c->dns6) - 1 && inet_pton(AF_INET6, p + 1, dns6)) { + /* We can only access local addresses via the gw redirect */ + if (IN6_IS_ADDR_LOOPBACK(dns6)) { + if (c->no_map_gw) { + memset(dns6, 0, sizeof(*dns6)); + continue; + } + memcpy(dns6, &c->gw6, sizeof(*dns6)); + } dns6++; memset(dns6, 0, sizeof(*dns6)); } -- 2.36.1
Several tests run pp64le guests using "qemu-system-ppc64le". But, at the system level there's no difference between ppc64 and ppc64le - it's the same hardware, just placed into different endian modes by OS early boot code. Reflecting that, qemu only supplies a single "qemu-system-ppc64". Some distros alias qemu-system-ppc64le to qemu-system-ppc64 (Debian does), but it's best not to count on this (Fedora doesn't, for example). Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/distro/debian | 8 ++++---- test/distro/ubuntu | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/distro/debian b/test/distro/debian index efbd057..0ed541a 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-aarch64 qemu-system-ppc64le +htools wget virt-edit guestfish head sed cat kill qemu-system-aarch64 qemu-system-ppc64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -168,7 +168,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-ppc64le -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update @@ -252,7 +252,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-ppc64le -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -318,7 +318,7 @@ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.serv host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-ppc64le -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd diff --git a/test/distro/ubuntu b/test/distro/ubuntu index 448409a..50ed727 100644 --- a/test/distro/ubuntu +++ b/test/distro/ubuntu @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-ppc64le qemu-system-s390x +htools wget virt-edit guestfish head sed cat kill qemu-system-ppc64 qemu-system-s390x # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -118,7 +118,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init.conf host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-log-shutdown.conf host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-ppc64le -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update -- 2.36.1
A lot of tests and examples invoke qemu with the command "kvm". However, as far as I can tell, "kvm" being aliased to the appropriate qemu system binary is Debian specific. The binary names from qemu upstream - qemu-system-$ARCH - also aren't universal, but they are more common (they should be good for both Debian and Fedora at least). In order to still get KVM acceleration when available, we use the option "-M accel=kvm:tcg" to tell qemu to try using either KVM or TCG in that order A number of the places we invoked "kvm" are expecting specifically an x86 guest, and so it's also safer to explicitly invoke qemu-system-x86_64. Some others appear to be independent of the target arch (just wanting the same arch as the host to allow KVM acceleration). Although I suspect there may be more subtle x86 specific options in the qemu command lines, attempt to preserve arch independence by using $(uname -m). Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- passt.1 | 6 +++--- test/demo/passt | 2 +- test/distro/debian | 12 ++++++------ test/distro/fedora | 22 +++++++++++----------- test/distro/opensuse | 10 +++++----- test/distro/ubuntu | 8 ++++---- test/lib/setup | 17 +++++++++++++---- 7 files changed, 43 insertions(+), 34 deletions(-) diff --git a/passt.1 b/passt.1 index 3dccc63..c7c43be 100644 --- a/passt.1 +++ b/passt.1 @@ -616,16 +616,16 @@ NDP/DHCPv6: UNIX domain socket bound at /tmp/passt_1.socket You can now start qrap: - ./qrap 5 kvm ... -net socket,fd=5 -net nic,model=virtio + ./qrap 5 qemu-system-x86_64 ... -net socket,fd=5 -net nic,model=virtio or directly qemu, patched with: qemu/0001-net-Allow-also-UNIX-domain-sockets-to-be-used-as-net.patch as follows: - kvm ... -net socket,connect=/tmp/passt_1.socket -net nic,model=virtio + qemu-system-x86_64 ... -net socket,connect=/tmp/passt_1.socket -net nic,model=virtio .fi .BR " [From another terminal]" .nf -$ ./qrap 5 kvm test.qcow2 -m 1024 -display none -nodefaults -nographic -net socket,fd=5 -net nic,model=virtio +$ ./qrap 5 qemu-system-x86_64 test.qcow2 -m 1024 -display none -nodefaults -nographic -net socket,fd=5 -net nic,model=virtio Connected to /tmp/passt_1.socket .fi diff --git a/test/demo/passt b/test/demo/passt index 7c69e94..b67ed26 100644 --- a/test/demo/passt +++ b/test/demo/passt @@ -103,7 +103,7 @@ nl say back-end to passt's UNIX domain socket. sleep 2 hout VMLINUZ echo "/boot/vmlinuz-$(uname -r)" -guest ../passt/qrap 5 kvm -m 4096 -cpu host -smp 4 -kernel __VMLINUZ__ -initrd passt.img -nographic -serial stdio -nodefaults -append "console=ttyS0 virtio-net.napi_tx=1" -device virtio-net-pci,netdev=hostnet0,x-txburst=16384 -netdev socket,fd=5,id=hostnet0 +guest ../passt/qrap 5 qemu-system-x86_64 -enable-kvm -m 4096 -cpu host -smp 4 -kernel __VMLINUZ__ -initrd passt.img -nographic -serial stdio -nodefaults -append "console=ttyS0 virtio-net.napi_tx=1" -device virtio-net-pci,netdev=hostnet0,x-txburst=16384 -netdev socket,fd=5,id=hostnet0 sleep 10 nl diff --git a/test/distro/debian b/test/distro/debian index 0ed541a..ce3b9e7 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-aarch64 qemu-system-ppc64 +htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -54,7 +54,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update @@ -81,7 +81,7 @@ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.serv host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update @@ -105,7 +105,7 @@ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.serv host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update @@ -193,7 +193,7 @@ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.serv host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -275,7 +275,7 @@ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.serv host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd diff --git a/test/distro/fedora b/test/distro/fedora index c82d973..2a8e3e9 100644 --- a/test/distro/fedora +++ b/test/distro/fedora @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill +htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -75,7 +75,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -105,7 +105,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -132,7 +132,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -187,7 +187,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -242,7 +242,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -297,7 +297,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -352,7 +352,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -407,7 +407,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -462,7 +462,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -517,7 +517,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat diff --git a/test/distro/opensuse b/test/distro/opensuse index 2b49a5b..18e1c81 100644 --- a/test/distro/opensuse +++ b/test/distro/opensuse @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill kvm qemu-system-aarch64 xzcat tr +htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 xzcat tr # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -51,7 +51,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/je host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' host ip link set eth0 up sleep 2 @@ -79,7 +79,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/je host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' host ip link set eth0 up sleep 2 @@ -104,7 +104,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/je host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio # Multiple prompt logins might come up here sleep 10 host PS1='$ ' @@ -186,7 +186,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/serial-getty@.servi host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' host ip link set ens2 up sleep 2 diff --git a/test/distro/ubuntu b/test/distro/ubuntu index 50ed727..20b861a 100644 --- a/test/distro/ubuntu +++ b/test/distro/ubuntu @@ -1,4 +1,4 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later +<# SPDX-License-Identifier: AGPL-3.0-or-later # # PASST - Plug A Simple Socket Transport # for qemu/UNIX domain socket mode @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-ppc64 qemu-system-s390x +htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-ppc64 qemu-system-s390x # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -55,7 +55,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init.conf host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-log-shutdown.conf host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update @@ -88,7 +88,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init.conf host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-log-shutdown.conf host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 kvm -M pc -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update diff --git a/test/lib/setup b/test/lib/setup index afa5101..97e603c 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -58,7 +58,9 @@ setup_passt() { pane_run PASST "valgrind --max-stackframe=$((4 * 1024 * 1024)) --trace-children=yes --vgdb=no --error-exitcode=1 --suppressions=test/valgrind.supp ./passt ${__opts} -f -t 10001 -u 10001 -P passt.pid" sleep 5 - pane_run GUEST './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \ + pane_run GUEST './qrap 5 qemu-system-$(uname -m)' \ + ' -machine accel=kvm' \ + ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ ' -initrd mbuto.img -nographic -serial stdio' \ ' -nodefaults' \ @@ -170,7 +172,10 @@ setup_passt_in_ns() { fi sleep 5 - pane_run GUEST './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \ + pane_run GUEST './qrap 5 qemu-system-$(uname -m)' \ + ' -machine accel=kvm' \ + ' -M accel=kvm:tcg' \ + ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ ' -initrd mbuto.img -nographic -serial stdio' \ ' -nodefaults' \ @@ -259,7 +264,9 @@ setup_two_guests() { pane_run GUEST_2 'cp mbuto.img mbuto_2.img' pane_status GUEST_2 - pane_run GUEST_1 './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \ + pane_run GUEST_1 './qrap 5 qemu-system-$(uname -m)' \ + ' -M accel=kvm:tcg' \ + ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ ' -initrd mbuto.img -nographic -serial stdio' \ ' -nodefaults' \ @@ -267,7 +274,9 @@ setup_two_guests() { 'virtio-net.napi_tx=1"' \ " -device virtio-net-pci,netdev=hostnet0,x-txburst=16384" \ " -netdev socket,fd=5,id=hostnet0" - pane_run GUEST_2 './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \ + pane_run GUEST_2 './qrap 5 qemu-system-$(uname -m)' \ + ' -M accel=kvm:tcg' \ + ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ ' -initrd mbuto_2.img -nographic -serial stdio' \ ' -nodefaults' \ -- 2.36.1
A number of passt/pasta testcases have initial steps which are just about building images or other assets we need for the test proper. Repeating these for each test run can be quite costly. This patch makes a start on moving this sort of test asset building to a separate phase before running the tests proper. For now just add a Makefile to handle the asset building (although it doesn't build anything yet), and make the path where we'll be building the assets available to the tests. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/Makefile | 27 +++++++++++++++++++++++++++ test/lib/test | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test/Makefile diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..02c60a3 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# Tests makefile +# +# Copyright Red Hat +# Author: David Gibson <david(a)gibson.dropbear.id.au> + +DOWNLOAD_ASSETS = +LOCAL_ASSETS = + +ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) + +assets: $(ASSETS) + +check: assets + ./run + +debug: assets + DEBUG=1 ./run + +clean: + rm -f perf.js *~ + rm -f $(LOCAL_ASSETS) + rm -rf test_logs + +realclean: clean + rm -rf $(DOWNLOAD_ASSETS) diff --git a/test/lib/test b/test/lib/test index 09e8340..96dab2b 100755 --- a/test/lib/test +++ b/test/lib/test @@ -393,7 +393,7 @@ test_one() { [ ${CI} -eq 1 ] && video_link "${1}" - TEST_ONE_subs= + TEST_ONE_subs="$(list_add_pair "" "__BASEPATH__" "${BASEPATH}")" TEST_ONE_nok=-1 TEST_ONE_perf_nok=0 TEST_ONE_skip=0 -- 2.36.1
Move the download of mbuto and using it to create a sample initramfs to the asset build makefile, rather than embedding it in the test scripts themselves. The two_guests tests used to use two separate copies of the mbuto image. As an initramfs the mbuto image is strictly readonly though, so that's not necessary. So, also use the same image for both guests. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/.gitignore | 2 ++ test/Makefile | 10 ++++++++-- test/lib/setup | 23 ++++++----------------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/test/.gitignore b/test/.gitignore index edb2221..895c3ae 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -1,2 +1,4 @@ perf.js test_logs/ +mbuto/ +*.img diff --git a/test/Makefile b/test/Makefile index 02c60a3..b72280d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -5,13 +5,19 @@ # Copyright Red Hat # Author: David Gibson <david(a)gibson.dropbear.id.au> -DOWNLOAD_ASSETS = -LOCAL_ASSETS = +DOWNLOAD_ASSETS = mbuto +LOCAL_ASSETS = mbuto.img ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) assets: $(ASSETS) +mbuto: + git clone git://mbuto.sh/mbuto + +mbuto.img: passt.mbuto mbuto + ./mbuto/mbuto -p ./$< -c lz4 -f $@ + check: assets ./run diff --git a/test/lib/setup b/test/lib/setup index 97e603c..604cfee 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -13,6 +13,7 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> +INITRAMFS="${BASEPATH}/mbuto.img" VCPUS="$( [ $(nproc) -ge 8 ] && echo 6 || echo $(( $(nproc) / 2 + 1 )) )" __mem_kib="$(sed -n 's/MemTotal:[ ]*\([0-9]*\) kB/\1/p' /proc/meminfo)" VMEM="$((${__mem_kib} / 1024 / 4))" @@ -24,21 +25,12 @@ setup_build() { layout_host } -# setup_passt() - Build guest initrd with mbuto, start qemu and passt +# setup_passt() - Start qemu and passt setup_passt() { MODE=passt layout_passt - __mbuto_dir="$(mktemp -d)" - pane_run GUEST "git -C ${__mbuto_dir} clone git://mbuto.sh/mbuto" - pane_status GUEST - - pane_run GUEST "${__mbuto_dir}/mbuto/mbuto -p test/passt.mbuto -c lz4 -f mbuto.img" - pane_status GUEST - - rm -rf "${__mbuto_dir}" - # Ports: # # guest | host @@ -62,7 +54,7 @@ setup_passt() { ' -machine accel=kvm' \ ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ - ' -initrd mbuto.img -nographic -serial stdio' \ + ' -initrd '${INITRAMFS}' -nographic -serial stdio' \ ' -nodefaults' \ ' -append "console=ttyS0 mitigations=off apparmor=0 ' \ 'virtio-net.napi_tx=1"' \ @@ -177,7 +169,7 @@ setup_passt_in_ns() { ' -M accel=kvm:tcg' \ ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ - ' -initrd mbuto.img -nographic -serial stdio' \ + ' -initrd '${INITRAMFS}' -nographic -serial stdio' \ ' -nodefaults' \ ' -append "console=ttyS0 mitigations=off apparmor=0 ' \ 'virtio-net.napi_tx=1"' \ @@ -261,14 +253,11 @@ setup_two_guests() { [ ${TRACE} -eq 1 ] && __opts="${__opts} --trace" pane_run PASST_2 "./passt -f ${__opts} -t 10004 -u 10004" - pane_run GUEST_2 'cp mbuto.img mbuto_2.img' - pane_status GUEST_2 - pane_run GUEST_1 './qrap 5 qemu-system-$(uname -m)' \ ' -M accel=kvm:tcg' \ ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ - ' -initrd mbuto.img -nographic -serial stdio' \ + ' -initrd '${INITRAMFS}' -nographic -serial stdio' \ ' -nodefaults' \ ' -append "console=ttyS0 mitigations=off apparmor=0 ' \ 'virtio-net.napi_tx=1"' \ @@ -278,7 +267,7 @@ setup_two_guests() { ' -M accel=kvm:tcg' \ ' -m '${VMEM}' -cpu host -smp '${VCPUS} \ ' -kernel ' "/boot/vmlinuz-$(uname -r)" \ - ' -initrd mbuto_2.img -nographic -serial stdio' \ + ' -initrd '${INITRAMFS}' -nographic -serial stdio' \ ' -nodefaults' \ ' -append "console=ttyS0 mitigations=off apparmor=0 ' \ 'virtio-net.napi_tx=1"' \ -- 2.36.1
Apparently qemu's ARM virt machine needs to be explicitly given a firmware image, rather than just supplying a sane default. Unfortunately the EDK2 firmware image we need isn't in the same place on all host distros. Currently the test scripts hardcode the Debian location, meaning it will break on hosts that have it somewhere else. This patch searches multiple locations for the firmware, and creates a local link during the asset build phase, which the tests can then use. For now it only searches the locations used by Debian and Fedora, but that's a small improvement in robustness already, and can be later improved further if we need to. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/.gitignore | 1 + test/Makefile | 5 ++++- test/distro/debian | 6 +++--- test/distro/fedora | 16 ++++++++-------- test/distro/opensuse | 2 +- test/find-arm64-firmware.sh | 13 +++++++++++++ 6 files changed, 30 insertions(+), 13 deletions(-) create mode 100755 test/find-arm64-firmware.sh diff --git a/test/.gitignore b/test/.gitignore index 895c3ae..360da92 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -2,3 +2,4 @@ perf.js test_logs/ mbuto/ *.img +QEMU_EFI.fd diff --git a/test/Makefile b/test/Makefile index b72280d..9990841 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,7 +6,7 @@ # Author: David Gibson <david(a)gibson.dropbear.id.au> DOWNLOAD_ASSETS = mbuto -LOCAL_ASSETS = mbuto.img +LOCAL_ASSETS = mbuto.img QEMU_EFI.fd ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) @@ -18,6 +18,9 @@ mbuto: mbuto.img: passt.mbuto mbuto ./mbuto/mbuto -p ./$< -c lz4 -f $@ +QEMU_EFI.fd: + ./find-arm64-firmware.sh $@ + check: assets ./run diff --git a/test/distro/debian b/test/distro/debian index ce3b9e7..9992b69 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -136,7 +136,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' sleep 2 host apt-get update @@ -222,7 +222,7 @@ host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -296,7 +296,7 @@ host wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocl host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd diff --git a/test/distro/fedora b/test/distro/fedora index 2a8e3e9..9fbba6b 100644 --- a/test/distro/fedora +++ b/test/distro/fedora @@ -158,7 +158,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -213,7 +213,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -268,7 +268,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -323,7 +323,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -378,7 +378,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -433,7 +433,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -488,7 +488,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -543,7 +543,7 @@ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.se host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat diff --git a/test/distro/opensuse b/test/distro/opensuse index 18e1c81..f2da9fe 100644 --- a/test/distro/opensuse +++ b/test/distro/opensuse @@ -130,7 +130,7 @@ host wget http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openS host virt-edit -a __IMG__ -m /dev/sda3 /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio host PS1='$ ' host ip link set enp0s1 up sleep 10 diff --git a/test/find-arm64-firmware.sh b/test/find-arm64-firmware.sh new file mode 100755 index 0000000..3182620 --- /dev/null +++ b/test/find-arm64-firmware.sh @@ -0,0 +1,13 @@ +#! /bin/sh + +LOCATIONS="/usr/share/qemu-efi-aarch64 /usr/share/edk2/aarch64" + +for l in $LOCATIONS; do + if [ -f "$l/QEMU_EFI.fd" ]; then + ln -s "$l/QEMU_EFI.fd" "$1" + exit 0 + fi +done + +echo "Couldn't find QEMU_EFI.fd" >&2 +exit 1 -- 2.36.1
If the tests are interrupted at the right point a passt.pid file can be left over. Clean it up with "make clean" and add it to .gitignore so it doesn't get accidentally committed. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- .gitignore | 1 + Makefile | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89d9919..4b86fff 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /qrap /pasta.1 /seccomp.h +/passt.pid diff --git a/Makefile b/Makefile index c441af3..0077fc9 100644 --- a/Makefile +++ b/Makefile @@ -122,7 +122,8 @@ valgrind: all .PHONY: clean clean: $(RM) $(BIN) *.o seccomp.h pasta.1 \ - passt.tar passt.tar.gz *.deb *.rpm + passt.tar passt.tar.gz *.deb *.rpm \ + passt.pid install: $(BIN) $(MANPAGES) mkdir -p $(DESTDIR)$(prefix)/bin $(DESTDIR)$(prefix)/share/man/man1 -- 2.36.1
This utility function is never called. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/lib/util | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/test/lib/util b/test/lib/util index 906bd9e..dee6c8d 100755 --- a/test/lib/util +++ b/test/lib/util @@ -114,19 +114,6 @@ subs_apply() { IFS="${__ifs}" } -# set_mode() - Set 'passt' or 'pasta' mode for terminal control, renaming panes -# $1: Mode to be set -set_mode() { - MODE="${1}" - if [ "${1}" = "pasta" ]; then - tmux select-pane -t ${PANE_GUEST} -T "namespace" - tmux select-pane -t ${PANE_PASST} -T "pasta" - else - tmux select-pane -t ${PANE_GUEST} -T "guest" - tmux select-pane -t ${PANE_PASST} -T "passt" - fi -} - # get_info_cols() - Get number of columns for info pane get_info_cols() { __log_pane_cols= -- 2.36.1
The test scripts support a "req" directive which requires one test script to be run before another. It's implemented by doing a topological sort based on these directives in the runner scripts, which is about as awkward as you'd expect in Bourne shell. It turns out we only use this functionality in one place - to make the "make install" test run after the plain "make" test. We also already have a simpler way of making sure tests run in a specific order: just put them into the same test script file. So, remove support for the "req" directive and just fold the build/all and build/install test scripts together. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/build/all | 22 +++++++++++++++++++++- test/build/install | 34 ---------------------------------- test/lib/test | 28 ++++++++++------------------ 3 files changed, 31 insertions(+), 53 deletions(-) delete mode 100644 test/build/install diff --git a/test/build/all b/test/build/all index 6043793..1a89b77 100644 --- a/test/build/all +++ b/test/build/all @@ -11,7 +11,7 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -htools make cc rm uname getconf +htools make cc rm uname getconf mkdir cp rm man test Build passt host make clean @@ -40,3 +40,23 @@ host CFLAGS="-Werror" make check [ -f passt ] check [ -h pasta ] check [ -f qrap ] + +tempdir TEMP + +test Install +host prefix=__TEMP__ make install +check [ -f __TEMP__/bin/passt ] +check [ -h __TEMP__/bin/pasta ] +check [ -f __TEMP__/bin/qrap ] +check man -M __TEMP__/share/man -W passt +check man -M __TEMP__/share/man -W pasta +check man -M __TEMP__/share/man -W qrap + +test Uninstall +host prefix=__TEMP__ make uninstall +check ! [ -f __TEMP__/bin/passt ] +check ! [ -h __TEMP__/bin/pasta ] +check ! [ -f __TEMP__/bin/qrap ] +check ! man -M __TEMP__/share/man -W passt 2>/dev/null +check ! man -M __TEMP__/share/man -W pasta 2>/dev/null +check ! man -M __TEMP__/share/man -W qrap 2>/dev/null diff --git a/test/build/install b/test/build/install deleted file mode 100644 index 2c93647..0000000 --- a/test/build/install +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -# -# PASST - Plug A Simple Socket Transport -# for qemu/UNIX domain socket mode -# -# PASTA - Pack A Subtle Tap Abstraction -# for network namespace/tap device mode -# -# test/build/install - Check that binaries and man pages can be installed -# -# Copyright (c) 2021 Red Hat GmbH -# Author: Stefano Brivio <sbrivio(a)redhat.com> - -req build/all -htools make mkdir cp rm man -tempdir TEMP - -test Install -host prefix=__TEMP__ make install -check [ -f __TEMP__/bin/passt ] -check [ -h __TEMP__/bin/pasta ] -check [ -f __TEMP__/bin/qrap ] -check man -M __TEMP__/share/man -W passt -check man -M __TEMP__/share/man -W pasta -check man -M __TEMP__/share/man -W qrap - -test Uninstall -host prefix=__TEMP__ make uninstall -check ! [ -f __TEMP__/bin/passt ] -check ! [ -h __TEMP__/bin/pasta ] -check ! [ -f __TEMP__/bin/qrap ] -check ! man -M __TEMP__/share/man -W passt 2>/dev/null -check ! man -M __TEMP__/share/man -W pasta 2>/dev/null -check ! man -M __TEMP__/share/man -W qrap 2>/dev/null diff --git a/test/lib/test b/test/lib/test index 96dab2b..ae42864 100755 --- a/test/lib/test +++ b/test/lib/test @@ -418,29 +418,21 @@ test_one() { # $1: Name of directory containing set of test files, relative to test/ test() { __list= - __rem=1 cd test - while [ ${__rem} -eq 1 ]; do - __rem=0 - for __f in "${1}"/*; do - __type="$(file -b --mime-type ${__f})" - if [ "${__type}" = "text/x-shellscript" ]; then - __list="$(list_add "${__list}" "${__f}")" - continue - fi + for __f in "${1}"/*; do + __type="$(file -b --mime-type ${__f})" + if [ "${__type}" = "text/x-shellscript" ]; then + __list="$(list_add "${__list}" "${__f}")" + continue + fi - if [ -n "$(file_def "${__f}" onlyfor)" ] && \ + if [ -n "$(file_def "${__f}" onlyfor)" ] && \ ! list_has "$(file_def "${__f}" onlyfor)" "${MODE}"; then - continue - fi + continue + fi - if list_has_all "${__list}" "$(file_def "${__f}" req)"; then - __list="$(list_add "${__list}" "${__f}")" - else - __rem=1 - fi - done + __list="$(list_add "${__list}" "${__f}")" done cd .. -- 2.36.1
The top level listing control of which tests to run is in test/run, however it uses the test() function which runs an entire directory of test files, filtered by some criteria. This makes it awkward to narrow down to a subset of tests when debugging a specific failure. To make this easier, have test() take an explicit list of test files to run, and have the caller in test/run handle the directory traversal. The construct we use for this is pretty awkward to handle the fact that we're in the source tree root directory rather than test/ at this point in test/run. Later cleanups will improve that. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/lib/test | 4 ++-- test/run | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/test/lib/test b/test/lib/test index ae42864..12f2588 100755 --- a/test/lib/test +++ b/test/lib/test @@ -415,12 +415,12 @@ test_one() { } # test() - Build list of tests to run, in order, then issue test_one() -# $1: Name of directory containing set of test files, relative to test/ +# $@: Test files to run, relative to test/ test() { __list= cd test - for __f in "${1}"/*; do + for __f; do __type="$(file -b --mime-type ${__f})" if [ "${__type}" = "text/x-shellscript" ]; then __list="$(list_add "${__list}" "${__f}")" diff --git a/test/run b/test/run index d9e5107..342d99e 100755 --- a/test/run +++ b/test/run @@ -60,43 +60,43 @@ run() { [ ${CI} -eq 1 ] && video_start ci setup build - test build - test distro + test $(cd test && echo build/*) + test $(cd test && echo distro/*) setup pasta - test ndp - test dhcp - test tcp - test udp + test $(cd test && echo ndp/*) + test $(cd test && echo dhcp/*) + test $(cd test && echo tcp/*) + test $(cd test && echo udp/*) teardown pasta setup passt - test ndp - test dhcp - test tcp - test udp - test valgrind + test $(cd test && echo ndp/*) + test $(cd test && echo dhcp/*) + test $(cd test && echo tcp/*) + test $(cd test && echo udp/*) + test $(cd test && echo valgrind/*) teardown passt VALGRIND=1 setup passt_in_ns - test ndp - test dhcp - test icmp - test tcp - test udp - test valgrind + test $(cd test && echo ndp/*) + test $(cd test && echo dhcp/*) + test $(cd test && echo icmp/*) + test $(cd test && echo tcp/*) + test $(cd test && echo udp/*) + test $(cd test && echo valgrind/*) teardown passt_in_ns VALGRIND=0 setup passt_in_ns - test ndp - test dhcp - test perf + test $(cd test && echo ndp/*) + test $(cd test && echo dhcp/*) + test $(cd test && echo perf/*) teardown passt_in_ns setup two_guests - test two_guests + test $(cd test && echo two_guests/*) teardown two_guests perf_finish @@ -125,21 +125,21 @@ demo() { layout_demo_passt video_start demo_passt MODE=passt - test demo + test $(cd test && echo demo/*) video_stop teardown demo_passt layout_demo_pasta video_start demo_pasta MODE=pasta - test demo + test $(cd test && echo demo/*) video_stop teardown demo_pasta layout_demo_podman video_start demo_podman MODE=podman - test demo + test $(cd test && echo demo/*) video_stop teardown_demo_podman -- 2.36.1
Currently test/run uses wildcards to run all of the tests in a directory. However, that wildcard list is filtered down by the "onlyfor" directives in the test files... usually to a single file. Therefore, just explicitly list the files we *really* want to run for this test mode. This makes it easier to see at the top level what tests will be executed, and to change that list temporarily while debugging specific failures. This means the "onlyfor" directive no longer has any purpose, and we can remove it. "onlyfor" was also the only used of the $MODE variable, so we can remove that too. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/demo/passt | 1 - test/demo/pasta | 1 - test/demo/podman | 2 -- test/dhcp/passt | 1 - test/dhcp/pasta | 1 - test/icmp/passt_in_ns | 1 - test/lib/setup | 10 ------- test/lib/test | 9 ------ test/ndp/passt | 1 - test/ndp/pasta | 1 - test/perf/passt_tcp | 1 - test/perf/passt_udp | 1 - test/perf/pasta_tcp | 1 - test/perf/pasta_udp | 1 - test/run | 58 +++++++++++++++++++++------------------ test/tcp/passt | 1 - test/tcp/passt_in_ns | 1 - test/tcp/pasta | 1 - test/udp/passt | 1 - test/udp/passt_in_ns | 1 - test/udp/pasta | 1 - test/valgrind/passt | 1 - test/valgrind/passt_in_ns | 1 - 23 files changed, 31 insertions(+), 67 deletions(-) diff --git a/test/demo/passt b/test/demo/passt index b67ed26..f71392b 100644 --- a/test/demo/passt +++ b/test/demo/passt @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt say This is a short introduction to em passt say . diff --git a/test/demo/pasta b/test/demo/pasta index 754b320..f4b7da2 100644 --- a/test/demo/pasta +++ b/test/demo/pasta @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor pasta say This is a short introduction to em pasta say . diff --git a/test/demo/podman b/test/demo/podman index 3a73784..540e456 100644 --- a/test/demo/podman +++ b/test/demo/podman @@ -11,8 +11,6 @@ # Copyright (c) 2022 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor podman - set OPTS -Z -w 4M -l 1M -P 2 -t10 --pacing-timer 10000 say This is an overview of diff --git a/test/dhcp/passt b/test/dhcp/passt index 4648821..00047a9 100644 --- a/test/dhcp/passt +++ b/test/dhcp/passt @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt passt_in_ns gtools ip jq dhclient sed tr htools ip jq sed tr head diff --git a/test/dhcp/pasta b/test/dhcp/pasta index 4652d09..65b1d42 100644 --- a/test/dhcp/pasta +++ b/test/dhcp/pasta @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor pasta nstools ip jq /sbin/dhclient htools ip jq diff --git a/test/icmp/passt_in_ns b/test/icmp/passt_in_ns index e1d9f7b..e4ac4ff 100644 --- a/test/icmp/passt_in_ns +++ b/test/icmp/passt_in_ns @@ -16,7 +16,6 @@ # to create "ping" sockets. Inside the namespace, there's a single group, which # is allowed by default to create them. -onlyfor passt_in_ns nstools ip jq sleep gtools ping ip jq diff --git a/test/lib/setup b/test/lib/setup index 604cfee..0d0f3cf 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -20,15 +20,11 @@ VMEM="$((${__mem_kib} / 1024 / 4))" # setup_build() - Set up pane layout for build tests setup_build() { - MODE=build - layout_host } # setup_passt() - Start qemu and passt setup_passt() { - MODE=passt - layout_passt # Ports: @@ -65,8 +61,6 @@ setup_passt() { # setup_pasta() - Create a network and user namespace, connect pasta to it setup_pasta() { - MODE=pasta - layout_pasta pane_run NS 'echo $$' @@ -98,8 +92,6 @@ setup_pasta() { # setup_passt_in_ns() - Set up namespace (with pasta), run qemu and passt into it setup_passt_in_ns() { - MODE=passt_in_ns - layout_passt_in_pasta # Ports: @@ -180,8 +172,6 @@ setup_passt_in_ns() { # setup_two_guests() - Set up two namespace, run qemu and passt in both of them setup_two_guests() { - MODE=passt_in_ns - layout_two_guests # Ports: diff --git a/test/lib/test b/test/lib/test index 12f2588..cb89e0b 100755 --- a/test/lib/test +++ b/test/lib/test @@ -13,9 +13,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -# Empty, 'passt' or 'pasta', to match against 'onlyfor' directive -MODE= - # test_iperf3() - Ugly helper for iperf3c/iperf3s directives # $1: Role: client or server # $2: Pane name, can be lowercase @@ -426,12 +423,6 @@ test() { __list="$(list_add "${__list}" "${__f}")" continue fi - - if [ -n "$(file_def "${__f}" onlyfor)" ] && \ - ! list_has "$(file_def "${__f}" onlyfor)" "${MODE}"; then - continue - fi - __list="$(list_add "${__list}" "${__f}")" done cd .. diff --git a/test/ndp/passt b/test/ndp/passt index 155ff26..d6b4c40 100644 --- a/test/ndp/passt +++ b/test/ndp/passt @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt passt_in_ns gtools ip jq sipcalc grep htools ip jq sipcalc grep cut diff --git a/test/ndp/pasta b/test/ndp/pasta index ef9dee7..2a2dd1a 100644 --- a/test/ndp/pasta +++ b/test/ndp/pasta @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor pasta nstools ip jq sipcalc grep cut htools ip jq sipcalc grep cut diff --git a/test/perf/passt_tcp b/test/perf/passt_tcp index c97178e..74a39ba 100644 --- a/test/perf/passt_tcp +++ b/test/perf/passt_tcp @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns gtools sysctl ip jq nproc seq sleep bc iperf3 tcp_rr tcp_crr # From neper nstools sysctl ip jq nproc seq sleep bc iperf3 tcp_rr tcp_crr htools bc head sed seq diff --git a/test/perf/passt_udp b/test/perf/passt_udp index 5155099..a22a550 100644 --- a/test/perf/passt_udp +++ b/test/perf/passt_udp @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns gtools sysctl ip jq nproc sleep iperf3 udp_rr # From neper nstools ip jq sleep iperf3 udp_rr htools bc head sed diff --git a/test/perf/pasta_tcp b/test/perf/pasta_tcp index 5ef0f69..f4e97cb 100644 --- a/test/perf/pasta_tcp +++ b/test/perf/pasta_tcp @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns htools head ip seq bc sleep iperf3 tcp_rr tcp_crr jq sed nstools sysctl nproc ip seq bc sleep iperf3 tcp_rr tcp_crr jq sed diff --git a/test/perf/pasta_udp b/test/perf/pasta_udp index 114a9bc..5f750b5 100644 --- a/test/perf/pasta_udp +++ b/test/perf/pasta_udp @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns htools bc head ip sleep iperf3 udp_rr jq sed nstools ip sleep iperf3 udp_rr jq sed diff --git a/test/run b/test/run index 342d99e..3e5d56b 100755 --- a/test/run +++ b/test/run @@ -60,43 +60,50 @@ run() { [ ${CI} -eq 1 ] && video_start ci setup build - test $(cd test && echo build/*) - test $(cd test && echo distro/*) + test build/all + test build/static_checkers + test distro/debian + test distro/fedora + test distro/opensuse + test distro/ubuntu setup pasta - test $(cd test && echo ndp/*) - test $(cd test && echo dhcp/*) - test $(cd test && echo tcp/*) - test $(cd test && echo udp/*) + test ndp/pasta + test dhcp/pasta + test tcp/pasta + test udp/pasta teardown pasta setup passt - test $(cd test && echo ndp/*) - test $(cd test && echo dhcp/*) - test $(cd test && echo tcp/*) - test $(cd test && echo udp/*) - test $(cd test && echo valgrind/*) + test ndp/passt + test dhcp/passt + test tcp/passt + test udp/passt + test valgrind/passt teardown passt VALGRIND=1 setup passt_in_ns - test $(cd test && echo ndp/*) - test $(cd test && echo dhcp/*) - test $(cd test && echo icmp/*) - test $(cd test && echo tcp/*) - test $(cd test && echo udp/*) - test $(cd test && echo valgrind/*) + test ndp/passt + test dhcp/passt + test icmp/passt_in_ns + test tcp/passt_in_ns + test udp/passt_in_ns + test valgrind/passt_in_ns teardown passt_in_ns VALGRIND=0 setup passt_in_ns - test $(cd test && echo ndp/*) - test $(cd test && echo dhcp/*) - test $(cd test && echo perf/*) + test ndp/passt + test dhcp/passt + test perf/passt_tcp + test perf/passt_udp + test perf/pasta_tcp + test perf/pasta_udp teardown passt_in_ns setup two_guests - test $(cd test && echo two_guests/*) + test two_guests/basic teardown two_guests perf_finish @@ -124,22 +131,19 @@ demo() { layout_demo_passt video_start demo_passt - MODE=passt - test $(cd test && echo demo/*) + test demo/passt video_stop teardown demo_passt layout_demo_pasta video_start demo_pasta - MODE=pasta - test $(cd test && echo demo/*) + test demo/pasta video_stop teardown demo_pasta layout_demo_podman video_start demo_podman - MODE=podman - test $(cd test && echo demo/*) + test demo/podman video_stop teardown_demo_podman diff --git a/test/tcp/passt b/test/tcp/passt index b47a36d..4baa610 100644 --- a/test/tcp/passt +++ b/test/tcp/passt @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt gtools nc ip jq cat md5sum cut htools dd nc ip jq cat md5sum cut diff --git a/test/tcp/passt_in_ns b/test/tcp/passt_in_ns index 4229a3a..2a11e0b 100644 --- a/test/tcp/passt_in_ns +++ b/test/tcp/passt_in_ns @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns gtools nc ip jq cat md5sum cut htools dd nc ip jq cat md5sum cut nstools nc ip jq cat md5sum cut diff --git a/test/tcp/pasta b/test/tcp/pasta index 531da04..068393a 100644 --- a/test/tcp/pasta +++ b/test/tcp/pasta @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor pasta htools dd ncat ip jq cat md5sum cut nstools ncat ip jq cat md5sum cut diff --git a/test/udp/passt b/test/udp/passt index 492fb12..8a848bd 100644 --- a/test/udp/passt +++ b/test/udp/passt @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt gtools nc tee grep cat ip jq md5sum cut htools printf dd nc tee grep cat ip jq md5sum cut diff --git a/test/udp/passt_in_ns b/test/udp/passt_in_ns index 71bda04..3607251 100644 --- a/test/udp/passt_in_ns +++ b/test/udp/passt_in_ns @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns gtools nc tee grep cat ip jq md5sum cut nstools nc tee grep cat ip jq md5sum cut htools printf dd nc tee grep cat ip jq md5sum cut diff --git a/test/udp/pasta b/test/udp/pasta index 3123c42..a7e5015 100644 --- a/test/udp/pasta +++ b/test/udp/pasta @@ -11,7 +11,6 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor pasta nstools ncat tee grep cat ip jq md5sum cut htools printf dd ncat tee grep cat ip jq md5sum cut diff --git a/test/valgrind/passt b/test/valgrind/passt index 3af943a..f8bcf00 100644 --- a/test/valgrind/passt +++ b/test/valgrind/passt @@ -11,7 +11,6 @@ # Copyright (c) 2022 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt test valgrind: exit code hout PASST_PID cat passt.pid diff --git a/test/valgrind/passt_in_ns b/test/valgrind/passt_in_ns index bf50c7e..d28e251 100644 --- a/test/valgrind/passt_in_ns +++ b/test/valgrind/passt_in_ns @@ -11,7 +11,6 @@ # Copyright (c) 2022 Red Hat GmbH # Author: Stefano Brivio <sbrivio(a)redhat.com> -onlyfor passt_in_ns test valgrind: exit code nsout PASST_PID cat passt.pid -- 2.36.1
Rather than directly download distro images from the test scripts, handle all the downloads during the test asset build, then just clone them for the tests themselves. This avoids repeated downloads which can be very slow when debugging failing tests. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/.gitignore | 2 + test/Makefile | 131 ++++++++++++++++++++++++++++++++++++++++++- test/distro/debian | 25 +++++---- test/distro/fedora | 38 ++++++------- test/distro/opensuse | 14 ++--- test/distro/ubuntu | 14 ++--- 6 files changed, 178 insertions(+), 46 deletions(-) diff --git a/test/.gitignore b/test/.gitignore index 360da92..225ecd9 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -3,3 +3,5 @@ test_logs/ mbuto/ *.img QEMU_EFI.fd +*.qcow2 +*.raw.xz diff --git a/test/Makefile b/test/Makefile index 9990841..b858e0e 100644 --- a/test/Makefile +++ b/test/Makefile @@ -5,7 +5,54 @@ # Copyright Red Hat # Author: David Gibson <david(a)gibson.dropbear.id.au> -DOWNLOAD_ASSETS = mbuto +WGET = wget -c + +DEBIAN_IMGS = debian-8.11.0-openstack-amd64.qcow2 \ + debian-9-nocloud-amd64-daily-20200210-166.qcow2 \ + debian-10-nocloud-amd64.qcow2 \ + debian-10-generic-arm64.qcow2 \ + debian-10-generic-ppc64el.qcow2 \ + debian-11-nocloud-amd64.qcow2 \ + debian-11-generic-arm64.qcow2 \ + debian-11-generic-ppc64el.qcow2 \ + debian-sid-nocloud-amd64-daily.qcow2 \ + debian-sid-nocloud-arm64-daily.qcow2 \ + debian-sid-nocloud-ppc64el-daily.qcow2 + +FEDORA_IMGS = Fedora-Cloud-Base-26-1.5.x86_64.qcow2 \ + Fedora-Cloud-Base-27-1.6.x86_64.qcow2 \ + Fedora-Cloud-Base-28-1.1.x86_64.qcow2 \ + Fedora-Cloud-Base-28-1.1.aarch64.qcow2 \ + Fedora-Cloud-Base-29-1.2.x86_64.qcow2 \ + Fedora-Cloud-Base-29-1.2.aarch64.qcow2 \ + Fedora-Cloud-Base-30-1.2.x86_64.qcow2 \ + Fedora-Cloud-Base-30-1.2.aarch64.qcow2 \ + Fedora-Cloud-Base-31-1.9.x86_64.qcow2 \ + Fedora-Cloud-Base-31-1.9.aarch64.qcow2 \ + Fedora-Cloud-Base-32-1.6.x86_64.qcow2 \ + Fedora-Cloud-Base-32-1.6.aarch64.qcow2 \ + Fedora-Cloud-Base-33-1.2.x86_64.qcow2 \ + Fedora-Cloud-Base-33-1.2.aarch64.qcow2 \ + Fedora-Cloud-Base-34-1.2.x86_64.qcow2 \ + Fedora-Cloud-Base-34-1.2.aarch64.qcow2 \ + Fedora-Cloud-Base-35-1.2.x86_64.qcow2 \ + Fedora-Cloud-Base-35-1.2.aarch64.qcow2 + +OPENSUSE_IMGS = openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2 \ + openSUSE-Leap-15.2-JeOS.x86_64-kvm-and-xen.qcow2 \ + openSUSE-Leap-15.3-JeOS.x86_64-kvm-and-xen.qcow2 \ + openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64.raw.xz \ + openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz \ + openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2 + +UBUNTU_IMGS = trusty-server-cloudimg-amd64-disk1.img \ + trusty-server-cloudimg-i386-disk1.img \ + trusty-server-cloudimg-ppc64el-disk1.img \ + xenial-server-cloudimg-powerpc-disk1.img \ + jammy-server-cloudimg-s390x.img + +DOWNLOAD_ASSETS = mbuto \ + $(DEBIAN_IMGS) $(FEDORA_IMGS) $(OPENSUSE_IMGS) $(UBUNTU_IMGS) LOCAL_ASSETS = mbuto.img QEMU_EFI.fd ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) @@ -34,3 +81,85 @@ clean: realclean: clean rm -rf $(DOWNLOAD_ASSETS) + +# Debian downloads +debian-8.11.0-openstack-%.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/OpenStack/archive/8.11.0/debian-8.11.… + +debian-9-nocloud-%-daily-20200210-166.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/stretch/daily/20200210-166/debian-9-n… + +debian-10-nocloud-%.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/buster/latest/debian-10-nocloud-$*.qc… + +debian-10-generic-%.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/buster/latest/debian-10-generic-$*.qc… + +debian-11-nocloud-%.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-nocloud-$*.… + +debian-11-generic-%.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-$*.… + +debian-sid-nocloud-%-daily.qcow2: + $(WGET) -O $@ https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-$… + +# Fedora downloads +Fedora-Cloud-Base-26-1.5.%.qcow2: + $(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/26/Clou… + +Fedora-Cloud-Base-27-1.6.%.qcow2: + $(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/27/Clou… + +Fedora-Cloud-Base-28-1.1.%.qcow2: + $(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Clou… + +Fedora-Cloud-Base-29-1.2.%.qcow2: + $(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/29/Clou… + +Fedora-Cloud-Base-30-1.2.%.qcow2: + $(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Clou… + +Fedora-Cloud-Base-31-1.9.%.qcow2: + $(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Clou… + +Fedora-Cloud-Base-32-1.6.%.qcow2: + $(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux/releases/32/Cloud/$*/im… + +Fedora-Cloud-Base-33-1.2.%.qcow2: + $(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/$*/im… + +Fedora-Cloud-Base-34-1.2.%.qcow2: + $(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux//releases/34/Cloud/$*/i… + +Fedora-Cloud-Base-35-1.2.%.qcow2: + $(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/$*/im… + +# OpenSuSE downloads +openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2: + $(WGET) -O $@ https://download.opensuse.org/distribution/leap/15.1/jeos/openSUSE-Leap-15.… + +openSUSE-Leap-15.2-JeOS.x86_64-kvm-and-xen.qcow2: + $(WGET) -O $@ https://download.opensuse.org/distribution/leap/15.2/appliances/openSUSE-Le… + +openSUSE-Leap-15.3-JeOS.x86_64-kvm-and-xen.qcow2: + $(WGET) -O $@ https://download.opensuse.org/distribution/leap/15.3/appliances/openSUSE-Le… + +openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64.raw.xz: + $(WGET) -O $@ http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-T… + +openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz: + $(WGET) -O $@ http://download.opensuse.org/ports/armv7hl/tumbleweed/appliances/openSUSE-T… + +openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2: + $(WGET) -O $@ https://download.opensuse.org/tumbleweed/appliances/openSUSE-Tumbleweed-JeO… + +# Ubuntu downloads +trusty-server-cloudimg-%-disk1.img: + $(WGET) -O $@ https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-$*-di… + +xenial-server-cloudimg-powerpc-disk1.img: + $(WGET) -O $@ https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-power… + +jammy-server-cloudimg-s390x.img: + $(WGET) -O $@ https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-s390x.i… diff --git a/test/distro/debian b/test/distro/debian index 9992b69..a7a0f98 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 +htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -45,7 +45,7 @@ hout GUEST_FILES ls -1 *.c *.h *.sh passt.1 qrap.1 Makefile | tr '\n' ' '; echo test Debian GNU/Linux 8 (jessie), amd64 temp IMG -host wget https://cloud.debian.org/images/cloud/OpenStack/archive/8.11.0/debian-8.11.… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-8.11.0-openstack-amd64.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-config @@ -76,7 +76,7 @@ hout PID cat __PIDFILE__ test Debian GNU/Linux 9 (stretch, oldoldstable), amd64 temp IMG -host wget https://cloud.debian.org/images/cloud/stretch/daily/20200210-166/debian-9-n… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-9-nocloud-amd64-daily-20200210-166.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ @@ -100,7 +100,7 @@ sleep 1 test Debian GNU/Linux 10 (buster, oldstable), amd64 temp IMG -host wget https://cloud.debian.org/images/cloud/buster/latest/debian-10-nocloud-amd64… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-10-nocloud-amd64.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ @@ -124,7 +124,7 @@ sleep 1 test Debian GNU/Linux 10 (buster, oldstable), aarch64 temp IMG -host wget https://cloud.debian.org/images/cloud/buster/latest/debian-10-generic-arm64… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-10-generic-arm64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -155,7 +155,8 @@ sleep 1 test Debian GNU/Linux 10 (buster, oldstable), ppc64le temp IMG -host wget https://cloud.debian.org/images/cloud/buster/latest/debian-10-generic-ppc64… -O __IMG__ + +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-10-generic-ppc64el.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service @@ -188,7 +189,7 @@ hostb reset test Debian GNU/Linux 11 (bullseye, stable), amd64 temp IMG -host wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-nocloud-amd… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-11-nocloud-amd64.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ @@ -210,7 +211,7 @@ sleep 1 test Debian GNU/Linux 11 (bullseye, stable), aarch64 temp IMG -host wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-arm… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-11-generic-arm64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -239,7 +240,7 @@ sleep 1 test Debian GNU/Linux 11 (bullseye, stable), ppc64le temp IMG -host wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-ppc… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-11-generic-ppc64el.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service @@ -270,7 +271,7 @@ hostb reset test Debian GNU/Linux sid (experimental), amd64 temp IMG -host wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-a… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-sid-nocloud-amd64-daily.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ @@ -292,7 +293,7 @@ sleep 1 test Debian GNU/Linux sid (experimental), aarch64 temp IMG -host wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-a… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-sid-nocloud-arm64-daily.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ @@ -313,7 +314,7 @@ sleep 1 test Debian GNU/Linux sid (experimental), ppc64le temp IMG -host wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-p… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-sid-nocloud-ppc64el-daily.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ diff --git a/test/distro/fedora b/test/distro/fedora index 9fbba6b..783d0ea 100644 --- a/test/distro/fedora +++ b/test/distro/fedora @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 +htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -66,7 +66,7 @@ hout GUEST_FILES ls -1 *.c *.h *.sh passt.1 qrap.1 Makefile | tr '\n' ' '; echo test Fedora 26, x86_64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/26/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-26-1.5.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service @@ -96,7 +96,7 @@ hout PID cat __PIDFILE__ test Fedora 27, x86_64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/27/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-27-1.6.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service @@ -123,7 +123,7 @@ sleep 1 test Fedora 28, x86_64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-28-1.1.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service @@ -150,7 +150,7 @@ sleep 1 test Fedora 28, aarch64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-28-1.1.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -179,7 +179,7 @@ host echo test Fedora 29, x86_64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/29/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-29-1.2.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -205,7 +205,7 @@ sleep 1 test Fedora 29, aarch64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/29/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-29-1.2.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -234,7 +234,7 @@ host echo test Fedora 30, x86_64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-30-1.2.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -260,7 +260,7 @@ sleep 1 test Fedora 30, aarch64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-30-1.2.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -289,7 +289,7 @@ host echo test Fedora 31, x86_64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-31-1.9.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -315,7 +315,7 @@ sleep 1 test Fedora 31, aarch64 temp IMG -host wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Clou… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-31-1.9.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -344,7 +344,7 @@ host echo test Fedora 32, x86_64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux/releases/32/Cloud/x86_6… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-32-1.6.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -370,7 +370,7 @@ sleep 1 test Fedora 32, aarch64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux/releases/32/Cloud/aarch… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-32-1.6.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -399,7 +399,7 @@ host echo test Fedora 33, x86_64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/x86_6… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-33-1.2.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -425,7 +425,7 @@ sleep 1 test Fedora 33, aarch64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/aarch… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-33-1.2.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -454,7 +454,7 @@ host echo test Fedora 34, x86_64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux//releases/34/Cloud/x86_… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-34-1.2.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -480,7 +480,7 @@ sleep 1 test Fedora 34, aarch64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux//releases/34/Cloud/aarc… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-34-1.2.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -509,7 +509,7 @@ host echo test Fedora 35, x86_64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/x86_6… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-35-1.2.x86_64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service @@ -535,7 +535,7 @@ sleep 1 test Fedora 35, aarch64 temp IMG -host wget https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/aarch… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-35-1.2.aarch64.qcow2 __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service diff --git a/test/distro/opensuse b/test/distro/opensuse index f2da9fe..f9ace68 100644 --- a/test/distro/opensuse +++ b/test/distro/opensuse @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 xzcat tr +htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 xzcat tr # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -45,7 +45,7 @@ hout GUEST_FILES ls -1 *.c *.h *.sh passt.1 qrap.1 Makefile | tr '\n' ' '; echo test OpenSUSE Leap 15.1 temp IMG -host wget https://download.opensuse.org/distribution/leap/15.1/jeos/openSUSE-Leap-15.… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2 __IMG__ host guestfish --rw -a __IMG__ -i rm '/usr/lib/systemd/system/systemd-journald.service' host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/jeos-firstboot.service host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' @@ -73,7 +73,7 @@ hout PID cat __PIDFILE__ test OpenSUSE Leap 15.2 -host wget https://download.opensuse.org/distribution/leap/15.2/appliances/openSUSE-Le… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/openSUSE-Leap-15.2-JeOS.x86_64-kvm-and-xen.qcow2 __IMG__ host guestfish --rw -a __IMG__ -i rm '/usr/lib/systemd/system/systemd-journald.service' host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/jeos-firstboot.service host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' @@ -98,7 +98,7 @@ sleep 1 test OpenSUSE Leap 15.3 -host wget https://download.opensuse.org/distribution/leap/15.3/appliances/openSUSE-Le… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/openSUSE-Leap-15.3-JeOS.x86_64-kvm-and-xen.qcow2 __IMG__ host guestfish --rw -a __IMG__ -i rm '/usr/lib/systemd/system/systemd-journald.service' host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/jeos-firstboot.service host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' @@ -126,7 +126,7 @@ sleep 1 test OpenSUSE Tumbleweed aarch64 temp IMG -host wget http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-T… -O - | xzcat > __IMG__ +host xzcat __BASEPATH__/openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64.raw.xz > __IMG__ host virt-edit -a __IMG__ -m /dev/sda3 /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ @@ -153,7 +153,7 @@ test OpenSUSE Tumbleweed armv7l temp IMG temp ZIMAGE temp INITRD -host wget http://download.opensuse.org/ports/armv7hl/tumbleweed/appliances/openSUSE-T… -O - | xz -d > __IMG__ +host xzcat __BASEPATH__/openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz -O > __IMG__ host guestfish -a __IMG__ -i download /boot/zImage __ZIMAGE__ host guestfish -a __IMG__ -i download /boot/initrd __INITRD__ host virt-edit -a __IMG__ -m /dev/sda3 /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --timeout 5000 --autologin root -i -8 --keep-baud 115200,38400,9600 %I $TERM/g' @@ -179,7 +179,7 @@ sleep 1 test OpenSUSE Tumbleweed temp IMG -host wget https://download.opensuse.org/tumbleweed/appliances/openSUSE-Tumbleweed-JeO… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2 __IMG__ host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/systemd-journald.service host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/default.target.wants/jeos-firstboot.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/serial-getty@.service diff --git a/test/distro/ubuntu b/test/distro/ubuntu index 20b861a..6e094d7 100644 --- a/test/distro/ubuntu +++ b/test/distro/ubuntu @@ -1,4 +1,4 @@ -<# SPDX-License-Identifier: AGPL-3.0-or-later +# SPDX-License-Identifier: AGPL-3.0-or-later # # PASST - Plug A Simple Socket Transport # for qemu/UNIX domain socket mode @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools wget virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-ppc64 qemu-system-s390x +htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-ppc64 qemu-system-s390x # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -44,7 +44,7 @@ hout GUEST_FILES ls -1 *.c *.h *.sh passt.1 qrap.1 Makefile | tr '\n' ' '; echo test Ubuntu 14.04.5 LTS (Trusty Tahr), amd64 temp IMG -host wget https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/trusty-server-cloudimg-amd64-disk1.img __IMG__ host virt-edit -a __IMG__ /etc/init/ttyS0.conf -e 's/\/getty/\/getty --autologin root/' host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-config.conf host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-final.conf @@ -77,7 +77,7 @@ hout PID cat __PIDFILE__ test Ubuntu 14.04.5 LTS (Trusty Tahr), i386 temp IMG -host wget https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-i386-… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/trusty-server-cloudimg-i386-disk1.img __IMG__ host virt-edit -a __IMG__ /etc/init/ttyS0.conf -e 's/\/getty/\/getty --autologin root/' host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-config.conf host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-final.conf @@ -107,7 +107,7 @@ sleep 1 test Ubuntu 14.04.5 LTS (Trusty Tahr), ppc64le temp IMG -host wget https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-ppc64… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/trusty-server-cloudimg-ppc64el-disk1.img __IMG__ host virt-edit -a __IMG__ /etc/init/hvc0.conf -e 's/\/getty/\/getty --autologin root/' host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-config.conf host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-final.conf @@ -140,7 +140,7 @@ host echo test Ubuntu 16.04 LTS (Xenial Xerus), ppc64 (be) temp IMG -host wget https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-power… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/xenial-server-cloudimg-powerpc-disk1.img __IMG__ host virt-edit -a __IMG__ /lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/cloud-init.target.wants/cloud-config.service host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/cloud-init.target.wants/cloud-final.service @@ -170,7 +170,7 @@ host echo test Ubuntu 22.04 (Jammy Jellyfish), s390x temp IMG -host wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-s390x.i… -O __IMG__ +host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/jammy-server-cloudimg-s390x.img __IMG__ host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -- 2.36.1
Before booting the guest images, the distro test cases need to modify the guest images, using virt-edit and guestfish, to boot in the way we need. At present this gets repeated on every test run, even though it's not really doing anything we want to test for. In addition many of the images have the same preparation steps leading to a lot of duplicated stages in the tests. A number of additional images can be prepared using common steps, even if the ones used now have small differences. Therefore move the preparation of most of the guest images to the asset build phase, where they can be done a single time for multiple test runs, using a common preparation script. We can even avoid making a copy of the disk image for booting, by using qemu's -snapshot option. A few of the distros (openSUSE and older Ubuntu) do need different steps. For now we don't chage how they are run, they could possibly be handled more like this in future. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/.gitignore | 1 + test/Makefile | 22 +++- test/distro/debian | 125 +++------------------- test/distro/fedora | 205 ++++--------------------------------- test/distro/ubuntu | 25 +---- test/prepare-distro-img.sh | 18 ++++ 6 files changed, 70 insertions(+), 326 deletions(-) create mode 100755 test/prepare-distro-img.sh diff --git a/test/.gitignore b/test/.gitignore index 225ecd9..f81126e 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -4,4 +4,5 @@ mbuto/ *.img QEMU_EFI.fd *.qcow2 +*.raw *.raw.xz diff --git a/test/Makefile b/test/Makefile index b858e0e..e2d10a8 100644 --- a/test/Makefile +++ b/test/Makefile @@ -45,15 +45,18 @@ OPENSUSE_IMGS = openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2 \ openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz \ openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2 -UBUNTU_IMGS = trusty-server-cloudimg-amd64-disk1.img \ +UBUNTU_OLD_IMGS = trusty-server-cloudimg-amd64-disk1.img \ trusty-server-cloudimg-i386-disk1.img \ - trusty-server-cloudimg-ppc64el-disk1.img \ - xenial-server-cloudimg-powerpc-disk1.img \ + trusty-server-cloudimg-ppc64el-disk1.img +UBUNTU_NEW_IMGS = xenial-server-cloudimg-powerpc-disk1.img \ jammy-server-cloudimg-s390x.img +UBUNTU_IMGS = $(UBUNTU_OLD_IMGS) $(UBUNTU_NEW_IMGS) DOWNLOAD_ASSETS = mbuto \ - $(DEBIAN_IMGS) $(FEDORA_IMGS) $(OPENSUSE_IMGS) $(UBUNTU_IMGS) -LOCAL_ASSETS = mbuto.img QEMU_EFI.fd + $(DEBIAN_IMGS) $(FEDORA_IMGS) $(UBUNTU_IMGS) +LOCAL_ASSETS = mbuto.img QEMU_EFI.fd \ + $(DEBIAN_IMGS:%=prepared-%) $(FEDORA_IMGS:%=prepared-%) \ + $(UBUNTU_NEW_IMGS:%=prepared-%) ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) @@ -68,6 +71,14 @@ mbuto.img: passt.mbuto mbuto QEMU_EFI.fd: ./find-arm64-firmware.sh $@ +prepared-%.qcow2: %.qcow2 ./prepare-distro-img.sh + qemu-img create -f qcow2 -F qcow2 -b $< $@ + ./prepare-distro-img.sh $@ + +prepared-%.img: %.img ./prepare-distro-img.sh + qemu-img create -f qcow2 -F qcow2 -b $< $@ + ./prepare-distro-img.sh $(IMGTYPE) $@ + check: assets ./run @@ -78,6 +89,7 @@ clean: rm -f perf.js *~ rm -f $(LOCAL_ASSETS) rm -rf test_logs + rm -f prepared-*.qcow2 prepared-*.img realclean: clean rm -rf $(DOWNLOAD_ASSETS) diff --git a/test/distro/debian b/test/distro/debian index a7a0f98..ad0ec30 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 +htools head sed cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -39,22 +39,11 @@ endef hostb ./passt -P __PIDFILE__ & sleep 1 host echo -hout GUEST_FILES ls -1 *.c *.h *.sh passt.1 qrap.1 Makefile | tr '\n' ' '; echo test Debian GNU/Linux 8 (jessie), amd64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-8.11.0-openstack-amd64.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-config -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-final -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__IMG__,if=virtio -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none -drive file=__BASEPATH__/prepared-debian-8.11.0-openstack-amd64.qcow2,if=virtio -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host apt-get update @@ -75,13 +64,7 @@ hout PID cat __PIDFILE__ test Debian GNU/Linux 9 (stretch, oldoldstable), amd64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-9-nocloud-amd64-daily-20200210-166.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-9-nocloud-amd64-daily-20200210-166.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host apt-get update @@ -99,13 +82,7 @@ sleep 1 test Debian GNU/Linux 10 (buster, oldstable), amd64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-10-nocloud-amd64.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-10-nocloud-amd64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host apt-get update @@ -123,20 +100,7 @@ sleep 1 test Debian GNU/Linux 10 (buster, oldstable), aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-10-generic-arm64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-config -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-final -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-10-generic-arm64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host apt-get update @@ -154,22 +118,7 @@ sleep 1 test Debian GNU/Linux 10 (buster, oldstable), ppc64le -temp IMG - -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-10-generic-ppc64el.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-config -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-final -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-10-generic-ppc64el.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host apt-get update @@ -188,13 +137,7 @@ hostb reset test Debian GNU/Linux 11 (bullseye, stable), amd64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-11-nocloud-amd64.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-11-nocloud-amd64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -210,20 +153,7 @@ sleep 1 test Debian GNU/Linux 11 (bullseye, stable), aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-11-generic-arm64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-config -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-final -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-11-generic-arm64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -239,21 +169,7 @@ sleep 1 test Debian GNU/Linux 11 (bullseye, stable), ppc64le -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-11-generic-ppc64el.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-config -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-final -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init -host guestfish --rw -a __IMG__ -i rm /etc/init.d/cloud-init-local -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-11-generic-ppc64el.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -270,13 +186,7 @@ hostb reset test Debian GNU/Linux sid (experimental), amd64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-sid-nocloud-amd64-daily.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-sid-nocloud-amd64-daily.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -292,12 +202,7 @@ sleep 1 test Debian GNU/Linux sid (experimental), aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-sid-nocloud-arm64-daily.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-sid-nocloud-arm64-daily.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd @@ -313,13 +218,7 @@ sleep 1 test Debian GNU/Linux sid (experimental), ppc64le -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/debian-sid-nocloud-ppc64el-daily.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 2048 -smp 2 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-debian-sid-nocloud-ppc64el-daily.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot sleep 2 host apt-get update host apt-get -y install make gcc netcat-openbsd diff --git a/test/distro/fedora b/test/distro/fedora index 783d0ea..f225a8e 100644 --- a/test/distro/fedora +++ b/test/distro/fedora @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 +htools head sed cat kill qemu-system-x86_64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -60,22 +60,10 @@ hostb ./passt -P __PIDFILE__ & sleep 1 host echo hout DNS6 sed -n 's/^nameserver \([^:]*:\)\([^%]*\).*/\1\2/p' /etc/resolv.conf | head -1 -hout GUEST_FILES ls -1 *.c *.h *.sh passt.1 qrap.1 Makefile | tr '\n' ' '; echo - test Fedora 26, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-26-1.5.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-26-1.5.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -95,17 +83,7 @@ hout PID cat __PIDFILE__ test Fedora 27, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-27-1.6.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-27-1.6.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -122,17 +100,7 @@ sleep 1 test Fedora 28, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-28-1.1.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /etc/systemd/system/getty.target.wants/getty(a)tty1.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 ttyS0 $TERM/g' -host guestfish --rw -a __IMG__ -i rm /lib/systemd/system/serial-getty@.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-28-1.1.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -149,16 +117,7 @@ sleep 1 test Fedora 28, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-28-1.1.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-28-1.1.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -178,16 +137,7 @@ host echo test Fedora 29, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-29-1.2.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-29-1.2.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -204,16 +154,7 @@ sleep 1 test Fedora 29, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-29-1.2.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-29-1.2.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -233,16 +174,7 @@ host echo test Fedora 30, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-30-1.2.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-30-1.2.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -259,16 +191,7 @@ sleep 1 test Fedora 30, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-30-1.2.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-30-1.2.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -288,16 +211,7 @@ host echo test Fedora 31, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-31-1.9.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-31-1.9.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -314,16 +228,7 @@ sleep 1 test Fedora 31, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-31-1.9.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-31-1.9.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -343,16 +248,7 @@ host echo test Fedora 32, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-32-1.6.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-32-1.6.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -369,16 +265,7 @@ sleep 1 test Fedora 32, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-32-1.6.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-32-1.6.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -398,16 +285,7 @@ host echo test Fedora 33, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-33-1.2.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-33-1.2.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -424,16 +302,7 @@ sleep 1 test Fedora 33, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-33-1.2.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-33-1.2.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -453,16 +322,7 @@ host echo test Fedora 34, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-34-1.2.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-34-1.2.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -479,16 +339,7 @@ sleep 1 test Fedora 34, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-34-1.2.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-34-1.2.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -508,16 +359,7 @@ host echo test Fedora 35, x86_64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-35-1.2.x86_64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-x86_64 -M pc,accel=kvm:tcg -m 1024 -nographic -serial stdio -nodefaults -no-reboot -nographic -vga none __BASEPATH__/prepared-Fedora-Cloud-Base-35-1.2.x86_64.qcow2 -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat @@ -534,16 +376,7 @@ sleep 1 test Fedora 35, aarch64 -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/Fedora-Cloud-Base-35-1.2.aarch64.qcow2 __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci +host ./qrap 5 qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios __BASEPATH__/QEMU_EFI.fd -nodefaults -nographic -vga none -serial stdio __BASEPATH__/prepared-Fedora-Cloud-Base-35-1.2.aarch64.qcow2 -net socket,fd=5 -net nic,model=virtio -device virtio-rng-pci -snapshot host PS1='$ ' sleep 2 host yum -y install make gcc nmap-ncat diff --git a/test/distro/ubuntu b/test/distro/ubuntu index 6e094d7..3a80e37 100644 --- a/test/distro/ubuntu +++ b/test/distro/ubuntu @@ -139,16 +139,7 @@ host echo test Ubuntu 16.04 LTS (Xenial Xerus), ppc64 (be) -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/xenial-server-cloudimg-powerpc-disk1.img __IMG__ -host virt-edit -a __IMG__ /lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/cloud-init.target.wants/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/cloud-init.target.wants/cloud-final.service -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/cloud-init.target.wants/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/cloud-init.target.wants/cloud-init.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ - -host ./qrap 5 qemu-system-ppc64 -m 1024 -M pseries -nographic -nodefaults -serial stdio -no-reboot -nographic -vga none -hda __IMG__ -net socket,fd=5 -net nic,model=virtio +host ./qrap 5 qemu-system-ppc64 -m 1024 -M pseries -nographic -nodefaults -serial stdio -no-reboot -nographic -vga none -hda __BASEPATH__/prepared-xenial-server-cloudimg-powerpc-disk1.img -net socket,fd=5 -net nic,model=virtio -snapshot host PS1='$ ' host dhclient -4 # Skip apt-get update here: some updates to xenial-updates around 2022-01-30 @@ -169,18 +160,8 @@ host echo test Ubuntu 22.04 (Jammy Jellyfish), s390x -temp IMG -host qemu-img create -f qcow2 -F qcow2 -b __BASEPATH__/jammy-server-cloudimg-s390x.img __IMG__ -host virt-edit -a __IMG__ /usr/lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-config.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-init-local.service -host guestfish --rw -a __IMG__ -i rm /usr/lib/systemd/system/cloud-final.service -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/multi-user.target.wants/snapd.service -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/snap.lxd.activate.service -host guestfish --rw -a __IMG__ -i rm /etc/systemd/system/snap.lxd.daemon.service -host guestfish --rw -a __IMG__ -i copy-in __GUEST_FILES__ /root/ -host ./qrap 5 qemu-system-s390x -m 2048 -smp 2 -serial stdio -nodefaults -nographic __IMG__ -net socket,fd=5 -net nic,model=virtio -device virtio-rng-ccw + +host ./qrap 5 qemu-system-s390x -m 2048 -smp 2 -serial stdio -nodefaults -nographic __BASEPATH__/prepared-jammy-server-cloudimg-s390x.img -net socket,fd=5 -net nic,model=virtio -device virtio-rng-ccw -snapshot host service systemd-resolved stop host export DEBIAN_FRONTEND=noninteractive diff --git a/test/prepare-distro-img.sh b/test/prepare-distro-img.sh new file mode 100755 index 0000000..aeb97a0 --- /dev/null +++ b/test/prepare-distro-img.sh @@ -0,0 +1,18 @@ +#! /bin/sh -e + +IMG="$1" +PASST_FILES="$(echo ../*.c ../*.h ../*.sh ../*.1 ../Makefile)" + +virt-edit -a $IMG /lib/systemd/system/serial-getty@.service -e 's/ExecStart=.*/ExecStart=\/sbin\/agetty --autologin root -8 --keep-baud 115200,38400,9600 %I $TERM/g' + +guestfish --rw -a $IMG -i <<EOF +rm-f /usr/lib/systemd/system/cloud-config.service +rm-f /usr/lib/systemd/system/cloud-init.service +rm-f /usr/lib/systemd/system/cloud-init-local.service +rm-f /usr/lib/systemd/system/cloud-final.service +rm-f /etc/init.d/cloud-config +rm-f /etc/init.d/cloud-final +rm-f /etc/init.d/cloud-init +rm-f /etc/init.d/cloud-init-local +copy-in $PASST_FILES /root/ +EOF -- 2.36.1
The Fedora test file extracts some information from the host resolv.conf into a DNS6 variable which is then never used. Remove this unnecessary step, which is presumably a leftover from an earlier iteration. This was the only user of 'head' and 'sed' in the test file, so those can also be removed from the required tools. The debian and ubuntu test files also listed 'head' and 'sed' as tools, although they don't use them, I'm guessing because of an earlier version which had the same DNS6 code. Remove those as well. The opensuse test file still actually uses DNS6, so leave it there for now. The DNS handling and network config handling for SuSE looks to be kind of broken, but fixing that is a job for another day. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/distro/debian | 2 +- test/distro/fedora | 3 +-- test/distro/ubuntu | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/test/distro/debian b/test/distro/debian index ad0ec30..abbbaa2 100644 --- a/test/distro/debian +++ b/test/distro/debian @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools head sed cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 +htools cat kill qemu-system-x86_64 qemu-system-aarch64 qemu-system-ppc64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test diff --git a/test/distro/fedora b/test/distro/fedora index f225a8e..56805c5 100644 --- a/test/distro/fedora +++ b/test/distro/fedora @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools head sed cat kill qemu-system-x86_64 +htools cat kill qemu-system-x86_64 # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test @@ -59,7 +59,6 @@ endef hostb ./passt -P __PIDFILE__ & sleep 1 host echo -hout DNS6 sed -n 's/^nameserver \([^:]*:\)\([^%]*\).*/\1\2/p' /etc/resolv.conf | head -1 test Fedora 26, x86_64 diff --git a/test/distro/ubuntu b/test/distro/ubuntu index 3a80e37..b9a0446 100644 --- a/test/distro/ubuntu +++ b/test/distro/ubuntu @@ -12,7 +12,7 @@ # Author: Stefano Brivio <sbrivio(a)redhat.com> temp PIDFILE -htools qemu-img virt-edit guestfish head sed cat kill qemu-system-x86_64 qemu-system-ppc64 qemu-system-s390x +htools qemu-img virt-edit guestfish cat kill qemu-system-x86_64 qemu-system-ppc64 qemu-system-s390x # Quick pasta test: send message from init to ns, and from ns to init def distro_quick_pasta_test -- 2.36.1
On Wed, 6 Jul 2022 17:28:54 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:This set supersedes the previous "batch 3" which had some problems. This fixes a number of problems I've encountered trying to run the passt tests on a Fedora host. It also makes a number of small cleanups and improvements to the test running framework. David Gibson (14): Handle the case of a DNS server on localhost tests: qemu-system-ppc64le isn't a thing Invoke specific qemu-system-* binaries tests: Introduce makefile for building test assets tests: Move mbuto download and execution to asset build tests: Search multiple places for aarch64 EDK2 bios image Clean up passt.pid file tests: Remove unused set_mode() function tests: Remove not-very-useful "req" directive tests: Don't automatically traverse directories of test files tests: Explicitly list test files in test/run, remove "onlyfor" support tests: Move distro image download to asset build makefile tests: Prepare distro images during asset build phase tests: Remove unused DNS6 calculation from fedora tests Stefano Brivio (1): test: Add external mbuto profile, drop udhcpc, and switch to itThanks a lot, it all looks good to me, I would just drop 1/15 (mbuto profile) as I already replaced it with a v2 patch. I'm running the tests now, let's see. :) -- Stefano
On Mon, Jul 11, 2022 at 11:42:09AM +0200, Stefano Brivio wrote:On Thu, 7 Jul 2022 16:53:11 +0200 Stefano Brivio <sbrivio(a)redhat.com> wrote:Huh. I ran into a bunch of problems with the OpenSUSE Leap images when I tried to do the image preparation stuff for them. But when I rolled that back and just did the image download separate, it seemed to work for me. Well... that is, it boots up and executes commands okay. The test fails, I think because I have no IPv6 nameservers on the host, which is messing with the scripting here, but the same thing happens before the change to image downloads. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson[...] I'm running the tests now, let's see. :)For some reason qemu refuses to boot the OpenSUSE Leap 15.1 image made this way, I haven't really looked into that yet.
On Tue, 12 Jul 2022 18:26:37 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:On Mon, Jul 11, 2022 at 11:42:09AM +0200, Stefano Brivio wrote:Ah, wait a moment, did you perhaps forget to commit the distro/opensuse part for patch 14/15? The changes for distro/debian and distro/fedora in that patch look complete, distro/ubuntu has changes just for two versions, and distro/opensuse is not changed by that patch at all. It took me a bit to figure out because the prepared images actually work, but the test doesn't use them -- it's trying to use a temporary file that doesn't exist anymore.On Thu, 7 Jul 2022 16:53:11 +0200 Stefano Brivio <sbrivio(a)redhat.com> wrote:Huh. I ran into a bunch of problems with the OpenSUSE Leap images when I tried to do the image preparation stuff for them. But when I rolled that back and just did the image download separate, it seemed to work for me. Well... that is, it boots up and executes commands okay.[...] I'm running the tests now, let's see. :)For some reason qemu refuses to boot the OpenSUSE Leap 15.1 image made this way, I haven't really looked into that yet.The test fails, I think because I have no IPv6 nameservers on the host, which is messing with the scripting here, but the same thing happens before the change to image downloads.If you're wondering why I went that way with OpenSUSE: I was too lazy to find out how to configure the interface in a "proper" way, so I just bring eth0 up, which sets up IPv6 addresses and routes via NDP. I guess it simply needs: wicked ifup eth0 and then we can use both IPv4 and IPv6, but I haven't tried. -- Stefano
On Tue, Jul 12, 2022 at 02:13:07PM +0200, Stefano Brivio wrote:On Tue, 12 Jul 2022 18:26:37 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:No. I fiddled around with handling the SuSE and older Ubuntu images, got bogged down in details and decided to postpone that until a later time. So I'm deliberately only handling the images which can be handled by the common script I added there for now.On Mon, Jul 11, 2022 at 11:42:09AM +0200, Stefano Brivio wrote:Ah, wait a moment, did you perhaps forget to commit the distro/opensuse part for patch 14/15? The changes for distro/debian and distro/fedora in that patch look complete, distro/ubuntu has changes just for two versions, and distro/opensuse is not changed by that patch at all.On Thu, 7 Jul 2022 16:53:11 +0200 Stefano Brivio <sbrivio(a)redhat.com> wrote:Huh. I ran into a bunch of problems with the OpenSUSE Leap images when I tried to do the image preparation stuff for them. But when I rolled that back and just did the image download separate, it seemed to work for me. Well... that is, it boots up and executes commands okay.[...] I'm running the tests now, let's see. :)For some reason qemu refuses to boot the OpenSUSE Leap 15.1 image made this way, I haven't really looked into that yet.It took me a bit to figure out because the prepared images actually work, but the test doesn't use them -- it's trying to use a temporary file that doesn't exist anymore.Um, what prepared images? AFAICT my Makefile only generates prepared images for Debian, Fedora and the newer Ubuntu cases. For SuSE and the older Ubuntu the test scripts now have qemu-img commands creating temporary images from the pre-downlaoded images (added in patch 13/15).Right. Maybe I'll look at that if I get time. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibsonThe test fails, I think because I have no IPv6 nameservers on the host, which is messing with the scripting here, but the same thing happens before the change to image downloads.If you're wondering why I went that way with OpenSUSE: I was too lazy to find out how to configure the interface in a "proper" way, so I just bring eth0 up, which sets up IPv6 addresses and routes via NDP. I guess it simply needs: wicked ifup eth0 and then we can use both IPv4 and IPv6, but I haven't tried.
On Wed, 13 Jul 2022 12:11:24 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:On Tue, Jul 12, 2022 at 02:13:07PM +0200, Stefano Brivio wrote:Oops, right, I missed that, I was confused by the fact that the image didn't exist. I guess DOWNLOAD_ASSETS (from patch 13/15) in test/Makefile should also include OPENSUSE_IMGS, that's all. Added, re-running the whole thing now. -- StefanoOn Tue, 12 Jul 2022 18:26:37 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:No. I fiddled around with handling the SuSE and older Ubuntu images, got bogged down in details and decided to postpone that until a later time. So I'm deliberately only handling the images which can be handled by the common script I added there for now.On Mon, Jul 11, 2022 at 11:42:09AM +0200, Stefano Brivio wrote:Ah, wait a moment, did you perhaps forget to commit the distro/opensuse part for patch 14/15? The changes for distro/debian and distro/fedora in that patch look complete, distro/ubuntu has changes just for two versions, and distro/opensuse is not changed by that patch at all.On Thu, 7 Jul 2022 16:53:11 +0200 Stefano Brivio <sbrivio(a)redhat.com> wrote: > [...] > > I'm running the tests now, let's see. :) For some reason qemu refuses to boot the OpenSUSE Leap 15.1 image made this way, I haven't really looked into that yet.Huh. I ran into a bunch of problems with the OpenSUSE Leap images when I tried to do the image preparation stuff for them. But when I rolled that back and just did the image download separate, it seemed to work for me. Well... that is, it boots up and executes commands okay.It took me a bit to figure out because the prepared images actually work, but the test doesn't use them -- it's trying to use a temporary file that doesn't exist anymore.Um, what prepared images? AFAICT my Makefile only generates prepared images for Debian, Fedora and the newer Ubuntu cases. For SuSE and the older Ubuntu the test scripts now have qemu-img commands creating temporary images from the pre-downlaoded images (added in patch 13/15).
On Wed, Jul 13, 2022 at 08:04:14AM +0200, Stefano Brivio wrote:On Wed, 13 Jul 2022 12:11:24 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:Ah, dammit, you're right. In fact OPENSUSE_IMGS is in the list in 13/15, then it's incorrectly removed in 14/15. IIRC, I took it off the download list, because I got some weird results which I thought meant that just the download patch was breaking the opensuse tests. Eventually realized I was misinterpreting the results, but forgot to put it back in the list. Didn't catch it because the downloads were so slow I never removed the images to try the build from scratch. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibsonOn Tue, Jul 12, 2022 at 02:13:07PM +0200, Stefano Brivio wrote:Oops, right, I missed that, I was confused by the fact that the image didn't exist. I guess DOWNLOAD_ASSETS (from patch 13/15) in test/Makefile should also include OPENSUSE_IMGS, that's all. Added, re-running the whole thing now.On Tue, 12 Jul 2022 18:26:37 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:No. I fiddled around with handling the SuSE and older Ubuntu images, got bogged down in details and decided to postpone that until a later time. So I'm deliberately only handling the images which can be handled by the common script I added there for now.On Mon, Jul 11, 2022 at 11:42:09AM +0200, Stefano Brivio wrote: > On Thu, 7 Jul 2022 16:53:11 +0200 > Stefano Brivio <sbrivio(a)redhat.com> wrote: > > > [...] > > > > I'm running the tests now, let's see. :) > > For some reason qemu refuses to boot the OpenSUSE Leap 15.1 image made > this way, I haven't really looked into that yet. Huh. I ran into a bunch of problems with the OpenSUSE Leap images when I tried to do the image preparation stuff for them. But when I rolled that back and just did the image download separate, it seemed to work for me. Well... that is, it boots up and executes commands okay.Ah, wait a moment, did you perhaps forget to commit the distro/opensuse part for patch 14/15? The changes for distro/debian and distro/fedora in that patch look complete, distro/ubuntu has changes just for two versions, and distro/opensuse is not changed by that patch at all.It took me a bit to figure out because the prepared images actually work, but the test doesn't use them -- it's trying to use a temporary file that doesn't exist anymore.Um, what prepared images? AFAICT my Makefile only generates prepared images for Debian, Fedora and the newer Ubuntu cases. For SuSE and the older Ubuntu the test scripts now have qemu-img commands creating temporary images from the pre-downlaoded images (added in patch 13/15).
On Wed, 6 Jul 2022 17:28:54 +1000 David Gibson <david(a)gibson.dropbear.id.au> wrote:This set supersedes the previous "batch 3" which had some problems. This fixes a number of problems I've encountered trying to run the passt tests on a Fedora host. It also makes a number of small cleanups and improvements to the test running framework. David Gibson (14): Handle the case of a DNS server on localhost tests: qemu-system-ppc64le isn't a thing Invoke specific qemu-system-* binaries tests: Introduce makefile for building test assets tests: Move mbuto download and execution to asset build tests: Search multiple places for aarch64 EDK2 bios image Clean up passt.pid file tests: Remove unused set_mode() function tests: Remove not-very-useful "req" directive tests: Don't automatically traverse directories of test files tests: Explicitly list test files in test/run, remove "onlyfor" support tests: Move distro image download to asset build makefile tests: Prepare distro images during asset build phase tests: Remove unused DNS6 calculation from fedora tests Stefano Brivio (1): test: Add external mbuto profile, drop udhcpc, and switch to itApplied without 1/15 (superseded) and with minimal modifications to 13/15 (OPENSUSE_IMGS added to download assets in Makefile, dropped spurious -O options from xzcat command in distro/opensuse). Thanks! -- Stefano