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

Re: [Xen-devel] [PATCH 02/10] Introduce cirros tests



On Sat, 25 Mar 2017, Géza Gémes wrote:
> Add support for using cirros images in raisin tests
> 
> Signed-off-by: Géza Gémes <geza.gemes@xxxxxxxxx>

It looks good to me, thanks!

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
>  lib/common-functions.sh            |  33 +++++++++++
>  lib/common-tests.sh                | 109 
> +++++++++++++++++++++++++++++++++++++
>  tests-configs/config-cirros_x86_32 |  13 +++++
>  tests-configs/config-cirros_x86_64 |  13 +++++
>  4 files changed, 168 insertions(+)
>  create mode 100644 tests-configs/config-cirros_x86_32
>  create mode 100644 tests-configs/config-cirros_x86_64
> 
> diff --git a/lib/common-functions.sh b/lib/common-functions.sh
> index d4476f3..efc92ff 100644
> --- a/lib/common-functions.sh
> +++ b/lib/common-functions.sh
> @@ -439,3 +439,36 @@ function uninstall_package() {
>          error_echo "Don't know how to uninstall packages on $DISTRO"
>      fi
>  }
> +
> +function get-qemu-img() {
> +    set +e
> +    QEMU_IMG=`which qemu-img`
> +    set -e
> +    if [[ -z "$QEMU_IMG" ]]
> +    then
> +        QEMU_IMG="/usr/lib/xen/bin/qemu-img"
> +    fi
> +    if [[ -x $QEMU_IMG ]]
> +    then
> +        export QEMU_IMG
> +    else
> +        error_echo "No working qemu-img found! Some tests may fail!"
> +    fi
> +}
> +
> +function get-pvgrub() {
> +    local arch=$1
> +    set +e
> +    PVGRUB=`which grub-${arch}-xen`
> +    set -e
> +    if [[ -z "$PVGRUB" ]]
> +    then
> +        PVGRUB="/usr/lib/xen/boot/grub-${arch}-xen"
> +    fi
> +    if [[ -f $PVGRUB ]]
> +    then
> +        export PVGRUB
> +    else
> +        error_echo "No working pvgrub found! Some tests may fail!"
> +    fi
> +}
> diff --git a/lib/common-tests.sh b/lib/common-tests.sh
> index d346af4..c07bb18 100644
> --- a/lib/common-tests.sh
> +++ b/lib/common-tests.sh
> @@ -178,3 +178,112 @@ function get_host_initrd() {
>          exit 1
>      fi
>  }
> +
> +function cirros_network_init() {
> +    rootdir=$1
> +    ifile=`mktemp`
> +    # Create static network config
> +    cat >$ifile <<EOF
> +auto lo
> +iface lo inet loopback
> +
> +auto eth0
> +iface eth0 inet static
> +    address 169.254.0.2
> +    network 169.254.0.0
> +    broadcast 169.254.0.255
> +    netmask 255.255.255.0
> +EOF
> +    $SUDO mv -f $ifile $rootdir/etc/network/interfaces
> +    # Disable cloud-init
> +    $SUDO rm -f ${rootdir}/etc/rc3.d/S*cirros*ds*
> +    $SUDO rm -f ${rootdir}/etc/rc3.d/S*-cirros-userdata
> +}
> +
> +function get_cirros_kernel() {
> +    bootdir=$1
> +    basename `find $bootdir -name vmlinuz* 2>/dev/null | head -1`
> +}
> +
> +function get_cirros_initrd() {
> +    bootdir=$1
> +    basename `find $bootdir -name initrd* 2>/dev/null | head -1`
> +}
> +
> +function cirros_grub_cfg() {
> +    rootdir=$1
> +    get-pvgrub $CIRROS_ARCH
> +    grubroot="`echo $CIRROS_GRUB_CFG | cut -d ')' -f 1`)"
> +    grubcfg="`echo $CIRROS_GRUB_CFG | cut -d ')' -f 2`"
> +    grubdir=`dirname $grubcfg`
> +    bootdir=`dirname $grubdir`
> +    tmpgrubcfg=`mktemp`
> +    cat > $tmpgrubcfg <<EOF
> +root="$grubroot"
> +insmod xzio
> +insmod gzio
> +insmod btrfs
> +insmod ext2
> +set timeout=1
> +set default=0
> +menuentry Cirros {
> +    linux `echo $bootdir`/`get_cirros_kernel ${rootdir}/${bootdir}` 
> root=/dev/xvda1 ro
> +    initrd `echo $bootdir`/`get_cirros_initrd ${rootdir}/${bootdir}`
> +}
> +EOF
> +    $SUDO mv -f $tmpgrubcfg ${rootdir}/${grubcfg}
> +}
> +
> +function download_cirros_components() {
> +    . tests-configs/config-cirros_$RAISIN_ARCH
> +    mkdir -p $CIRROS_DOWNLOADS
> +    if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_KERNEL_FILE ]]
> +    then
> +        verbose_echo "Downloading cirros kernel"
> +        wget -q $CIRROS_KERNEL_URL -P $CIRROS_DOWNLOADS
> +    fi
> +    if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_INITRD_FILE ]]
> +    then
> +        verbose_echo "Downloading cirros initrd"
> +        wget -q $CIRROS_INITRD_URL -P $CIRROS_DOWNLOADS
> +    fi
> +    if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_ROOTFS_FILE ]]
> +    then
> +        verbose_echo "Downloading cirros rootfs"
> +        wget -q $CIRROS_ROOTFS_URL -P $CIRROS_DOWNLOADS
> +        gunzip $CIRROS_DOWNLOADS/$CIRROS_ROOTFS_FILE.gz
> +        local cirros_rootfs_loop=`create_loop 
> $CIRROS_DOWNLOADS/$CIRROS_ROOTFS_FILE`
> +        local cirros_rootfs_mntpt=`mktemp -d`
> +        $SUDO mount $cirros_rootfs_loop $cirros_rootfs_mntpt
> +        cirros_network_init $cirros_rootfs_mntpt
> +        $SUDO umount $cirros_rootfs_mntpt
> +        $SUDO rmdir $cirros_rootfs_mntpt
> +        $SUDO losetup -d $cirros_rootfs_loop
> +    fi
> +    if [[ ! -f $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE ]]
> +    then
> +        verbose_echo "Downloading cirros disk"
> +        wget -q $CIRROS_DISK_URL -P $CIRROS_DOWNLOADS
> +        mv $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE 
> $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE.qcow2
> +        get-qemu-img
> +        $QEMU_IMG convert -f qcow2 -O raw 
> $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE.qcow2 $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE
> +        local cirros_disk_loop=`$SUDO $BASEDIR/scripts/lopartsetup 
> $CIRROS_DOWNLOADS/$CIRROS_DISK_FILE | head -1 |
> +                                cut -d ":" -f 1`
> +        local cirros_disk_mntpt=`mktemp -d`
> +        $SUDO mount $cirros_disk_loop $cirros_disk_mntpt
> +        cirros_network_init $cirros_disk_mntpt
> +        $SUDO umount $cirros_disk_mntpt
> +        $SUDO rmdir $cirros_disk_mntpt
> +        $SUDO losetup -d $cirros_disk_loop
> +    fi
> +}
> +
> +function tear_down_cirros_test() {
> +    testdir=$1
> +    if [[ `$SUDO xl vm-list | grep "raisin-test" | wc -l` -gt 0 ]]
> +    then
> +        $SUDO xl destroy "raisin-test"
> +    fi
> +    verbose_echo "$PREPEND deleting environment of cirros test"
> +    $SUDO rm -rf $testdir
> +}
> diff --git a/tests-configs/config-cirros_x86_32 
> b/tests-configs/config-cirros_x86_32
> new file mode 100644
> index 0000000..628e568
> --- /dev/null
> +++ b/tests-configs/config-cirros_x86_32
> @@ -0,0 +1,13 @@
> +CIRROS_ARCH=i386
> +CIRROS_BASE_URL="https://download.cirros-cloud.net/";
> +CIRROS_VERSION="0.3.5"
> +CIRROS_DOWNLOADS=$BASEDIR/downloads
> +CIRROS_KERNEL_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-kernel
> +CIRROS_INITRD_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-initramfs
> +CIRROS_ROOTFS_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-rootfs.img
> +CIRROS_DISK_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-disk.img
> +CIRROS_KERNEL_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_KERNEL_FILE
> +CIRROS_INITRD_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_INITRD_FILE
> +CIRROS_ROOTFS_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_ROOTFS_FILE.gz
> +CIRROS_DISK_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_DISK_FILE
> +CIRROS_GRUB_CFG="(xen/xvda,msdos1)/boot/grub/grub.cfg"
> diff --git a/tests-configs/config-cirros_x86_64 
> b/tests-configs/config-cirros_x86_64
> new file mode 100644
> index 0000000..7b78316
> --- /dev/null
> +++ b/tests-configs/config-cirros_x86_64
> @@ -0,0 +1,13 @@
> +CIRROS_ARCH=x86_64
> +CIRROS_BASE_URL="https://download.cirros-cloud.net/";
> +CIRROS_VERSION="0.3.5"
> +CIRROS_DOWNLOADS=$BASEDIR/downloads
> +CIRROS_KERNEL_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-kernel
> +CIRROS_INITRD_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-initramfs
> +CIRROS_ROOTFS_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-rootfs.img
> +CIRROS_DISK_FILE=cirros-$CIRROS_VERSION-$CIRROS_ARCH-disk.img
> +CIRROS_KERNEL_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_KERNEL_FILE
> +CIRROS_INITRD_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_INITRD_FILE
> +CIRROS_ROOTFS_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_ROOTFS_FILE.gz
> +CIRROS_DISK_URL=$CIRROS_BASE_URL/$CIRROS_VERSION/$CIRROS_DISK_FILE
> +CIRROS_GRUB_CFG="(xen/xvda,msdos1)/boot/grub/grub.cfg"
> -- 
> 2.7.4
> 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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