[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC XEN PATCH 2/2] automation: add xilinx test (linux argo)



On Tue, 22 Oct 2024, victorm.lira@xxxxxxx wrote:
> From: Victor Lira <victorm.lira@xxxxxxx>
> 
> 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.
> 
> 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.
> 
> Signed-off-by: Victor Lira <victorm.lira@xxxxxxx>
> ---
> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Cc: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> Cc: Doug Goldstein <cardoe@xxxxxxxxxx>
> Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
> ---
>  automation/gitlab-ci/build.yaml               |  6 ++
>  automation/gitlab-ci/test.yaml                | 16 ++++
>  .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
>  3 files changed, 73 insertions(+), 25 deletions(-)
> 
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index c2db69ecf8..f425744f8b 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -340,6 +340,12 @@ 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
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index b27c2be174..2d4709d393 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -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/people/victormlira/test-artifacts

This needs to be changed before commit

Overall this looks great, thank you for exploring this option! Much
better than before.

This patch does some nice refactoring and also add the argo test. I
would ask that you split it into two patches, the first one does the
refactoring, the second one add the argo test



> +      job: x86_64-kernel-linux-6.6.56
> +      ref: vml-tests-separate-artifacts
> +    - project: xen-project/people/victormlira/test-artifacts
> +      job: x86_64-rootfs-alpine-3.18
> +      ref: vml-tests-separate-artifacts
> +    - project: xen-project/people/victormlira/test-artifacts
> +      job: x86_64-argo-linux-6.6.56
> +      ref: vml-tests-separate-artifacts
> +
>  adl-smoke-x86-64-gcc-debug:
>    extends: .adl-x86-64
>    script:
> diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh 
> b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> index 7027f083ba..f70cfdc155 100755
> --- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> +++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> @@ -9,6 +9,8 @@ fatal() {
>      exit 1
>  }
> 
> +WORKDIR="${PWD}"
> +
>  # Test parameter defaults.
>  TEST="$1"
>  PASS_MSG="Test passed: ${TEST}"
> @@ -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
> @@ -39,6 +42,14 @@ 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

This is something that should go in the refactoring patch


>  set +x
>  until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
>      sleep 1
> @@ -46,6 +57,34 @@ 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
> @@ -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
> @@ -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 ..
> 
> @@ -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
> --
> 2.25.1
> 

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.