Commit f2c8083e authored by Wojciech Malikowski's avatar Wojciech Malikowski Committed by Tomasz Zawadzki
Browse files

lib/ftl: Functional tests



This patch adjust functional tests to
new FTL stack.

Change-Id: I0b8ff08c61793d7f1685942031aecf9cc88d1f24
Signed-off-by: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/468738


Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 151e37cf
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -263,9 +263,9 @@ if [ $SPDK_RUN_FUNCTIONAL_TEST -eq 1 ]; then
		run_test "ocf" ./test/ocf/ocf.sh
	fi

	# if [ $SPDK_TEST_FTL -eq 1 ]; then
	#	run_test "ftl" ./test/ftl/ftl.sh
	# fi
	if [ $SPDK_TEST_FTL -eq 1 ]; then
		run_test "ftl" ./test/ftl/ftl.sh
	fi

	if [ $SPDK_TEST_VMD -eq 1 ]; then
		run_test "vmd" ./test/vmd/vmd.sh
+13 −25
Original line number Diff line number Diff line
@@ -5,21 +5,15 @@ set -e
rootdir=$(readlink -f $(dirname $0))/..

function usage {
	echo "Usage: [-j] $0 -a TRANSPORT_ADDR -n BDEV_NAME [-u UUID] [-c CACHE]"
	echo "Usage: [-j] $0 -n BDEV_NAME -d BASE_BDEV [-u UUID] [-c CACHE]"
	echo "UUID is required when restoring device state"
	echo
	echo "-j json format"
	echo "TRANSPORT_ADDR - SSD's PCIe address"
	echo "BDEV_NAME - name of the bdev"
	echo "BASE_BDEV - name of the bdev to be used as underlying device"
	echo "UUID - bdev's uuid (used when in restore mode)"
	echo "CACHE - name of the bdev to be used as write buffer cache"
}

function create_classic_config {
	echo "[Ftl]"
	echo "  TransportID \"trtype:PCIe traddr:$1\" $2 $3 $4"
}

function create_json_config()
{
	echo "{"
@@ -28,9 +22,8 @@ function create_json_config()
	echo '{'
	echo '"method": "bdev_ftl_create",'
	echo '"params": {'
	echo "\"name\": \"$2\","
	echo '"trtype": "PCIe",'
	echo "\"traddr\": \"$1\","
	echo "\"name\": \"$1\","
	echo "\"base_bdev\": \"$2\","
	if [ -n "$4" ]; then
		echo "\"uuid\": \"$3\","
		echo "\"cache\": \"$4\""
@@ -45,11 +38,10 @@ function create_json_config()

uuid=00000000-0000-0000-0000-000000000000

while getopts "ja:n:l:m:u:c:h" arg; do
while getopts ":c:d:hn:u:" arg; do
	case "$arg" in
		j)	json=1		;;
		a)	addr=$OPTARG	;;
		n)	name=$OPTARG		;;
		d)	base_bdev=$OPTARG	;;
		u)	uuid=$OPTARG		;;
		c)	cache=$OPTARG		;;
		h)	usage
@@ -59,13 +51,9 @@ while getopts "ja:n:l:m:u:c:h" arg; do
	esac
done

if [[ -z "$addr" || -z "$name" ]]; then
if [[ -z "$name" || -z "$base_bdev" ]]; then
	usage
	exit 1
fi

if [ -n "$json" ]; then
	create_json_config $addr $name $uuid $cache
else
	create_classic_config $addr $name $uuid $cache
