xref: /cloud-hypervisor/scripts/run_integration_tests_live_migration.sh (revision 2b05753716936506ed440863fe6a29dfc7a427e2)
191fe48d5SPhilipp Schuster#!/usr/bin/env bash
22b2d0065SRuslan Mstoi# shellcheck disable=SC2048,SC2086
3a1a0bc85SBo Chenset -x
4a1a0bc85SBo Chen
52b2d0065SRuslan Mstoi# shellcheck source=/dev/null
62b2d0065SRuslan Mstoisource "$HOME"/.cargo/env
72b2d0065SRuslan Mstoisource "$(dirname "$0")"/test-util.sh
8a1a0bc85SBo Chen
9a1a0bc85SBo ChenWORKLOADS_DIR="$HOME/workloads"
10a1a0bc85SBo Chenmkdir -p "$WORKLOADS_DIR"
11a1a0bc85SBo Chen
12a1a0bc85SBo Chenprocess_common_args "$@"
13a1a0bc85SBo Chen
145b05e0cdSBo Chen# For now these values are default for kvm
15d83fc7f6SRob Bradfordtest_features=""
16a1a0bc85SBo Chen
176454c677SMuminul Islamif [ "$hypervisor" = "mshv" ]; then
18219716c3SBo Chen    test_features="--features mshv"
196454c677SMuminul Islamfi
206454c677SMuminul Islam
212b2d0065SRuslan Mstoicp scripts/sha1sums-x86_64 "$WORKLOADS_DIR"
22a1a0bc85SBo Chen
23a1a0bc85SBo ChenFOCAL_OS_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0.qcow2"
2405ec6190SRavi kumar VeeramallyFOCAL_OS_IMAGE_URL="https://ch-images.azureedge.net/$FOCAL_OS_IMAGE_NAME"
25a1a0bc85SBo ChenFOCAL_OS_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_IMAGE_NAME"
26a1a0bc85SBo Chenif [ ! -f "$FOCAL_OS_IMAGE" ]; then
272b2d0065SRuslan Mstoi    pushd "$WORKLOADS_DIR" || exit
28a1a0bc85SBo Chen    time wget --quiet $FOCAL_OS_IMAGE_URL || exit 1
292b2d0065SRuslan Mstoi    popd || exit
30a1a0bc85SBo Chenfi
31a1a0bc85SBo Chen
32a1a0bc85SBo ChenFOCAL_OS_RAW_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0.raw"
33a1a0bc85SBo ChenFOCAL_OS_RAW_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_RAW_IMAGE_NAME"
34a1a0bc85SBo Chenif [ ! -f "$FOCAL_OS_RAW_IMAGE" ]; then
352b2d0065SRuslan Mstoi    pushd "$WORKLOADS_DIR" || exit
36a1a0bc85SBo Chen    time qemu-img convert -p -f qcow2 -O raw $FOCAL_OS_IMAGE_NAME $FOCAL_OS_RAW_IMAGE_NAME || exit 1
372b2d0065SRuslan Mstoi    popd || exit
38a1a0bc85SBo Chenfi
39a1a0bc85SBo Chen
402b2d0065SRuslan Mstoipushd "$WORKLOADS_DIR" || exit
412b2d0065SRuslan Mstoiif ! grep focal sha1sums-x86_64 | sha1sum --check; then
42a1a0bc85SBo Chen    echo "sha1sum validation of images failed, remove invalid images to fix the issue."
43a1a0bc85SBo Chen    exit 1
44a1a0bc85SBo Chenfi
452b2d0065SRuslan Mstoipopd || exit
46a1a0bc85SBo Chen
47edca82c4SBo Chen# Download Cloud Hypervisor binary from its last stable release
48f5abb168SRob BradfordLAST_RELEASE_VERSION="v39.0"
49edca82c4SBo ChenCH_RELEASE_URL="https://github.com/cloud-hypervisor/cloud-hypervisor/releases/download/$LAST_RELEASE_VERSION/cloud-hypervisor-static"
50edca82c4SBo ChenCH_RELEASE_NAME="cloud-hypervisor-static"
512b2d0065SRuslan Mstoipushd "$WORKLOADS_DIR" || exit
52edca82c4SBo Chentime wget --quiet $CH_RELEASE_URL -O "$CH_RELEASE_NAME" || exit 1
53edca82c4SBo Chenchmod +x $CH_RELEASE_NAME
542b2d0065SRuslan Mstoipopd || exit
55edca82c4SBo Chen
56a1a0bc85SBo Chen# Build custom kernel based on virtio-pmem and virtio-fs upstream patches
57*2b057537SBo ChenVMLINUX_IMAGE="$WORKLOADS_DIR/vmlinux-x86_64"
58a1a0bc85SBo Chenif [ ! -f "$VMLINUX_IMAGE" ]; then
593c05626aSRuoqing He    # Prepare linux image (build from source or download pre-built)
603c05626aSRuoqing He    prepare_linux
61a1a0bc85SBo Chenfi
62a1a0bc85SBo Chen
63a1a0bc85SBo ChenCFLAGS=""
64a1a0bc85SBo Chenif [[ "${BUILD_TARGET}" == "x86_64-unknown-linux-musl" ]]; then
652b2d0065SRuslan Mstoi    # shellcheck disable=SC2034
66a1a0bc85SBo Chen    CFLAGS="-I /usr/include/x86_64-linux-musl/ -idirafter /usr/include/"
67a1a0bc85SBo Chenfi
68a1a0bc85SBo Chen
692b2d0065SRuslan Mstoicargo build --features mshv --all --release --target "$BUILD_TARGET"
70a1a0bc85SBo Chen
71a181b77bSBo Chen# Test ovs-dpdk relies on hugepages
72318caeb9SRuslan MstoiHUGEPAGESIZE=$(grep Hugepagesize /proc/meminfo | awk '{print $2}')
732b2d0065SRuslan MstoiPAGE_NUM=$((12288 * 1024 / HUGEPAGESIZE))
742b2d0065SRuslan Mstoiecho "$PAGE_NUM" | sudo tee /proc/sys/vm/nr_hugepages
75a181b77bSBo Chensudo chmod a+rwX /dev/hugepages
76a1a0bc85SBo Chen
77a181b77bSBo Chenexport RUST_BACKTRACE=1
78d83fc7f6SRob Bradfordtime cargo test $test_features "live_migration_parallel::$test_filter" -- ${test_binary_args[*]}
79a1a0bc85SBo ChenRES=$?
80a1a0bc85SBo Chen
818f3462b3SBo Chen# Run some tests in sequence since the result could be affected by other tests
828f3462b3SBo Chen# running in parallel.
838f3462b3SBo Chenif [ $RES -eq 0 ]; then
848f3462b3SBo Chen    export RUST_BACKTRACE=1
85d83fc7f6SRob Bradford    time cargo test $test_features "live_migration_sequential::$test_filter" -- --test-threads=1 ${test_binary_args[*]}
868f3462b3SBo Chen    RES=$?
878f3462b3SBo Chenfi
888f3462b3SBo Chen
89a1a0bc85SBo Chenexit $RES
90