[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1 1/2] CI: Add driver domains tests
Setup a simple two domU system. One with network backend, running xendriverdomain service, and one with frontend, trying to ping the backend. Contrary to other similar tests, use disk image instead of initrd, to allow bigger rootfs without adding more RAM (for both dom0 and domU). But keep using pxelinux as a bootloader as it's easier to setup than installing grub on the disk. Theoretically, it could be started via direct kernel boot in QEMU, but pxelinux is slightly closer to real-world deployment. Signed-off-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx> --- automation/gitlab-ci/test.yaml | 8 +- automation/scripts/qemu-driverdomains-x86_64.sh | 116 +++++++++++++++++- 2 files changed, 124 insertions(+) create mode 100755 automation/scripts/qemu-driverdomains-x86_64.sh diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 1f0b27b2378a..5c4b2dc304b4 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -656,6 +656,14 @@ qemu-alpine-x86_64-gcc: - *x86-64-test-needs - alpine-3.18-gcc +qemu-alpine-driverdomains-x86_64-gcc: + extends: .qemu-x86-64 + script: + - ./automation/scripts/qemu-driverdomains-x86_64.sh 2>&1 | tee ${LOGFILE} + needs: + - *x86-64-test-needs + - alpine-3.18-gcc + qemu-smoke-x86-64-gcc: extends: .qemu-smoke-x86-64 script: diff --git a/automation/scripts/qemu-driverdomains-x86_64.sh b/automation/scripts/qemu-driverdomains-x86_64.sh new file mode 100755 index 000000000000..1caaede7722e --- /dev/null +++ b/automation/scripts/qemu-driverdomains-x86_64.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +set -ex -o pipefail + +dom0_rootfs_extra_comp=() +dom0_rootfs_extra_uncomp=() + +cd binaries + +# DomU rootfs + +mkdir -p rootfs +cd rootfs +mkdir -p etc/local.d +passed="ping test passed" +echo "#!/bin/bash + +set -x + +if grep -q test=backend /proc/cmdline; then + brctl addbr xenbr0 + ip link set xenbr0 up + ip addr add 192.168.0.1/24 dev xenbr0 + bash /etc/init.d/xendriverdomain start + # log backend-related logs to the console + tail -F /var/log/xen/xldevd.log /var/log/xen/xen-hotplug.log >>/dev/console 2>/dev/null & +else + ip link set eth0 up + ip addr add 192.168.0.2/24 dev eth0 + until ping -c 10 192.168.0.1; do + sleep 1 + done + echo \"${passed}\" +fi + +" > etc/local.d/xen.start +chmod +x etc/local.d/xen.start +zcat ../rootfs.cpio.gz | cpio -imd +zcat ../xen-tools.cpio.gz | cpio -imd +mkfs.ext4 -d . ../domU-rootfs.img 1024M +cd .. +rm -rf rootfs + +# Dom0 rootfs +mkdir -p rootfs +cd rootfs +zcat ../rootfs.cpio.gz | cpio -imd +zcat ../xen-tools.cpio.gz | cpio -imd +mkdir -p root etc/local.d +echo "name=\"backend\" +memory=512 +vcpus=1 +kernel=\"/root/bzImage\" +extra=\"console=hvc0 root=/dev/xvda net.ifnames=0 test=backend\" +disk=[ '/root/domU-rootfs-b.img,raw,xvda,rw' ] +" > root/backend.cfg +echo "name=\"frontend\" +memory=512 +vcpus=1 +kernel=\"/root/bzImage\" +extra=\"console=hvc0 root=/dev/xvda net.ifnames=0 test=frontend\" +disk=[ '/root/domU-rootfs-f.img,raw,xvda,rw' ] +vif=[ 'bridge=xenbr0,backend=backend' ] +" > root/frontend.cfg +echo "#!/bin/bash + +set -x + +bash /etc/init.d/xencommons start + +xl list + +tail -F /var/log/xen/console/guest-backend.log 2>/dev/null | sed -e \"s/^/(backend) /\" & +tail -F /var/log/xen/console/guest-frontend.log 2>/dev/null | sed -e \"s/^/(frontend) /\" & +xl -vvv create /root/backend.cfg +xl -vvv create /root/frontend.cfg +" > etc/local.d/xen.start +chmod +x etc/local.d/xen.start + +cp ../domU-rootfs.img ./root/domU-rootfs-b.img +cp ../domU-rootfs.img ./root/domU-rootfs-f.img +cp ../bzImage ./root/ +mkdir -p etc/default +echo 'XENCONSOLED_TRACE=all' >> etc/default/xencommons +mkdir -p var/log/xen/console +mkfs.ext4 -d . ../dom0-rootfs.img 2048M +cd .. +rm -rf rootfs + +cd .. + +cat >> binaries/pxelinux.0 << EOF +#!ipxe + +kernel xen console=com1 console_timestamps=boot +module bzImage console=hvc0 root=/dev/sda net.ifnames=0 +boot +EOF + +# Run the test +rm -f smoke.serial +export TEST_CMD="qemu-system-x86_64 \ + -cpu qemu64,+svm \ + -m 2G -smp 2 \ + -monitor none -serial stdio \ + -nographic \ + -device virtio-net-pci,netdev=n0 \ + -netdev user,id=n0,tftp=binaries,bootfile=/pxelinux.0 \ + -drive file=binaries/dom0-rootfs.img,format=raw" + +export TEST_LOG="smoke.serial" +export BOOT_MSG="Latest ChangeSet: " +export LOG_MSG="Domain-0" +export PASSED="$passed" + +./automation/scripts/console.exp | sed 's/\r\+$//' -- git-series 0.9.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |