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 <dariusz.stojaczyk@intel.com>
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/462185
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
This commit is contained in:
Darek Stojaczyk 2019-07-17 07:39:22 +02:00 committed by Jim Harris
parent 67ab15d6e7
commit 5ff75ec292
4 changed files with 65 additions and 58 deletions

View File

@ -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',

View File

@ -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

64
test/lvol/resize.sh Executable file
View File

@ -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

View File

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