From 100339aaf6cdcd7414ee43c9aa0371ea0da19d97 Mon Sep 17 00:00:00 2001 From: Michal Berger Date: Tue, 31 Mar 2020 12:45:27 +0200 Subject: [PATCH] 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 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/866 Tested-by: SPDK CI Jenkins Reviewed-by: Darek Stojaczyk Reviewed-by: Tomasz Zawadzki --- test/lvol/lvol.sh | 1 - test/lvol/tasting.sh | 37 ++++++++++++++++++++++++++++++++++++ test/lvol/test_cases.py | 42 ----------------------------------------- 3 files changed, 37 insertions(+), 43 deletions(-) diff --git a/test/lvol/lvol.sh b/test/lvol/lvol.sh index 032cbc526..d9f798ee6 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: - 255: 'delete_lvol_store_persistent_positive', 350: 'nested_destroy_logical_volume_negative', 400: 'nested_construct_logical_volume_positive', 551: 'delete_lvol_bdev', diff --git a/test/lvol/tasting.sh b/test/lvol/tasting.sh index ac6898e41..1c247a2d6 100755 --- a/test/lvol/tasting.sh +++ b/test/lvol/tasting.sh @@ -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 diff --git a/test/lvol/test_cases.py b/test/lvol/test_cases.py index 1695d9d50..2c015ed9a 100644 --- a/test/lvol/test_cases.py +++ b/test/lvol/test_cases.py @@ -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): """