Skip to content

Commit

Permalink
automation: add x86_64 test (linux argo)
Browse files Browse the repository at this point in the history
Add x86_64 hardware test that creates a Xen Argo communication
connection between two PVH domains. In the test, dom0 creates a domU and
listens for messages sent by the domU through Argo.

To accomplish this, build Xen with CONFIG_ARGO=y and create a CI test job.

Update the xilinx x86_64 test script to support the new test, and add
"sync_console" to command line to avoid an issue with console messages
being lost.

Requested-by: Stefano Stabellini <[email protected]>
Signed-off-by: Victor Lira <[email protected]>
Reviewed-by: Stefano Stabellini <[email protected]>
  • Loading branch information
Victor Lira authored and sstabellini committed Oct 30, 2024
1 parent 56bd769 commit 6d7c26a
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 25 deletions.
4 changes: 4 additions & 0 deletions automation/gitlab-ci/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,10 @@ alpine-3.18-gcc-debug:
variables:
CONTAINER: alpine:3.18
BUILD_QEMU_XEN: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_ARGO=y
debian-bookworm-gcc-debug:
extends: .gcc-x86-64-build-debug
Expand Down
16 changes: 16 additions & 0 deletions automation/gitlab-ci/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,22 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
- *x86-64-test-needs
- alpine-3.18-gcc-debug

xilinx-smoke-dom0-x86_64-gcc-debug-argo:
extends: .xilinx-x86_64
script:
- ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
needs:
- alpine-3.18-gcc-debug
- project: xen-project/hardware/test-artifacts
job: x86_64-kernel-linux-6.6.56
ref: master
- project: xen-project/hardware/test-artifacts
job: x86_64-rootfs-alpine-3.18
ref: master
- project: xen-project/hardware/test-artifacts
job: x86_64-argo-linux-6.6.56
ref: master

adl-smoke-x86-64-gcc-debug:
extends: .adl-x86-64
script:
Expand Down
76 changes: 51 additions & 25 deletions automation/scripts/xilinx-smoke-dom0-x86_64.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ fatal() {
exit 1
}

WORKDIR="${PWD}"

# Test parameter defaults.
TEST="$1"
PASS_MSG="Test passed: ${TEST}"
Expand All @@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
ramdisk = "/boot/initrd-domU"
extra = "root=/dev/ram0 console=hvc0"
memory = 512
vif = [ "bridge=xenbr0", ]
disk = [ ]
'
DOMU_CFG_EXTRA=""
copy_domU_files () { :; }
copy_dom0_files () { :; }

# Select test variant.
if [ "${TEST}" = "ping" ]; then
Expand All @@ -39,13 +42,49 @@ done
echo \"${DOMU_MSG}\"
"
DOM0_CMD="
brctl addbr xenbr0
brctl addif xenbr0 eth0
ifconfig eth0 up
ifconfig xenbr0 up
ifconfig xenbr0 192.168.0.1
# get domU console content into test log
tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
xl create /etc/xen/domU.cfg
set +x
until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
sleep 1
done
set -x
echo \"${PASS_MSG}\"
"
DOMU_CFG_EXTRA='
vif = [ "bridge=xenbr0", ]
disk = [ ]
'
elif [ "${TEST}" = "argo" ]
then
PASS_MSG="TEST: Message from DOMU"
XEN_CMD_EXTRA="argo=1,mac-permissive=1"
DOMU_CMD="
insmod /root/xen-argo.ko
until false
do
echo \"${PASS_MSG}\"
sleep 1
done | argo-exec -p 28333 -d 0 -- /bin/echo
"
DOM0_CMD="
insmod /root/xen-argo.ko
xl create /etc/xen/domU.cfg
argo-exec -l -p 28333 -- /bin/echo
"
copy_dom0_files ()
{
cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
}
copy_domU_files () { copy_dom0_files; }
else
fatal "Unknown test: ${TEST}"
fi
Expand All @@ -54,18 +93,18 @@ fi
mkdir -p rootfs
cd rootfs
tar xzf ../binaries/initrd.tar.gz
mkdir proc
mkdir run
mkdir srv
mkdir sys
mkdir proc run srv sys
rm var/run
echo "#!/bin/sh
set -x
export LD_LIBRARY_PATH=/usr/local/lib
PATH=/usr/local/bin:/usr/local/sbin:\$PATH
${DOMU_CMD}
" > etc/local.d/xen.start
chmod +x etc/local.d/xen.start
echo "rc_verbose=yes" >> etc/rc.conf
sed -i -e 's/^Welcome/domU \0/' etc/issue
copy_domU_files
find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
cd ..
rm -rf rootfs
Expand All @@ -74,37 +113,24 @@ rm -rf rootfs
mkdir -p rootfs
cd rootfs
tar xzf ../binaries/initrd.tar.gz
mkdir boot
mkdir proc
mkdir run
mkdir srv
mkdir sys
mkdir boot proc run srv sys
rm var/run
cp -ar ../binaries/dist/install/* .
echo "#!/bin/bash
set -x
export LD_LIBRARY_PATH=/usr/local/lib
bash /etc/init.d/xencommons start
brctl addbr xenbr0
brctl addif xenbr0 eth0
ifconfig eth0 up
ifconfig xenbr0 up
ifconfig xenbr0 192.168.0.1
# get domU console content into test log
tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
xl create /etc/xen/domU.cfg
${DOM0_CMD}
" > etc/local.d/xen.start
chmod +x etc/local.d/xen.start
echo "${DOMU_CFG}" > etc/xen/domU.cfg
echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
echo "rc_verbose=yes" >> etc/rc.conf
echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
mkdir -p var/log/xen/console
cp ../binaries/bzImage boot/vmlinuz
cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
copy_dom0_files
find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
cd ..

Expand All @@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
echo "
net_default_server=10.0.6.1
multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
module2 (tftp)/${TEST_BOARD}/initrd-dom0
boot
Expand Down

0 comments on commit 6d7c26a

Please sign in to comment.