test/lvol: rewrite rename_lvs_nonexistent and rename_lvs_EEXIST to bash

Change-Id: Ida7b005e62d8798333ba57e9b1ef2e9f9ae81fb7
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/700
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Pawel Kaminski 2019-12-10 11:59:42 -05:00 committed by Tomasz Zawadzki
parent 48a373f483
commit 35db02d253
3 changed files with 89 additions and 124 deletions

View File

@ -35,8 +35,6 @@ function usage() {
653: 'thin_provisioning_resize',
654: 'thin_overprovisioning',
655: 'thin_provisioning_filling_disks_less_than_lvs_size',
801: 'rename_lvs_nonexistent',
802: 'rename_lvs_EEXIST',
803: 'bdev_lvol_rename_nonexistent',
804: 'bdev_lvol_rename_EEXIST',
850: 'clear_method_none',

View File

@ -81,12 +81,101 @@ function test_rename_positive() {
check_leftover_devices
}
# Negative test case for lvol store rename.
# Check that error is returned when trying to rename not existing lvol store.
# Check that error is returned when trying to rename to a name which is already
# used by another lvol store.
function test_rename_lvs_negative() {
# Call bdev_lvol_rename_lvstore with name pointing to not existing lvol store
rpc_cmd bdev_lvol_rename_lvstore NOTEXIST WHATEVER && false
# Construct two malloc bdevs
malloc_name1=$(rpc_cmd bdev_malloc_create $MALLOC_SIZE_MB $MALLOC_BS)
malloc_name2=$(rpc_cmd bdev_malloc_create $MALLOC_SIZE_MB $MALLOC_BS)
# Create lvol store on each malloc bdev
lvs_uuid1=$(rpc_cmd bdev_lvol_create_lvstore "$malloc_name1" lvs_test1)
lvs_uuid2=$(rpc_cmd bdev_lvol_create_lvstore "$malloc_name2" lvs_test2)
# Create lists with lvol bdev names and aliases for later use
bdev_names_1=("lvol_test_1_"{0..3})
bdev_names_2=("lvol_test_2_"{0..3})
bdev_aliases_1=("lvs_test1/lvol_test_1_"{0..3})
bdev_aliases_2=("lvs_test2/lvol_test_2_"{0..3})
# Calculate size and create two lvol bdevs on top
lvol_size_mb=$( round_down $(( LVS_DEFAULT_CAPACITY_MB / 4 )) )
lvol_size=$(( lvol_size_mb * 1024 * 1024 ))
# # Create 4 lvol bdevs on top of each lvol store
bdev_uuids_1=()
bdev_uuids_2=()
for i in "${!bdev_names_1[@]}"; do
lvol_uuid=$(rpc_cmd bdev_lvol_create -u "$lvs_uuid1" "${bdev_names_1[i]}" "$lvol_size_mb")
lvol=$(rpc_cmd bdev_get_bdevs -b "$lvol_uuid")
[ "$(jq -r '.[0].driver_specific.lvol.lvol_store_uuid' <<< "$lvol")" = "$lvs_uuid1" ]
[ "$(jq -r '.[0].block_size' <<< "$lvol")" = "$MALLOC_BS" ]
[ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ]
[ "$(jq '.[0].aliases|sort' <<< "$lvol")" = "$(jq '.|sort' <<< '["'${bdev_aliases_1[i]}'"]')" ]
bdev_uuids_1+=("$lvol_uuid")
lvol_uuid=$(rpc_cmd bdev_lvol_create -u "$lvs_uuid2" "${bdev_names_2[i]}" "$lvol_size_mb")
lvol=$(rpc_cmd bdev_get_bdevs -b "$lvol_uuid")
[ "$(jq -r '.[0].driver_specific.lvol.lvol_store_uuid' <<< "$lvol")" = "$lvs_uuid2" ]
[ "$(jq -r '.[0].block_size' <<< "$lvol")" = "$MALLOC_BS" ]
[ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ]
[ "$(jq '.[0].aliases|sort' <<< "$lvol")" = "$(jq '.|sort' <<< '["'${bdev_aliases_2[i]}'"]')" ]
bdev_uuids_2+=("$lvol_uuid")
done
# Call bdev_lvol_rename_lvstore on first lvol store and try to change its name to
# the same name as used by second lvol store
rpc_cmd bdev_lvol_rename_lvstore lvs_test1 lvs_test2 && false
# Verify that names of lvol stores and lvol bdevs did not change
lvs=$(rpc_cmd bdev_lvol_get_lvstores -u "$lvs_uuid1")
[ "$(jq -r '.[0].uuid' <<< "$lvs")" = "$lvs_uuid1" ]
[ "$(jq -r '.[0].name' <<< "$lvs")" = "lvs_test1" ]
[ "$(jq -r '.[0].base_bdev' <<< "$lvs")" = "$malloc_name1" ]
[ "$(jq -r '.[0].cluster_size' <<< "$lvs")" = "$LVS_DEFAULT_CLUSTER_SIZE" ]
lvs=$(rpc_cmd bdev_lvol_get_lvstores -u "$lvs_uuid2")
[ "$(jq -r '.[0].uuid' <<< "$lvs")" = "$lvs_uuid2" ]
[ "$(jq -r '.[0].name' <<< "$lvs")" = "lvs_test2" ]
[ "$(jq -r '.[0].base_bdev' <<< "$lvs")" = "$malloc_name2" ]
[ "$(jq -r '.[0].cluster_size' <<< "$lvs")" = "$LVS_DEFAULT_CLUSTER_SIZE" ]
for i in "${!bdev_uuids_1[@]}"; do
lvol=$(rpc_cmd bdev_get_bdevs -b "${bdev_uuids_1[i]}")
[ "$(jq -r '.[0].driver_specific.lvol.lvol_store_uuid' <<< "$lvol")" = "$lvs_uuid1" ]
[ "$(jq -r '.[0].block_size' <<< "$lvol")" = "$MALLOC_BS" ]
[ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ]
[ "$(jq '.[0].aliases|sort' <<< "$lvol")" = "$(jq '.|sort' <<< '["'${bdev_aliases_1[i]}'"]')" ]
lvol=$(rpc_cmd bdev_get_bdevs -b "${bdev_uuids_2[i]}")
[ "$(jq -r '.[0].driver_specific.lvol.lvol_store_uuid' <<< "$lvol")" = "$lvs_uuid2" ]
[ "$(jq -r '.[0].block_size' <<< "$lvol")" = "$MALLOC_BS" ]
[ "$(jq -r '.[0].num_blocks' <<< "$lvol")" = "$(( lvol_size / MALLOC_BS ))" ]
[ "$(jq '.[0].aliases|sort' <<< "$lvol")" = "$(jq '.|sort' <<< '["'${bdev_aliases_2[i]}'"]')" ]
done
# Clean up
for bdev in "${bdev_aliases_1[@]}" "${bdev_alisaes_2[@]}"; do
rpc_cmd bdev_lvol_delete "$bdev"
done
rpc_cmd bdev_lvol_delete_lvstore -u "$lvs_uuid1"
rpc_cmd bdev_lvol_delete_lvstore -u "$lvs_uuid2"
rpc_cmd bdev_malloc_delete "$malloc_name1"
rpc_cmd bdev_malloc_delete "$malloc_name2"
check_leftover_devices
}
$rootdir/app/spdk_tgt/spdk_tgt &
spdk_pid=$!
trap 'killprocess "$spdk_pid"; exit 1' SIGINT SIGTERM EXIT
waitforlisten $spdk_pid
run_test "test_rename_positive" test_rename_positive
run_test "test_rename_lvs_negative" test_rename_lvs_negative
trap - SIGINT SIGTERM EXIT
killprocess $spdk_pid

View File

@ -126,8 +126,6 @@ def case_message(func):
654: 'thin_overprovisioning',
655: 'thin_provisioning_filling_disks_less_than_lvs_size',
# logical volume rename tests
801: 'rename_lvs_nonexistent',
802: 'rename_lvs_EEXIST',
803: 'bdev_lvol_rename_nonexistent',
804: 'bdev_lvol_rename_EEXIST',
# logical volume clear_method test
@ -973,126 +971,6 @@ class TestCases(object):
# - no other operation fails
return fail_count
@case_message
def test_case801(self):
"""
rename_lvs_nonexistent
Negative test case for lvol store rename.
Check that error is returned when trying to rename not existing lvol store.
"""
fail_count = 0
# Call bdev_lvol_rename_lvstore with name pointing to not existing lvol store
if self.c.bdev_lvol_rename_lvstore("NOTEXIST", "WHATEVER") == 0:
fail_count += 1
# Expected results:
# - bdev_lvol_rename_lvstore return code != 0
# - no other operation fails
return fail_count
@case_message
def test_case802(self):
"""
rename_lvs_EEXIST
Negative test case for lvol store rename.
Check that error is returned when trying to rename to a name which is already
used by another lvol store.
"""
fail_count = 0
lvs_name_1 = "lvs_1"
lvs_name_2 = "lvs_2"
# Create lists with lvol bdev names and aliases for later use
bdev_names_1 = ["lvol_1_" + str(i) for i in range(4)]
bdev_aliases_1 = ["/".join([lvs_name_1, name]) for name in bdev_names_1]
bdev_uuids_1 = []
bdev_names_2 = ["lvol_2_" + str(i) for i in range(4)]
bdev_aliases_2 = ["/".join([lvs_name_2, name]) for name in bdev_names_2]
bdev_uuids_2 = []
# Construct two malloc bdevs
base_bdev_1 = self.c.bdev_malloc_create(self.total_size,
self.block_size)
base_bdev_2 = self.c.bdev_malloc_create(self.total_size,
self.block_size)
# Create lvol store on each malloc bdev
lvs_uuid_1 = self.c.bdev_lvol_create_lvstore(base_bdev_1,
lvs_name_1)
fail_count += self.c.check_bdev_lvol_get_lvstores(base_bdev_1,
lvs_uuid_1,
self.cluster_size,
lvs_name_1)
lvs_uuid_2 = self.c.bdev_lvol_create_lvstore(base_bdev_2,
lvs_name_2)
fail_count += self.c.check_bdev_lvol_get_lvstores(base_bdev_2,
lvs_uuid_2,
self.cluster_size,
lvs_name_2)
# Create 4 lvol bdevs on top of each lvol store
bdev_size_1 = self.get_lvs_divided_size(4, lvs_name_1)
bdev_size_2 = self.get_lvs_divided_size(4, lvs_name_2)
for name, alias in zip(bdev_names_1, bdev_aliases_1):
uuid = self.c.bdev_lvol_create(lvs_uuid_1,
name,
bdev_size_1)
fail_count += self.c.check_bdev_get_bdevs_methods(uuid,
bdev_size_1,
alias)
bdev_uuids_1.append(uuid)
for name, alias in zip(bdev_names_2, bdev_aliases_2):
uuid = self.c.bdev_lvol_create(lvs_uuid_2,
name,
bdev_size_2)
fail_count += self.c.check_bdev_get_bdevs_methods(uuid,
bdev_size_2,
alias)
bdev_uuids_2.append(uuid)
# Call bdev_lvol_rename_lvstore on first lvol store and try to change its name to
# the same name as used by second lvol store
if self.c.bdev_lvol_rename_lvstore(lvs_name_1, lvs_name_2) == 0:
fail_count += 1
# Verify that names of lvol stores and lvol bdevs did not change
fail_count += self.c.check_bdev_lvol_get_lvstores(base_bdev_1,
lvs_uuid_1,
self.cluster_size,
lvs_name_1)
fail_count += self.c.check_bdev_lvol_get_lvstores(base_bdev_2,
lvs_uuid_2,
self.cluster_size,
lvs_name_2)
for name, alias, uuid in zip(bdev_names_1, bdev_aliases_1, bdev_uuids_1):
fail_count += self.c.check_bdev_get_bdevs_methods(uuid,
bdev_size_1,
alias)
for name, alias, uuid in zip(bdev_names_2, bdev_aliases_2, bdev_uuids_2):
fail_count += self.c.check_bdev_get_bdevs_methods(uuid,
bdev_size_2,
alias)
# Clean configuration
for lvol_uuid in bdev_uuids_1 + bdev_uuids_2:
fail_count += self.c.bdev_lvol_delete(lvol_uuid)
fail_count += self.c.bdev_lvol_delete_lvstore(lvs_uuid_1)
fail_count += self.c.bdev_lvol_delete_lvstore(lvs_uuid_2)
fail_count += self.c.bdev_malloc_delete(base_bdev_1)
fail_count += self.c.bdev_malloc_delete(base_bdev_2)
# Expected results:
# - bdev_lvol_rename_lvstore return code != 0; not possible to rename to already
# used name
# - no other operation fails
return fail_count
@case_message
def test_case803(self):
"""