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:
parent
48a373f483
commit
35db02d253
@ -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',
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user