1#!/bin/bash 2set -x 3 4source $HOME/.cargo/env 5source $(dirname "$0")/test-util.sh 6 7export BUILD_TARGET=${BUILD_TARGET-x86_64-unknown-linux-gnu} 8 9WORKLOADS_DIR="$HOME/workloads" 10mkdir -p "$WORKLOADS_DIR" 11 12process_common_args "$@" 13 14# For now these values are deafult for kvm 15features_build="" 16features_test="--features integration_tests" 17 18cp scripts/sha1sums-x86_64 $WORKLOADS_DIR 19 20FOCAL_OS_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0.qcow2" 21FOCAL_OS_IMAGE_URL="https://cloud-hypervisor.azureedge.net/$FOCAL_OS_IMAGE_NAME" 22FOCAL_OS_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_IMAGE_NAME" 23if [ ! -f "$FOCAL_OS_IMAGE" ]; then 24 pushd $WORKLOADS_DIR 25 time wget --quiet $FOCAL_OS_IMAGE_URL || exit 1 26 popd 27fi 28 29FOCAL_OS_RAW_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0.raw" 30FOCAL_OS_RAW_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_RAW_IMAGE_NAME" 31if [ ! -f "$FOCAL_OS_RAW_IMAGE" ]; then 32 pushd $WORKLOADS_DIR 33 time qemu-img convert -p -f qcow2 -O raw $FOCAL_OS_IMAGE_NAME $FOCAL_OS_RAW_IMAGE_NAME || exit 1 34 popd 35fi 36 37pushd $WORKLOADS_DIR 38grep focal sha1sums-x86_64 | sha1sum --check 39if [ $? -ne 0 ]; then 40 echo "sha1sum validation of images failed, remove invalid images to fix the issue." 41 exit 1 42fi 43popd 44 45# Build custom kernel based on virtio-pmem and virtio-fs upstream patches 46VMLINUX_IMAGE="$WORKLOADS_DIR/vmlinux" 47 48LINUX_CUSTOM_DIR="$WORKLOADS_DIR/linux-custom" 49 50if [ ! -f "$VMLINUX_IMAGE" ]; then 51 SRCDIR=$PWD 52 pushd $WORKLOADS_DIR 53 time git clone --depth 1 "https://github.com/cloud-hypervisor/linux.git" -b "ch-5.14" $LINUX_CUSTOM_DIR 54 cp $SRCDIR/resources/linux-config-x86_64 $LINUX_CUSTOM_DIR/.config 55 popd 56fi 57 58if [ ! -f "$VMLINUX_IMAGE" ]; then 59 pushd $LINUX_CUSTOM_DIR 60 time make bzImage -j `nproc` 61 cp vmlinux $VMLINUX_IMAGE || exit 1 62 popd 63fi 64 65if [ -d "$LINUX_CUSTOM_DIR" ]; then 66 rm -rf $LINUX_CUSTOM_DIR 67fi 68 69BUILD_TARGET="$(uname -m)-unknown-linux-${CH_LIBC}" 70CFLAGS="" 71TARGET_CC="" 72if [[ "${BUILD_TARGET}" == "x86_64-unknown-linux-musl" ]]; then 73 TARGET_CC="musl-gcc" 74 CFLAGS="-I /usr/include/x86_64-linux-musl/ -idirafter /usr/include/" 75fi 76 77cargo build --all --release $features_build --target $BUILD_TARGET 78strip target/$BUILD_TARGET/release/cloud-hypervisor 79strip target/$BUILD_TARGET/release/vhost_user_net 80strip target/$BUILD_TARGET/release/ch-remote 81 82# Test ovs-dpdk relies on hugepages 83echo 6144 | sudo tee /proc/sys/vm/nr_hugepages 84sudo chmod a+rwX /dev/hugepages 85 86export RUST_BACKTRACE=1 87time cargo test $features_test "tests::live_migration::$test_filter" -- --test-threads=1 88RES=$? 89 90exit $RES 91