fi
create_json_config $name $base_bdev $uuid $cache
+4 −8
Original line number Diff line number Diff line
@@ -1540,21 +1540,17 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse

        print_dict(rpc.bdev.bdev_ftl_create(args.client,
                                            name=args.name,
                                            trtype=args.trtype,
                                            traddr=args.traddr,
                                            base_bdev=args.base_bdev,
                                            uuid=args.uuid,
                                            cache=args.cache,
                                            allow_open_bands=args.allow_open_bands,
                                            overprovisioning=args.overprovisioning,
                                            **arg_limits))

    p = subparsers.add_parser('bdev_ftl_create', aliases=['construct_ftl_bdev'],
                              help='Add FTL bdev')
    p = subparsers.add_parser('bdev_ftl_create', aliases=['construct_ftl_bdev'], help='Add FTL bdev')
    p.add_argument('-b', '--name', help="Name of the bdev", required=True)
    p.add_argument('-t', '--trtype',
                   help='NVMe target trtype: e.g., pcie', default='pcie')
    p.add_argument('-a', '--traddr',
                   help='NVMe target address: e.g., an ip address or BDF', required=True)
    p.add_argument('-d', '--base_bdev', help='Name of zoned bdev used as underlying device',
                   required=True)
    p.add_argument('-u', '--uuid', help='UUID of restored bdev (not applicable when creating new '
                   'instance): e.g. b286d19a-0059-4709-abcd-9f7732b1567d (optional)')
    p.add_argument('-c', '--cache', help='Name of the bdev to be used as a write buffer cache (optional)')
+3 −5
Original line number Diff line number Diff line
@@ -884,18 +884,16 @@ def bdev_split_delete(client, base_bdev):


@deprecated_alias('construct_ftl_bdev')
def bdev_ftl_create(client, name, trtype, traddr, **kwargs):
def bdev_ftl_create(client, name, base_bdev, **kwargs):
    """Construct FTL bdev

    Args:
        name: name of the bdev
        trtype: transport type
        traddr: transport address
        base_bdev: name of the base bdev
        kwargs: optional parameters
    """
    params = {'name': name,
              'trtype': trtype,
              'traddr': traddr}
              'base_bdev': base_bdev}
    for key, value in kwargs.items():
        if value is not None:
            params[key] = value
+20 −3
Original line number Diff line number Diff line
@@ -3,15 +3,32 @@
testdir=$(readlink -f $(dirname $0))
rootdir=$(readlink -f $testdir/../..)
source $rootdir/test/common/autotest_common.sh
source $testdir/common.sh

tests=('-q 1 -w randwrite -t 4 -o 69632' '-q 128 -w randwrite -t 4 -o 4096' '-q 128 -w verify -t 4 -o 4096')
device=$1
ftl_bdev_conf=$testdir/config/ftl.conf
rpc_py=$rootdir/scripts/rpc.py

$rootdir/scripts/gen_ftl.sh -a $device -n nvme0 > $ftl_bdev_conf
ftl_bdev_conf=$testdir/config/ftl.conf
gen_ftl_nvme_conf > $ftl_bdev_conf

for (( i=0; i<${#tests[@]}; i++ )) do
	timing_enter "${tests[$i]}"
	$rootdir/test/bdev/bdevperf/bdevperf -c $ftl_bdev_conf ${tests[$i]}
	$rootdir/test/bdev/bdevperf/bdevperf -z -T ftl0 ${tests[$i]} -c $ftl_bdev_conf &
	bdevperf_pid=$!

	trap 'killprocess $bdevperf_pid; exit 1' SIGINT SIGTERM EXIT
	waitforlisten $bdevperf_pid
	$rpc_py bdev_nvme_attach_controller -b nvme0 -a $device -t pcie
	$rpc_py bdev_ocssd_create -c nvme0 -b nvme0n1
	$rpc_py bdev_ftl_create -b ftl0 -d nvme0n1
	$rootdir/test/bdev/bdevperf/bdevperf.py perform_tests
	$rpc_py delete_ftl_bdev -b ftl0
	$rpc_py bdev_ocssd_delete nvme0n1
	$rpc_py delete_nvme_controller nvme0
	killprocess $bdevperf_pid
	trap - SIGINT SIGTERM EXIT
	timing_exit "${tests[$i]}"
done

rm -f $ftl_bdev_conf
Loading