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): """