1a0ce4ded0
Since delete_bdev should be used only for debug purpose, this patch adds delete call specific for pmem bdev. Signed-off-by: Maciej Szwed <maciej.szwed@intel.com> Change-Id: Ic526e9ae462f595c4668c2b2612ad074208a7c4e Reviewed-on: https://review.gerrithub.io/416520 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
702 lines
16 KiB
Bash
Executable File
702 lines
16 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
BASE_DIR=$(readlink -f $(dirname $0))
|
|
[[ -z "$TEST_DIR" ]] && TEST_DIR="$(cd $BASE_DIR/../../ && pwd)"
|
|
|
|
enable_script_debug=false
|
|
test_info=false
|
|
test_create=false
|
|
test_delete=false
|
|
test_construct_bdev=false
|
|
test_delete_bdev=false
|
|
test_all=true
|
|
test_all_get=false
|
|
default_pool_file=$TEST_DIR/test/pmem/pool_file
|
|
obj_pool_file=$TEST_DIR/test/pmem/obj_pool_file
|
|
bdev_name=pmem0
|
|
|
|
function usage()
|
|
{
|
|
[[ ! -z $2 ]] && ( echo "$2"; echo ""; )
|
|
echo "Shortcut script for automated RPC tests for PMEM"
|
|
echo "For test details, check test_plan.md or"
|
|
echo "https://review.gerrithub.io/#/c/378618/18/test/pmem/test_plan.md"
|
|
echo
|
|
echo "Usage: $(basename $1) [OPTIONS]"
|
|
echo
|
|
echo "-h, --help Print help and exit"
|
|
echo "-x set -x for script debug"
|
|
echo " --info Run test cases for pmem_pool_info"
|
|
echo " --create Run test cases for create_pmem_pool"
|
|
echo " --delete Run test cases for delete_pmem_pool"
|
|
echo " --construct_bdev Run test cases for constructing pmem bdevs"
|
|
echo " --delete_bdev Run test cases for deleting pmem bdevs"
|
|
echo " --all Run all test cases (default)"
|
|
exit 0
|
|
}
|
|
|
|
while getopts 'xh-:' optchar; do
|
|
case "$optchar" in
|
|
-)
|
|
case "$OPTARG" in
|
|
help) usage $0 ;;
|
|
info) test_info=true; test_all=false;;
|
|
create) test_create=true; test_all=false;;
|
|
delete) test_delete=true; test_all=false;;
|
|
construct_bdev) test_construct_bdev=true; test_all=false;;
|
|
delete_bdev) test_delete_bdev=true; test_all=false;;
|
|
all) test_all_get=true;;
|
|
*) usage $0 "Invalid argument '$OPTARG'" ;;
|
|
esac
|
|
;;
|
|
h) usage $0 ;;
|
|
x) enable_script_debug=true ;;
|
|
*) usage $0 "Invalid argument '$OPTARG'"
|
|
esac
|
|
done
|
|
|
|
if $test_all_get; then
|
|
test_all=true
|
|
fi
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "Go away user come back as root"
|
|
exit 1
|
|
fi
|
|
|
|
source $TEST_DIR/test/pmem/common.sh
|
|
source $TEST_DIR/test/common/autotest_common.sh
|
|
|
|
#================================================
|
|
# pmem_pool_info tests
|
|
#================================================
|
|
function pmem_pool_info_tc1()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
|
|
if $rpc_py pmem_pool_info; then
|
|
error "pmem_pool_info passed with missing argument!"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function pmem_pool_info_tc2()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
|
|
if $rpc_py pmem_pool_info $TEST_DIR/non/existing/path/non_existent_file; then
|
|
error "pmem_pool_info passed with invalid path!"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function pmem_pool_info_tc3()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
|
|
echo "Creating new type OBJ pool file"
|
|
if hash pmempool; then
|
|
pmempool create -s 32000000 obj $obj_pool_file
|
|
else
|
|
echo "Warning: pmempool package not found! Creating stub file."
|
|
truncate -s "32M" $obj_pool_file
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $TEST_DIR/test/pmem/obj_pool_file; then
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
error "Pmem_pool_info passed with invalid pool_file type!"
|
|
fi
|
|
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
return 0
|
|
}
|
|
|
|
function pmem_pool_info_tc4()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
pmem_create_pool_file
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get pmem_pool_info!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
#================================================
|
|
# create_pmem_pool tests
|
|
#================================================
|
|
function create_pmem_pool_tc1()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
if $rpc_py create_pmem_pool 32 512; then
|
|
error "Mem pool file created w/out given path!"
|
|
fi
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file; then
|
|
error "Mem pool file created w/out size & block size arguments!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "create_pmem_pool created invalid pool file!"
|
|
fi
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file 32; then
|
|
error "Mem pool file created w/out block size argument!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "create_pmem_pool created invalid pool file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc2()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
if $rpc_py create_pmem_pool $TEST_DIR/non/existing/path/non_existent_file 32 512; then
|
|
error "Mem pool file created with incorrect path!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $TEST_DIR/non/existing/path/non_existent_file; then
|
|
error "create_pmem_pool created invalid pool file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc3()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
if ! $rpc_py create_pmem_pool $default_pool_file 256 512; then
|
|
error "Failed to create pmem pool!"
|
|
fi
|
|
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get pmem info"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Failed to delete pool file!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Got pmem file info but file should be deleted"
|
|
fi
|
|
|
|
if [ -f $default_pool_file ]; then
|
|
error "Failed to delete pmem file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc4()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
|
|
pmem_unmount_ramspace
|
|
mkdir $TEST_DIR/test/pmem/ramspace
|
|
mount -t tmpfs -o size=300m tmpfs $TEST_DIR/test/pmem/ramspace
|
|
if ! $rpc_py create_pmem_pool $TEST_DIR/test/pmem/ramspace/pool_file 256 512; then
|
|
pmem_unmount_ramspace
|
|
error "Failed to create pmem pool!"
|
|
fi
|
|
|
|
if ! $rpc_py pmem_pool_info $TEST_DIR/test/pmem/ramspace/pool_file; then
|
|
pmem_unmount_ramspace
|
|
error "Failed to get pmem info"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $TEST_DIR/test/pmem/ramspace/pool_file; then
|
|
pmem_unmount_ramspace
|
|
error "Failed to delete pool file!"
|
|
fi
|
|
|
|
if [ -f $TEST_DIR/test/pmem/ramspace/pool_file ]; then
|
|
pmem_unmount_ramspace
|
|
error "Failed to delete pmem file / file still exists!"
|
|
fi
|
|
|
|
pmem_unmount_ramspace
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc5()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
local pmem_block_size
|
|
local pmem_num_block
|
|
|
|
if ! $rpc_py create_pmem_pool $default_pool_file 256 512; then
|
|
error "Failed to create pmem pool!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
pmem_block_size=$($rpc_py pmem_pool_info $default_pool_file | jq -r '.[] .block_size')
|
|
pmem_num_block=$($rpc_py pmem_pool_info $default_pool_file | jq -r '.[] .num_blocks')
|
|
else
|
|
error "Failed to get pmem info!"
|
|
fi
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file 512 4096; then
|
|
error "Pmem pool with already occupied path has been created!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
if [ $pmem_block_size != $($rpc_py pmem_pool_info $default_pool_file | jq -r '.[] .block_size') ]; then
|
|
error "Invalid block size of pmem pool!"
|
|
fi
|
|
|
|
if [ $pmem_num_block != $($rpc_py pmem_pool_info $default_pool_file | jq -r '.[] .num_blocks') ]; then
|
|
error "Invalid number of blocks of pmem pool!"
|
|
fi
|
|
else
|
|
error "Failed to get pmem info!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Failed to delete pmem file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc6()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
local created_pmem_block_size
|
|
|
|
for i in 511 512 1024 2048 4096 131072 262144
|
|
do
|
|
if ! $rpc_py create_pmem_pool $default_pool_file 256 $i; then
|
|
error "Failed to create pmem pool!"
|
|
fi
|
|
|
|
created_pmem_block_size=$($rpc_py pmem_pool_info $default_pool_file | jq -r '.[] .block_size')
|
|
if [ $? != 0 ]; then
|
|
error "Failed to get pmem info!"
|
|
fi
|
|
|
|
if [ $i != $created_pmem_block_size ]; then
|
|
error "Invalid block size of pmem pool!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Failed to delete pmem file!"
|
|
fi
|
|
done
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc7()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file 15 512; then
|
|
error "Created pmem pool with invalid size!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Pmem file shouldn' exist!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc8()
|
|
{
|
|
pmem_print_tc_name "create_pmem_pool_tc8"
|
|
pmem_clean_pool_file
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file 32 65536; then
|
|
error "Created pmem pool with invalid block number!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Pmem file shouldn' exist!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function create_pmem_pool_tc9()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file 256 -1; then
|
|
error "Created pmem pool with negative block size number!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "create_pmem_pool create invalid pool file!"
|
|
fi
|
|
|
|
if $rpc_py create_pmem_pool $default_pool_file -1 512; then
|
|
error "Created pmem pool with negative size number!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "create_pmem_pool create invalid pool file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
#================================================
|
|
# delete_pmem_pool tests
|
|
#================================================
|
|
function delete_pmem_pool_tc1()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
if $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "delete_pmem_pool deleted inexistant pool file!"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function delete_pmem_pool_tc2()
|
|
{
|
|
pmem_print_tc_name "delete_pmem_pool_tc2"
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
|
|
echo "Creating new type OBJ pool file"
|
|
if hash pmempool; then
|
|
pmempool create -s 32000000 obj $obj_pool_file
|
|
else
|
|
echo "Warning: pmempool package not found! Creating stub file."
|
|
truncate -s "32M" $obj_pool_file
|
|
fi
|
|
|
|
if $rpc_py delete_pmem_pool $TEST_DIR/test/pmem/obj_pool_file; then
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
error "delete_pmem_pool deleted invalid pmem pool type!"
|
|
fi
|
|
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
return 0
|
|
}
|
|
|
|
function delete_pmem_pool_tc3()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
pmem_create_pool_file
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get info on pmem pool file!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Failed to delete pmem pool file!"
|
|
fi
|
|
|
|
if $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Pmem pool file exists after using pmem_pool_info!"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function delete_pmem_pool_tc4()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
|
|
delete_pmem_pool_tc3
|
|
if $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Deleted pmem pool file that shouldn't exist!"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
#================================================
|
|
# construct_pmem_bdev tests
|
|
#================================================
|
|
function construct_pmem_bdev_tc1()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
pmem_create_pool_file
|
|
if $rpc_py construct_pmem_bdev; then
|
|
error "construct_pmem_bdev passed with missing argument!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function construct_pmem_bdev_tc2()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
|
|
pmem_create_pool_file
|
|
if $rpc_py construct_pmem_bdev -n $bdev_name $TEST_DIR/non/existing/path/non_existent_file; then
|
|
error "Created pmem bdev w/out valid pool file!"
|
|
fi
|
|
|
|
if $rpc_py get_bdevs | jq -r '.[] .name' | grep -qi pmem; then
|
|
error "construct_pmem_bdev passed with invalid argument!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function construct_pmem_bdev_tc3()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
|
|
truncate -s 32M $TEST_DIR/test/pmem/random_file
|
|
if $rpc_py construct_pmem_bdev -n $bdev_name $TEST_DIR/test/pmem/random_file; then
|
|
error "Created pmem bdev from random file!"
|
|
fi
|
|
|
|
if [ -f $TEST_DIR/test/pmem/random_file ]; then
|
|
echo "Deleting previously created random file"
|
|
rm $TEST_DIR/test/pmem/random_file
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function construct_pmem_bdev_tc4()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
|
|
echo "Creating new type OBJ pool file"
|
|
if hash pmempool; then
|
|
pmempool create -s 32000000 obj $obj_pool_file
|
|
else
|
|
echo "Warning: pmempool package not found! Creating stub file."
|
|
truncate -s "32M" $obj_pool_file
|
|
fi
|
|
|
|
if $rpc_py construct_pmem_bdev -n $bdev_name $TEST_DIR/test/pmem/obj_pool_file; then
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
error "Created pmem bdev from obj type pmem file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file $TEST_DIR/test/pmem/obj_pool_file
|
|
return 0
|
|
}
|
|
|
|
function construct_pmem_bdev_tc5()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
pmem_create_pool_file
|
|
local pmem_bdev_name
|
|
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get pmem info!"
|
|
fi
|
|
|
|
pmem_bdev_name=$($rpc_py construct_pmem_bdev -n $bdev_name $default_pool_file)
|
|
if [ $? != 0 ]; then
|
|
error "Failed to create pmem bdev"
|
|
fi
|
|
|
|
if ! $rpc_py get_bdevs | jq -r '.[] .name' | grep -qi $pmem_bdev_name; then
|
|
error "Pmem bdev not found!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_bdev $pmem_bdev_name; then
|
|
error "Failed to delete pmem bdev!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Failed to delete pmem pool file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function construct_pmem_bdev_tc6()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
local pmem_bdev_name
|
|
pmem_clean_pool_file
|
|
|
|
pmem_create_pool_file
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get info on pmem pool file!"
|
|
fi
|
|
|
|
pmem_bdev_name=$($rpc_py construct_pmem_bdev -n $bdev_name $default_pool_file)
|
|
if [ $? != 0 ]; then
|
|
error "Failed to create pmem bdev!"
|
|
fi
|
|
|
|
if ! $rpc_py get_bdevs | jq -r '.[] .name' | grep -qi $pmem_bdev_name; then
|
|
error "Pmem bdev not found!"
|
|
fi
|
|
|
|
if $rpc_py construct_pmem_bdev -n $bdev_name $default_pool_file; then
|
|
error "Constructed pmem bdev with occupied path!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_bdev $pmem_bdev_name; then
|
|
error "Failed to delete pmem bdev!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_pool $default_pool_file; then
|
|
error "Failed to delete pmem pool file!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
#================================================
|
|
# delete_pmem_bdev tests
|
|
#================================================
|
|
function delete_bdev_tc1()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
local pmem_bdev_name
|
|
local bdevs_names
|
|
pmem_clean_pool_file
|
|
|
|
pmem_create_pool_file $default_pool_file 256 512
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get pmem info!"
|
|
fi
|
|
|
|
pmem_bdev_name=$($rpc_py construct_pmem_bdev -n $bdev_name $default_pool_file)
|
|
if [ $? != 0 ]; then
|
|
error "Failed to create pmem bdev!"
|
|
fi
|
|
|
|
if ! $rpc_py get_bdevs | jq -r '.[] .name' | grep -qi $pmem_bdev_name; then
|
|
error "$pmem_bdev_name bdev not found!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_bdev $pmem_bdev_name; then
|
|
error "Failed to delete $pmem_bdev_name bdev!"
|
|
fi
|
|
|
|
bdevs_names=$($rpc_py get_bdevs | jq -r '.[] .name')
|
|
if echo $bdevs_names | grep -qi $pmem_bdev_name; then
|
|
error "$pmem_bdev_name bdev is not deleted!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
function delete_bdev_tc2()
|
|
{
|
|
pmem_print_tc_name ${FUNCNAME[0]}
|
|
pmem_clean_pool_file
|
|
pmem_create_pool_file $default_pool_file 256 512
|
|
local pmem_bdev_name
|
|
|
|
if ! $rpc_py pmem_pool_info $default_pool_file; then
|
|
error "Failed to get pmem info!"
|
|
fi
|
|
|
|
pmem_bdev_name=$($rpc_py construct_pmem_bdev -n $bdev_name $default_pool_file)
|
|
if [ $? != 0 ]; then
|
|
error "Failed to create pmem bdev"
|
|
fi
|
|
|
|
if ! $rpc_py get_bdevs | jq -r '.[] .name' | grep -qi $pmem_bdev_name; then
|
|
error "Pmem bdev not found!"
|
|
fi
|
|
|
|
if ! $rpc_py delete_pmem_bdev $pmem_bdev_name; then
|
|
error "Failed to delete pmem bdev!"
|
|
fi
|
|
|
|
if $rpc_py delete_pmem_bdev $pmem_bdev_name; then
|
|
error "delete_pmem_bdev deleted pmem bdev for second time!"
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
return 0
|
|
}
|
|
|
|
timing_enter pmem
|
|
vhost_start
|
|
if ! $enable_script_debug; then
|
|
set +x
|
|
fi
|
|
|
|
if $test_info || $test_all; then
|
|
pmem_pool_info_tc1
|
|
pmem_pool_info_tc2
|
|
pmem_pool_info_tc3
|
|
pmem_pool_info_tc4
|
|
fi
|
|
|
|
if $test_create || $test_all; then
|
|
create_pmem_pool_tc1
|
|
create_pmem_pool_tc2
|
|
create_pmem_pool_tc3
|
|
create_pmem_pool_tc4
|
|
create_pmem_pool_tc5
|
|
create_pmem_pool_tc6
|
|
create_pmem_pool_tc7
|
|
create_pmem_pool_tc8
|
|
create_pmem_pool_tc9
|
|
fi
|
|
|
|
if $test_delete || $test_all; then
|
|
delete_pmem_pool_tc1
|
|
delete_pmem_pool_tc2
|
|
delete_pmem_pool_tc3
|
|
delete_pmem_pool_tc4
|
|
fi
|
|
|
|
if $test_construct_bdev || $test_all; then
|
|
construct_pmem_bdev_tc1
|
|
construct_pmem_bdev_tc2
|
|
construct_pmem_bdev_tc3
|
|
construct_pmem_bdev_tc4
|
|
construct_pmem_bdev_tc5
|
|
construct_pmem_bdev_tc6
|
|
fi
|
|
|
|
if $test_delete_bdev || $test_all; then
|
|
delete_bdev_tc1
|
|
delete_bdev_tc2
|
|
fi
|
|
|
|
pmem_clean_pool_file
|
|
report_test_completion "pmem"
|
|
vhost_kill
|
|
timing_exit pmem
|