32c5e05479
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@gibson.dropbear.id.au> [sbrivio: Add OPENSUSE_IMGS to DOWNLOAD_ASSETS in Makefile, and note that xzcat doesn't take a -O option in test/distro/opensuse] Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
207 lines
8 KiB
Text
207 lines
8 KiB
Text
# 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/distro/ubuntu - Ubuntu builds, get packages via passt, test pasta
|
|
#
|
|
# Copyright (c) 2021 Red Hat GmbH
|
|
# Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
temp PIDFILE
|
|
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
|
|
host (nc -w1 -6 -l -p 10000 > /tmp/init_msg; echo "from_init" | nc -q0 ::1 9999) &
|
|
hostb ./pasta
|
|
sleep 1
|
|
host PS1='$ '
|
|
host nc -w1 -6 -l -p 9999 > /tmp/ns_msg &
|
|
sleep 2
|
|
host echo "from_ns" | nc -q0 ::1 10000
|
|
sleep 2
|
|
host echo
|
|
sleep 1
|
|
hout NS_MSG cat /tmp/ns_msg
|
|
check [ __NS_MSG__ = "from_init" ]
|
|
hostb exit
|
|
host echo
|
|
hout INIT_MSG cat /tmp/init_msg
|
|
check [ __INIT_MSG__ = "from_ns" ]
|
|
endef
|
|
|
|
# Start passt, set common variables
|
|
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 Ubuntu 14.04.5 LTS (Trusty Tahr), amd64
|
|
|
|
temp 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
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-container.conf
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-local.conf
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-nonet.conf
|
|
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-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
|
|
host apt-get -y install make gcc netcat-openbsd
|
|
|
|
host make clean
|
|
host CFLAGS="-Wno-missing-field-initializers -Wno-missing-braces -Wno-type-limits" make
|
|
|
|
# TODO: pasta test skipped for the moment: clone() as called by NS_CALL hangs
|
|
# with wrapper provided by glibc 2.19, probably wrong argument order.
|
|
|
|
hint
|
|
sleep 1
|
|
|
|
# PIDFILE is cleaned up when the next test starts, read it now
|
|
hout PID cat __PIDFILE__
|
|
|
|
|
|
test Ubuntu 14.04.5 LTS (Trusty Tahr), i386
|
|
|
|
temp 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
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-container.conf
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-local.conf
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-nonet.conf
|
|
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-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
|
|
host apt-get -y install make gcc netcat-openbsd
|
|
|
|
host make clean
|
|
host CFLAGS="-Wno-missing-field-initializers -Wno-missing-braces -Wno-type-limits -Wno-sign-compare" make
|
|
|
|
# TODO: pasta test skipped for the moment: clone() as called by NS_CALL hangs
|
|
# with wrapper provided by glibc 2.19, probably wrong argument order.
|
|
|
|
hint
|
|
sleep 1
|
|
|
|
|
|
test Ubuntu 14.04.5 LTS (Trusty Tahr), ppc64le
|
|
|
|
temp 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
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-container.conf
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-local.conf
|
|
host guestfish --rw -a __IMG__ -i rm /etc/init/cloud-init-nonet.conf
|
|
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-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
|
|
host apt-get -y install make gcc netcat-openbsd
|
|
|
|
host make clean
|
|
host CFLAGS="-Wno-missing-field-initializers -Wno-missing-braces -Wno-type-limits -Wno-sign-compare" make
|
|
|
|
# TODO: pasta test skipped for the moment: clone() as called by NS_CALL hangs
|
|
# with wrapper provided by glibc 2.19, probably wrong argument order.
|
|
|
|
hint
|
|
sleep 1
|
|
hostb reset
|
|
sleep 1
|
|
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 PS1='$ '
|
|
host dhclient -4
|
|
# Skip apt-get update here: some updates to xenial-updates around 2022-01-30
|
|
# broke dependencies for libc6 and gcc-5 -- note that powerpc is not officially
|
|
# supported on this version
|
|
host apt-get -y install make gcc netcat-openbsd
|
|
|
|
host make clean
|
|
host CFLAGS="-Werror" make
|
|
|
|
distro_quick_pasta_test
|
|
|
|
hint
|
|
sleep 1
|
|
hostb reset
|
|
sleep 1
|
|
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 service systemd-resolved stop
|
|
host export DEBIAN_FRONTEND=noninteractive
|
|
host apt-get -y remove needrestart snapd
|
|
host dhclient -4
|
|
sleep 2
|
|
host apt-get update
|
|
host apt-get -y install make gcc netcat-openbsd
|
|
|
|
host make clean
|
|
host CFLAGS="-Werror" make
|
|
|
|
host export SHELL="/bin/dash"
|
|
host dash
|
|
distro_quick_pasta_test
|
|
|
|
hint
|
|
sleep 1
|
|
hostb reset
|
|
sleep 1
|
|
host echo
|
|
|
|
|
|
host kill __PID__
|