diff mbox series

[2/2] automation: qemu-smoke-arm64: Run ping test over a pv network interface

Message ID 20220805211741.1869068-3-burzalodowa@gmail.com (mailing list archive)
State Superseded
Headers show
Series automation: Test a pv network interface under dom0less enhanced | expand

Commit Message

Xenia Ragiadakou Aug. 5, 2022, 9:17 p.m. UTC
This patch modified the test in the following way
- Dom0 is booted with an alpine linux rootfs with the xen tools.
- Once Dom0 is booted, it starts xenstored, calls init-dom0less to setup
the xenstore interface for the dom0less Dom1, setups the bridged network
and attaches a pv network interface to Dom1.
- In the meantime, Dom1 in its init script tries to assign an ip to eth0
and ping Dom0,
- If Dom1 manages to ping Dom0, it prints 'passed'.

Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
---
 automation/gitlab-ci/test.yaml         |  6 ++--
 automation/scripts/qemu-smoke-arm64.sh | 43 +++++++++++++++++++++++---
 2 files changed, 43 insertions(+), 6 deletions(-)

Comments

Stefano Stabellini Aug. 5, 2022, 9:53 p.m. UTC | #1
On Sat, 6 Aug 2022, Xenia Ragiadakou wrote:
> This patch modified the test in the following way
> - Dom0 is booted with an alpine linux rootfs with the xen tools.
> - Once Dom0 is booted, it starts xenstored, calls init-dom0less to setup
> the xenstore interface for the dom0less Dom1, setups the bridged network
> and attaches a pv network interface to Dom1.
> - In the meantime, Dom1 in its init script tries to assign an ip to eth0
> and ping Dom0,
> - If Dom1 manages to ping Dom0, it prints 'passed'.
> 
> Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
> ---
>  automation/gitlab-ci/test.yaml         |  6 ++--
>  automation/scripts/qemu-smoke-arm64.sh | 43 +++++++++++++++++++++++---
>  2 files changed, 43 insertions(+), 6 deletions(-)
> 
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index aa633fb655..2eb6c3866e 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -69,7 +69,8 @@ qemu-smoke-arm64-gcc:
>    script:
>      - ./automation/scripts/qemu-smoke-arm64.sh 2>&1 | tee qemu-smoke-arm64.log
>    needs:
> -    - debian-unstable-gcc-arm64
> +    - alpine-3.12-gcc-arm64
> +    - alpine-3.12-arm64-rootfs-export
>      - kernel-5.19-arm64-export
>      - qemu-system-aarch64-6.0.0-arm64-export
>    artifacts:
> @@ -87,7 +88,8 @@ qemu-smoke-arm64-gcc-staticmem:
>    script:
>      - ./automation/scripts/qemu-smoke-arm64.sh static-mem 2>&1 | tee qemu-smoke-arm64.log
>    needs:
> -    - debian-unstable-gcc-arm64
> +    - alpine-3.12-gcc-arm64
> +    - alpine-3.12-arm64-rootfs-export
>      - kernel-5.19-arm64-export
>      - qemu-system-aarch64-6.0.0-arm64-export
>    artifacts:
> diff --git a/automation/scripts/qemu-smoke-arm64.sh b/automation/scripts/qemu-smoke-arm64.sh
> index b48a20988f..0d19ad52cc 100755
> --- a/automation/scripts/qemu-smoke-arm64.sh
> +++ b/automation/scripts/qemu-smoke-arm64.sh
> @@ -4,8 +4,13 @@ set -ex
>  
>  test_variant=$1
>  
> -passed="BusyBox"
> -check=""
> +passed="passed"
> +check="
> +until ifconfig eth0 192.168.0.2 && ping -c 10 192.168.0.1; do
> +    sleep 30
> +done
> +echo \"${passed}\"
> +"
>  
>  if [[ "${test_variant}" == "static-mem" ]]; then
>      # Memory range that is statically allocated to DOM1
> @@ -68,6 +73,36 @@ cd initrd
>  find . | cpio --create --format='newc' | gzip > ../binaries/initrd
>  cd ..
>  
> +# DOM0 rootfs
> +mkdir -p rootfs
> +cd rootfs
> +tar xzf ../binaries/initrd.tar.gz
> +mkdir proc
> +mkdir run
> +mkdir srv
> +mkdir sys
> +rm var/run
> +cp -ar ../binaries/dist/install/* .
> +
> +echo "#!/bin/bash
> +
> +export LD_LIBRARY_PATH=/usr/local/lib
> +bash /etc/init.d/xencommons start
> +
> +/usr/local/lib/xen/bin/init-dom0less
> +
> +brctl addbr xenbr0
> +brctl addif xenbr0 eth0
> +ifconfig eth0 up
> +ifconfig xenbr0 up
> +ifconfig xenbr0 192.168.0.1
> +
> +xl network-attach 1 type=vif
> +" > etc/local.d/xen.start
> +chmod +x etc/local.d/xen.start
> +echo "rc_verbose=yes" >> etc/rc.conf
> +find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
> +cd ..
>  
>  # ImageBuilder
>  echo 'MEMORY_START="0x40000000"
> @@ -76,7 +111,7 @@ MEMORY_END="0x80000000"
>  DEVICE_TREE="virt-gicv2.dtb"
>  XEN="xen"
>  DOM0_KERNEL="Image"
> -DOM0_RAMDISK="initrd"
> +DOM0_RAMDISK="dom0-rootfs.cpio.gz"
>  XEN_CMD="console=dtuart dom0_mem=512M"
>  
>  NUM_DOMUS=1
> @@ -113,5 +148,5 @@ timeout -k 1 240 \
>      -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
>  
>  set -e
> -(grep -q "^BusyBox" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
> +(grep -q "^Welcome to Alpine Linux 3.12" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
>  exit 0

This patch looks great! One minor comment: Should we great only for
"^Welcome to Alpine Linux" without the version (3.12) to make it easier
to upgrade in the future?

If you are OK with it, I can remove "3.12" on commit.
Stefano Stabellini Aug. 6, 2022, 1:18 a.m. UTC | #2
On Fri, 5 Aug 2022, Stefano Stabellini wrote:
> On Sat, 6 Aug 2022, Xenia Ragiadakou wrote:
> > This patch modified the test in the following way
> > - Dom0 is booted with an alpine linux rootfs with the xen tools.
> > - Once Dom0 is booted, it starts xenstored, calls init-dom0less to setup
> > the xenstore interface for the dom0less Dom1, setups the bridged network
> > and attaches a pv network interface to Dom1.
> > - In the meantime, Dom1 in its init script tries to assign an ip to eth0
> > and ping Dom0,
> > - If Dom1 manages to ping Dom0, it prints 'passed'.
> > 
> > Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>

[...]

> > @@ -113,5 +148,5 @@ timeout -k 1 240 \
> >      -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
> >  
> >  set -e
> > -(grep -q "^BusyBox" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
> > +(grep -q "^Welcome to Alpine Linux 3.12" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
> >  exit 0
> 
> This patch looks great! One minor comment: Should we great only for
> "^Welcome to Alpine Linux" without the version (3.12) to make it easier
> to upgrade in the future?
> 
> If you are OK with it, I can remove "3.12" on commit.

We also need to remove DOMU_ENHANCED[0] from the ImageBuilder config
otherwise this is not going to work.

diff --git a/automation/scripts/qemu-smoke-arm64.sh b/automation/scripts/qemu-smoke-arm64.sh
index a79401fd81..0d19ad52cc 100755
--- a/automation/scripts/qemu-smoke-arm64.sh
+++ b/automation/scripts/qemu-smoke-arm64.sh
@@ -118,7 +118,6 @@ NUM_DOMUS=1
 DOMU_KERNEL[0]="Image"
 DOMU_RAMDISK[0]="initrd"
 DOMU_MEM[0]="256"
-DOMU_ENHANCED[0]=0
 
 LOAD_CMD="tftpb"
 UBOOT_SOURCE="boot.source"
Xenia Ragiadakou Aug. 6, 2022, 7:48 a.m. UTC | #3
Hi Stefano,

On 8/6/22 04:18, Stefano Stabellini wrote:
> On Fri, 5 Aug 2022, Stefano Stabellini wrote:
>> On Sat, 6 Aug 2022, Xenia Ragiadakou wrote:
>>> This patch modified the test in the following way
>>> - Dom0 is booted with an alpine linux rootfs with the xen tools.
>>> - Once Dom0 is booted, it starts xenstored, calls init-dom0less to setup
>>> the xenstore interface for the dom0less Dom1, setups the bridged network
>>> and attaches a pv network interface to Dom1.
>>> - In the meantime, Dom1 in its init script tries to assign an ip to eth0
>>> and ping Dom0,
>>> - If Dom1 manages to ping Dom0, it prints 'passed'.
>>>
>>> Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
> 
> [...]
> 
>>> @@ -113,5 +148,5 @@ timeout -k 1 240 \
>>>       -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
>>>   
>>>   set -e
>>> -(grep -q "^BusyBox" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
>>> +(grep -q "^Welcome to Alpine Linux 3.12" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
>>>   exit 0
>>
>> This patch looks great! One minor comment: Should we great only for
>> "^Welcome to Alpine Linux" without the version (3.12) to make it easier
>> to upgrade in the future?
>>
>> If you are OK with it, I can remove "3.12" on commit.
> 
> We also need to remove DOMU_ENHANCED[0] from the ImageBuilder config
> otherwise this is not going to work.
> 
> diff --git a/automation/scripts/qemu-smoke-arm64.sh b/automation/scripts/qemu-smoke-arm64.sh
> index a79401fd81..0d19ad52cc 100755
> --- a/automation/scripts/qemu-smoke-arm64.sh
> +++ b/automation/scripts/qemu-smoke-arm64.sh
> @@ -118,7 +118,6 @@ NUM_DOMUS=1
>   DOMU_KERNEL[0]="Image"
>   DOMU_RAMDISK[0]="initrd"
>   DOMU_MEM[0]="256"
> -DOMU_ENHANCED[0]=0
>   
>   LOAD_CMD="tftpb"
>   UBOOT_SOURCE="boot.source"

This change was not there when I was testing, that's why.
I will wait a bit in case there are more comments and I will send a v2 
with this fixed and 3.12 removed.
diff mbox series

Patch

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index aa633fb655..2eb6c3866e 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -69,7 +69,8 @@  qemu-smoke-arm64-gcc:
   script:
     - ./automation/scripts/qemu-smoke-arm64.sh 2>&1 | tee qemu-smoke-arm64.log
   needs:
-    - debian-unstable-gcc-arm64
+    - alpine-3.12-gcc-arm64
+    - alpine-3.12-arm64-rootfs-export
     - kernel-5.19-arm64-export
     - qemu-system-aarch64-6.0.0-arm64-export
   artifacts:
@@ -87,7 +88,8 @@  qemu-smoke-arm64-gcc-staticmem:
   script:
     - ./automation/scripts/qemu-smoke-arm64.sh static-mem 2>&1 | tee qemu-smoke-arm64.log
   needs:
-    - debian-unstable-gcc-arm64
+    - alpine-3.12-gcc-arm64
+    - alpine-3.12-arm64-rootfs-export
     - kernel-5.19-arm64-export
     - qemu-system-aarch64-6.0.0-arm64-export
   artifacts:
diff --git a/automation/scripts/qemu-smoke-arm64.sh b/automation/scripts/qemu-smoke-arm64.sh
index b48a20988f..0d19ad52cc 100755
--- a/automation/scripts/qemu-smoke-arm64.sh
+++ b/automation/scripts/qemu-smoke-arm64.sh
@@ -4,8 +4,13 @@  set -ex
 
 test_variant=$1
 
-passed="BusyBox"
-check=""
+passed="passed"
+check="
+until ifconfig eth0 192.168.0.2 && ping -c 10 192.168.0.1; do
+    sleep 30
+done
+echo \"${passed}\"
+"
 
 if [[ "${test_variant}" == "static-mem" ]]; then
     # Memory range that is statically allocated to DOM1
@@ -68,6 +73,36 @@  cd initrd
 find . | cpio --create --format='newc' | gzip > ../binaries/initrd
 cd ..
 
+# DOM0 rootfs
+mkdir -p rootfs
+cd rootfs
+tar xzf ../binaries/initrd.tar.gz
+mkdir proc
+mkdir run
+mkdir srv
+mkdir sys
+rm var/run
+cp -ar ../binaries/dist/install/* .
+
+echo "#!/bin/bash
+
+export LD_LIBRARY_PATH=/usr/local/lib
+bash /etc/init.d/xencommons start
+
+/usr/local/lib/xen/bin/init-dom0less
+
+brctl addbr xenbr0
+brctl addif xenbr0 eth0
+ifconfig eth0 up
+ifconfig xenbr0 up
+ifconfig xenbr0 192.168.0.1
+
+xl network-attach 1 type=vif
+" > etc/local.d/xen.start
+chmod +x etc/local.d/xen.start
+echo "rc_verbose=yes" >> etc/rc.conf
+find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
+cd ..
 
 # ImageBuilder
 echo 'MEMORY_START="0x40000000"
@@ -76,7 +111,7 @@  MEMORY_END="0x80000000"
 DEVICE_TREE="virt-gicv2.dtb"
 XEN="xen"
 DOM0_KERNEL="Image"
-DOM0_RAMDISK="initrd"
+DOM0_RAMDISK="dom0-rootfs.cpio.gz"
 XEN_CMD="console=dtuart dom0_mem=512M"
 
 NUM_DOMUS=1
@@ -113,5 +148,5 @@  timeout -k 1 240 \
     -bios /usr/lib/u-boot/qemu_arm64/u-boot.bin |& tee smoke.serial
 
 set -e
-(grep -q "^BusyBox" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
+(grep -q "^Welcome to Alpine Linux 3.12" smoke.serial && grep -q "DOM1: ${passed}" smoke.serial) || exit 1
 exit 0