mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
automation: add a QEMU based x86_64 Dom0/DomU test
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> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
This commit is contained in:
1 parent
d07af6949f
commit
3030a73bf8
2 files changed
+119
No files matched your search
@@ -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-x86_64.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}
|
||||
|
||||
Executable
+95
@@ -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
|
||||