test/lvol: Rewrite delete_lvol_store_persistent_positive to Bash

This test covers lvol store removal from the underlying aio device (
test case no. 255).

Change-Id: I1e514abc0d0cc601996c6744dd65279d0865cf93
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/866
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Michal Berger 2020-03-31 12:45:27 +02:00 committed by Tomasz Zawadzki
parent 12ded5af6d
commit 100339aaf6
3 changed files with 37 additions and 43 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:
255: 'delete_lvol_store_persistent_positive',
350: 'nested_destroy_logical_volume_negative',
400: 'nested_construct_logical_volume_positive',
551: 'delete_lvol_bdev',

View File

@ -121,6 +121,42 @@ function test_tasting() {
check_leftover_devices
}
# Positive test for removing lvol store persistently
function test_delete_lvol_store_persistent_positive() {
local aio0=$testdir/aio_bdev_0
local bdev_aio_name=${aio0##*/} bdev_block_size=4096
local lvstore_name=lvstore_test lvstore_uuid
rpc_cmd bdev_aio_create "$aio0" "$bdev_aio_name" "$bdev_block_size"
get_bdev_jq bdev_get_bdevs -b "$bdev_aio_name"
[[ ${jq_out["name"]} == "$bdev_aio_name" ]]
[[ ${jq_out["product_name"]} == "AIO disk" ]]
(( jq_out["block_size"] == bdev_block_size ))
lvstore_uuid=$(rpc_cmd bdev_lvol_create_lvstore "$bdev_aio_name" "$lvstore_name")
get_lvs_jq bdev_lvol_get_lvstores -u "$lvstore_uuid"
[[ ${jq_out["uuid"]} == "$lvstore_uuid" ]]
[[ ${jq_out["name"]} == "$lvstore_name" ]]
[[ ${jq_out["base_bdev"]} == "$bdev_aio_name" ]]
rpc_cmd bdev_lvol_delete_lvstore -u "$lvstore_uuid"
rpc_cmd bdev_aio_delete "$bdev_aio_name"
# Create aio bdev on the same file
rpc_cmd bdev_aio_create "$aio0" "$bdev_aio_name" "$bdev_block_size"
# Wait 1 second to allow time for lvolstore tasting
sleep 1
# bdev_lvol_get_lvstores should not report any existsing lvol stores in configuration
# after deleting and adding NVMe bdev, thus check if destroyed lvol store does not exist
# on aio bdev anymore.
rpc_cmd bdev_lvol_get_lvstores -u "$lvstore_uuid" && false
# cleanup
rpc_cmd bdev_aio_delete "$bdev_aio_name"
check_leftover_devices
}
$rootdir/app/spdk_tgt/spdk_tgt &
spdk_pid=$!
trap 'killprocess "$spdk_pid"; rm -f $testdir/aio_bdev_0 $testdir/aio_bdev_1; exit 1' SIGINT SIGTERM EXIT
@ -128,6 +164,7 @@ waitforlisten $spdk_pid
truncate -s "${AIO_SIZE_MB}M" $testdir/aio_bdev_0 $testdir/aio_bdev_1
run_test "test_tasting" test_tasting
run_test "test_delete_lvol_store_persistent_positive" test_delete_lvol_store_persistent_positive
trap - SIGINT SIGTERM EXIT
killprocess $spdk_pid

View File

@ -112,7 +112,6 @@ def case_message(func):
def inner(*args, **kwargs):
test_name = {
# bdev_lvol_delete_lvstore - positive tests
255: 'delete_lvol_store_persistent_positive',
551: 'delete_lvol_bdev',
552: 'bdev_lvol_delete_lvstore_with_clones',
553: 'unregister_lvol_bdev',
@ -251,47 +250,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_case255(self):
"""
delete_lvol_store_persistent_positive
Positive test for removing lvol store persistently
"""
base_path = path.dirname(sys.argv[0])
base_name = "aio_bdev0"
aio_bdev0 = path.join(base_path, "aio_bdev_0")
# Construct aio bdev
self.c.bdev_aio_create(aio_bdev0, base_name, 4096)
# Create lvol store on created aio bdev
uuid_store = self.c.bdev_lvol_create_lvstore(base_name,
self.lvs_name)
fail_count = self.c.check_bdev_lvol_get_lvstores(base_name, uuid_store,
self.cluster_size)
# Destroy lvol store
if self.c.bdev_lvol_delete_lvstore(self.lvs_name) != 0:
fail_count += 1
# Delete aio bdev
self.c.bdev_aio_delete(base_name)
# Create aio bdev on the same file
self.c.bdev_aio_create(aio_bdev0, base_name, 4096)
# Wait 1 second to allow time for lvolstore tasting
sleep(1)
# check if destroyed lvol store does not exist on aio bdev
ret_value = self.c.check_bdev_lvol_get_lvstores(base_name, uuid_store,
self.cluster_size)
if ret_value == 0:
fail_count += 1
self.c.bdev_aio_delete(base_name)
# Expected result:
# - bdev_lvol_get_lvstores should not report any existsing lvol stores in configuration
# after deleting and adding NVMe bdev
# - no other operation fails
return fail_count
@case_message
def test_case551(self):
"""