Commit 100339aa authored by Michal Berger's avatar Michal Berger Committed by Tomasz Zawadzki
Browse files

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: default avatarMichal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/866


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent 12ded5af
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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',
+37 −0
Original line number Diff line number Diff line
@@ -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
+0 −42
Original line number Diff line number Diff line
@@ -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):
        """