Message ID | 20211026014200.32102-3-sstabellini@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | automation: introduce an x86_64 Dom0/DomU test | expand |
On Mon, Oct 25, 2021 at 06:42:00PM -0700, Stefano Stabellini wrote: > From: Stefano Stabellini <stefano.stabellini@xilinx.com> > > Introduce a test based on QEMU to run Xen, Dom0 and start a DomU. > This is similar to the existing qemu-alpine-arm64.sh script and test. > The only differences are: > - use Debian's qemu-system-x86_64 (on ARM we build our own) > - use ipxe instead of u-boot and ImageBuilder > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com> > --- > automation/gitlab-ci/test.yaml | 24 ++++++ > automation/scripts/qemu-alpine-x86_64.sh | 95 ++++++++++++++++++++++++ > 2 files changed, 119 insertions(+) > create mode 100755 automation/scripts/qemu-alpine-x86_64.sh > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > index 91a10febbf..43d248a604 100644 > --- a/automation/gitlab-ci/test.yaml > +++ b/automation/gitlab-ci/test.yaml > @@ -47,6 +47,30 @@ qemu-alpine-arm64-gcc: > - /^coverity-tested\/.*/ > - /^stable-.*/ > > +qemu-alpine-x86_64-gcc: > + stage: test > + image: registry.gitlab.com/xen-project/xen/${CONTAINER} > + variables: > + CONTAINER: debian:stretch > + script: > + - ./automation/scripts/qemu-alpine-x86_64.sh 2>&1 | tee qemu-smoke-arm64.log Maybe the log file should be called "qemu-smoke-x86_64.log" ? Or just "qemu-smoke.log"? I'm still not happy about the `apt install` in the middle of the test, but I guess that will do for now: Reviewed-by: Anthony PERARD <anthony.perard@citrix.com> Thanks,
On Wed, 27 Oct 2021, Anthony PERARD wrote: > On Mon, Oct 25, 2021 at 06:42:00PM -0700, Stefano Stabellini wrote: > > From: Stefano Stabellini <stefano.stabellini@xilinx.com> > > > > Introduce a test based on QEMU to run Xen, Dom0 and start a DomU. > > This is similar to the existing qemu-alpine-arm64.sh script and test. > > The only differences are: > > - use Debian's qemu-system-x86_64 (on ARM we build our own) > > - use ipxe instead of u-boot and ImageBuilder > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com> > > --- > > automation/gitlab-ci/test.yaml | 24 ++++++ > > automation/scripts/qemu-alpine-x86_64.sh | 95 ++++++++++++++++++++++++ > > 2 files changed, 119 insertions(+) > > create mode 100755 automation/scripts/qemu-alpine-x86_64.sh > > > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml > > index 91a10febbf..43d248a604 100644 > > --- a/automation/gitlab-ci/test.yaml > > +++ b/automation/gitlab-ci/test.yaml > > @@ -47,6 +47,30 @@ qemu-alpine-arm64-gcc: > > - /^coverity-tested\/.*/ > > - /^stable-.*/ > > > > +qemu-alpine-x86_64-gcc: > > + stage: test > > + image: registry.gitlab.com/xen-project/xen/${CONTAINER} > > + variables: > > + CONTAINER: debian:stretch > > + script: > > + - ./automation/scripts/qemu-alpine-x86_64.sh 2>&1 | tee qemu-smoke-arm64.log > > Maybe the log file should be called "qemu-smoke-x86_64.log" ? Or just > "qemu-smoke.log"? Good catch! This could be fixed on commit. > I'm still not happy about the `apt install` in the middle of the test, > but I guess that will do for now: > > Reviewed-by: Anthony PERARD <anthony.perard@citrix.com> Thanks! Now the series is fully acked and Ian gave his reviewed-by. If people are OK with that I could commit it in a couple of days (and by the end of this week).
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml index 91a10febbf..43d248a604 100644 --- a/automation/gitlab-ci/test.yaml +++ b/automation/gitlab-ci/test.yaml @@ -47,6 +47,30 @@ qemu-alpine-arm64-gcc: - /^coverity-tested\/.*/ - /^stable-.*/ +qemu-alpine-x86_64-gcc: + stage: test + image: registry.gitlab.com/xen-project/xen/${CONTAINER} + variables: + CONTAINER: debian:stretch + script: + - ./automation/scripts/qemu-alpine-x86_64.sh 2>&1 | tee qemu-smoke-arm64.log + dependencies: + - alpine-3.12-gcc + - alpine-3.12-rootfs-export + - kernel-5.10.74-export + artifacts: + paths: + - smoke.serial + - '*.log' + when: always + tags: + - x86_64 + except: + - master + - smoke + - /^coverity-tested\/.*/ + - /^stable-.*/ + qemu-smoke-arm64-gcc: stage: test image: registry.gitlab.com/xen-project/xen/${CONTAINER} diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh new file mode 100755 index 0000000000..2e9625109c --- /dev/null +++ b/automation/scripts/qemu-alpine-x86_64.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +set -ex + +apt-get -qy update +apt-get -qy install --no-install-recommends cpio \ + busybox-static + +# DomU Busybox +cd binaries +mkdir -p initrd +mkdir -p initrd/bin +mkdir -p initrd/sbin +mkdir -p initrd/etc +mkdir -p initrd/dev +mkdir -p initrd/proc +mkdir -p initrd/sys +mkdir -p initrd/lib +mkdir -p initrd/var +mkdir -p initrd/mnt +cp /bin/busybox initrd/bin/busybox +initrd/bin/busybox --install initrd/bin +echo "#!/bin/sh + +mount -t proc proc /proc +mount -t sysfs sysfs /sys +mount -t devtmpfs devtmpfs /dev +/bin/sh" > initrd/init +chmod +x initrd/init +# DomU rootfs +cd initrd +find . | cpio --create --format='newc' | gzip > ../initrd.cpio.gz +cd .. + +# initrd.tar.gz is Dom0 rootfs +mkdir -p rootfs +cd rootfs +tar xvzf ../initrd.tar.gz +mkdir proc +mkdir run +mkdir srv +mkdir sys +rm var/run +cp -ar ../dist/install/* . +mv ../initrd.cpio.gz ./root +cp ../bzImage ./root +echo "name=\"test\" +memory=512 +vcpus=1 +kernel=\"/root/bzImage\" +ramdisk=\"/root/initrd.cpio.gz\" +extra=\"console=hvc0 root=/dev/ram0 rdinit=/bin/sh\" +" > root/test.cfg +echo "#!/bin/bash + +set -x + +export LD_LIBRARY_PATH=/usr/local/lib +bash /etc/init.d/xencommons start + +xl list + +xl create -c /root/test.cfg + +" > etc/local.d/xen.start +chmod +x etc/local.d/xen.start +echo "rc_verbose=yes" >> etc/rc.conf +# rebuild Dom0 rootfs +find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz +cd ../.. + +cat >> binaries/pxelinux.0 << EOF +#!ipxe + +kernel xen console=com1 +module bzImage console=hvc0 +module xen-rootfs.cpio.gz +boot +EOF + +# Run the test +rm -f smoke.serial +set +e +timeout -k 1 720 \ +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 |& tee smoke.serial + +set -e +(grep -q "Domain-0" smoke.serial && grep -q "BusyBox" smoke.serial) || exit 1 +exit 0