From 5ff75ec2926b239edc76c1eedcaada89e7f18644 Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Wed, 17 Jul 2019 07:39:22 +0200 Subject: [PATCH] test/lvol: rewrite test_lvol_resize_basic to bash Added resize.sh. There won't be too many test cases in there just yet, but eventually we'd like to lift some restrictions on lvol resizes and there will be a fair amount of extra cases to cover. Change-Id: I3d9db16003ac806241678cfd8441281d557c214c Signed-off-by: Darek Stojaczyk Signed-off-by: Pawel Kaminski Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/462185 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Karol Latecki Reviewed-by: Maciej Szwed --- test/lvol/lvol.sh | 1 - test/lvol/lvol2.sh | 1 + test/lvol/resize.sh | 64 +++++++++++++++++++++++++++++++++++++++++ test/lvol/test_cases.py | 57 ------------------------------------ 4 files changed, 65 insertions(+), 58 deletions(-) create mode 100755 test/lvol/resize.sh diff --git a/test/lvol/lvol.sh b/test/lvol/lvol.sh index a74a997e3..d1db2d21a 100755 --- a/test/lvol/lvol.sh +++ b/test/lvol/lvol.sh @@ -21,7 +21,6 @@ function usage() { 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: - 150: 'bdev_lvol_resize_positive', 200: 'resize_logical_volume_nonexistent_logical_volume', 201: 'resize_logical_volume_with_size_out_of_range', 250: 'bdev_lvol_delete_lvstore_positive', diff --git a/test/lvol/lvol2.sh b/test/lvol/lvol2.sh index 1f34deffb..2419f1496 100755 --- a/test/lvol/lvol2.sh +++ b/test/lvol/lvol2.sh @@ -8,6 +8,7 @@ timing_enter lvol timing_enter basic run_test "lvol_basic" test/lvol/basic.sh +run_test "lvol_resize" test/lvol/resize.sh timing_exit basic timing_exit lvol diff --git a/test/lvol/resize.sh b/test/lvol/resize.sh new file mode 100755 index 000000000..677880ef6 --- /dev/null +++ b/test/lvol/resize.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +testdir=$(readlink -f $(dirname $0)) +rootdir=$(readlink -f $testdir/../..) +source $rootdir/test/common/autotest_common.sh +source $rootdir/test/lvol/common.sh + +# resize an lvol a few times +function test_resize_lvol() { + # create an lvol store + malloc_name=$(rpc_cmd bdev_malloc_create $MALLOC_SIZE_MB $MALLOC_BS) + lvs_uuid=$(rpc_cmd bdev_lvol_create_lvstore "$malloc_name" lvs_test) + + # calculate lvol size + lvol_size_mb=$( round_down $(( LVS_DEFAULT_CAPACITY_MB / 4 )) ) + lvol_size=$(( lvol_size_mb * 1024 * 1024 )) + + # create an lvol on top + lvol_uuid=$(rpc_cmd bdev_lvol_create -u "$lvs_uuid" lvol_test "$lvol_size_mb") + lvol=$(rpc_cmd bdev_get_bdevs -b "$lvol_uuid") + [ "$(jq -r '.[0].name' <<< "$lvol")" = "$lvol_uuid" ] + [ "$(jq -r '.[0].uuid' <<< "$lvol")" = "$lvol_uuid" ] + [ "$(jq -r '.[0].aliases[0]' <<< "$lvol")" = "lvs_test/lvol_test" ] + [ "$(jq -r '.[0].block_size' <<< "$lvol")" = "$MALLOC_BS" ] + [ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ] + + # resize the lvol to twice its original size + lvol_size_mb=$(( lvol_size_mb * 2 )) + lvol_size=$(( lvol_size_mb * 1024 * 1024 )) + rpc_cmd bdev_lvol_resize "$lvol_uuid" "$lvol_size_mb" + lvol=$(rpc_cmd bdev_get_bdevs -b "$lvol_uuid") + [ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ] + + # resize the lvol to four times its original size + lvol_size_mb=$(( lvol_size_mb * 2 )) + lvol_size=$(( lvol_size_mb * 1024 * 1024 )) + rpc_cmd bdev_lvol_resize "$lvol_uuid" "$lvol_size_mb" + lvol=$(rpc_cmd bdev_get_bdevs -b "$lvol_uuid") + [ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ] + + # resize the lvol to 0 using lvol bdev alias + lvol_size_mb=0 + lvol_size=0 + rpc_cmd bdev_lvol_resize "lvs_test/lvol_test" "$lvol_size_mb" + lvol=$(rpc_cmd bdev_get_bdevs -b "$lvol_uuid") + [ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ] + + # clean up + rpc_cmd bdev_lvol_delete "$lvol_uuid" + rpc_cmd bdev_get_bdevs -b "$lvol_uuid" && false + rpc_cmd bdev_lvol_delete_lvstore -u "$lvs_uuid" + rpc_cmd bdev_lvol_get_lvstores -u "$lvs_uuid" && false + rpc_cmd bdev_malloc_delete "$malloc_name" +} + +$rootdir/app/spdk_tgt/spdk_tgt & +spdk_pid=$! +trap 'killprocess "$spdk_pid"; exit 1' SIGINT SIGTERM EXIT +waitforlisten $spdk_pid + +run_test "test_resize_lvol" test_resize_lvol + +trap - SIGINT SIGTERM EXIT +killprocess $spdk_pid diff --git a/test/lvol/test_cases.py b/test/lvol/test_cases.py index 12963b6da..fbcf259e2 100644 --- a/test/lvol/test_cases.py +++ b/test/lvol/test_cases.py @@ -111,8 +111,6 @@ def test_counter(): def case_message(func): def inner(*args, **kwargs): test_name = { - # resize_lvol_store - positive tests - 150: 'bdev_lvol_resize_positive', # resize lvol store - negative tests 200: 'resize_logical_volume_nonexistent_logical_volume', 201: 'resize_logical_volume_with_size_out_of_range', @@ -299,61 +297,6 @@ class TestCases(object): lvs = self.c.bdev_lvol_get_lvstores(lvs_name)[0] return int(int(lvs['cluster_size']) / MEGABYTE) - @case_message - def test_case150(self): - """ - resize_logical_volume_positive - - - Positive test for resizing a logical_volume. - Call bdev_lvol_resize with correct logical_volumes name and new size. - """ - # Construct malloc bdev - base_name = self.c.bdev_malloc_create(self.total_size, - self.block_size) - # Create lvol store - uuid_store = self.c.bdev_lvol_create_lvstore(base_name, - self.lvs_name) - # Check correct uuid values in response bdev_lvol_get_lvstores command - fail_count = self.c.check_bdev_lvol_get_lvstores(base_name, uuid_store, - self.cluster_size) - # Construct lvol bdev on correct lvs_uuid and - # size is equal to one quarter of size malloc bdev - size = self.get_lvs_divided_size(4) - uuid_bdev = self.c.bdev_lvol_create(uuid_store, self.lbd_name, size) - # Check size of the lvol bdev by rpc command bdev_get_bdevs - fail_count += self.c.check_bdev_get_bdevs_methods(uuid_bdev, size) - - # Resize lvol bdev on correct lvs_uuid and - # size is equal to half of size malloc bdev - size = self.get_lvs_divided_size(2) - self.c.bdev_lvol_resize(uuid_bdev, size) - # Check size of the lvol bdev by rpc command bdev_get_bdevs - fail_count += self.c.check_bdev_get_bdevs_methods(uuid_bdev, size) - - # Resize lvol bdev on the correct lvs_uuid and - # size is smaller by 1 cluster - size = (self.get_lvs_size() - self.get_lvs_cluster_size()) - self.c.bdev_lvol_resize(uuid_bdev, size) - # Check size of the lvol bdev by rpc command bdev_get_bdevs - fail_count += self.c.check_bdev_get_bdevs_methods(uuid_bdev, size) - - # Resize lvol bdev on the correct lvs_uuid and - # size is equal 0 MiB - size = 0 - self.c.bdev_lvol_resize(uuid_bdev, size) - # Check size of the lvol bdev by rpc command bdev_get_bdevs - fail_count += self.c.check_bdev_get_bdevs_methods(uuid_bdev, size) - - self.c.bdev_lvol_delete(uuid_bdev) - self.c.bdev_lvol_delete_lvstore(uuid_store) - self.c.bdev_malloc_delete(base_name) - # Expected result: - # - lvol bdev should change size after resize operations - # - calls successful, return code = 0 - # - no other operation fails - return fail_count - @case_message def test_case200(self): """