diff options
Diffstat (limited to 'src/spdk/test/lvol/lvol.sh')
-rwxr-xr-x | src/spdk/test/lvol/lvol.sh | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/spdk/test/lvol/lvol.sh b/src/spdk/test/lvol/lvol.sh new file mode 100755 index 00000000..a5883765 --- /dev/null +++ b/src/spdk/test/lvol/lvol.sh @@ -0,0 +1,135 @@ +#!/usr/bin/env bash +set -e +BASE_DIR=$(readlink -f $(dirname $0)) +[[ -z "$TEST_DIR" ]] && TEST_DIR="$(cd $BASE_DIR/../../ && pwd)" + +total_size=256 +block_size=512 +test_cases=all +x="" + +rpc_py="$TEST_DIR/scripts/rpc.py " + +function usage() { + [[ ! -z $2 ]] && ( echo "$2"; echo ""; ) + echo "Shortcut script for doing automated lvol tests" + echo "Usage: $(basename $1) [OPTIONS]" + echo + echo "-h, --help print help and exit" + echo " --total-size Size of malloc bdev in MB (int > 0)" + echo " --block-size Block size for this bdev" + echo "-x set -x for script debug" + echo " --test-cases= List test cases which will be run: + 1: 'construct_lvs_positive', + 50: 'construct_logical_volume_positive', + 51: 'construct_multi_logical_volumes_positive', + 52: 'construct_lvol_bdev_using_name_positive', + 53: 'construct_lvol_bdev_duplicate_names_positive', + 100: 'construct_logical_volume_nonexistent_lvs_uuid', + 101: 'construct_lvol_bdev_on_full_lvol_store', + 102: 'construct_lvol_bdev_name_twice', + 150: 'resize_lvol_bdev_positive', + 200: 'resize_logical_volume_nonexistent_logical_volume', + 201: 'resize_logical_volume_with_size_out_of_range', + 250: 'destroy_lvol_store_positive', + 251: 'destroy_lvol_store_use_name_positive', + 252: 'destroy_lvol_store_with_lvol_bdev_positive', + 253: 'destroy_multi_logical_volumes_positive', + 254: 'destroy_after_resize_lvol_bdev_positive', + 255: 'delete_lvol_store_persistent_positive', + 300: 'destroy_lvol_store_nonexistent_lvs_uuid', + 301: 'delete_lvol_store_underlying_bdev', + 350: 'nested_destroy_logical_volume_negative', + 400: 'nested_construct_logical_volume_positive', + 450: 'construct_lvs_nonexistent_bdev', + 451: 'construct_lvs_on_bdev_twice', + 452: 'construct_lvs_name_twice', + 500: 'nested_construct_lvol_bdev_on_full_lvol_store', + 550: 'delete_bdev_positive', + 551: 'delete_lvol_bdev', + 552: 'destroy_lvol_store_with_clones', + 553: 'unregister_lvol_bdev', + 600: 'construct_lvol_store_with_cluster_size_max', + 601: 'construct_lvol_store_with_cluster_size_min', + 650: 'thin_provisioning_check_space', + 651: 'thin_provisioning_read_empty_bdev', + 652: 'thin_provisionind_data_integrity_test', + 653: 'thin_provisioning_resize', + 654: 'thin_overprovisioning', + 655: 'thin_provisioning_filling_disks_less_than_lvs_size', + 700: 'tasting_positive', + 701: 'tasting_lvol_store_positive', + 750: 'snapshot_readonly', + 751: 'snapshot_compare_with_lvol_bdev', + 752: 'snapshot_during_io_traffic', + 753: 'snapshot_of_snapshot', + 754: 'clone_bdev_only', + 755: 'clone_writing_clone', + 756: 'clone_and_snapshot_consistency', + 757: 'clone_inflate', + 758: 'clone_decouple_parent', + 759: 'clone_decouple_parent_rw', + 800: 'rename_positive', + 801: 'rename_lvs_nonexistent', + 802: 'rename_lvs_EEXIST', + 803: 'rename_lvol_bdev_nonexistent', + 804: 'rename_lvol_bdev_EEXIST', + 10000: 'SIGTERM' + or + all: This parameter runs all tests + Ex: \"1,2,19,20\", default: all" + echo + echo +} + +while getopts 'xh-:' optchar; do + case "$optchar" in + -) + case "$OPTARG" in + help) usage $0 && exit 0;; + total-size=*) total_size="${OPTARG#*=}" ;; + block-size=*) block_size="${OPTARG#*=}" ;; + test-cases=*) test_cases="${OPTARG#*=}" ;; + *) usage $0 "Invalid argument '$OPTARG'" && exit 1 ;; + esac + ;; + h) usage $0 && exit 0 ;; + x) set -x + x="-x" ;; + *) usage $0 "Invalid argument '$OPTARG'" && exit 1 ;; + esac +done +shift $(( OPTIND - 1 )) + +source $TEST_DIR/test/common/autotest_common.sh + +### Function starts vhost app +function vhost_start() +{ + modprobe nbd + $TEST_DIR/app/vhost/vhost & + vhost_pid=$! + echo $vhost_pid > $BASE_DIR/vhost.pid + waitforlisten $vhost_pid +} + +### Function stops vhost app +function vhost_kill() +{ + ### Kill with SIGKILL param + if pkill -F $BASE_DIR/vhost.pid; then + sleep 1 + fi + rm $BASE_DIR/vhost.pid || true + rmmod nbd || true +} + +trap "vhost_kill; rm -f $BASE_DIR/aio_bdev_0 $BASE_DIR/aio_bdev_1; exit 1" SIGINT SIGTERM EXIT + +truncate -s 400M $BASE_DIR/aio_bdev_0 $BASE_DIR/aio_bdev_1 +vhost_start +$BASE_DIR/lvol_test.py $rpc_py $total_size $block_size $BASE_DIR $TEST_DIR/app/vhost "${test_cases[@]}" + +vhost_kill +rm -rf $BASE_DIR/aio_bdev_0 $BASE_DIR/aio_bdev_1 +trap - SIGINT SIGTERM EXIT |