xref: /cloud-hypervisor/scripts/run_integration_tests_live_migration.sh (revision f67b3f79ea19c9a66e04074cbbf5d292f6529e43)
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