test/bdev: Replace old style config with json config
Overwrite ini config with json and use it in such a form throughout the entire test run. This patch is the beginning of the series targeting conversion of ini config to json in blockbdev tests. Change-Id: Ic64f24b2ea9df85ad1ba3d038a78384e6f2badf9 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/+/530 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Seth Howell <seth.howell5141@gmail.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
db43b387ba
commit
970601af86
@ -7,6 +7,25 @@ source $testdir/nbd_common.sh
|
|||||||
|
|
||||||
rpc_py="$rootdir/scripts/rpc.py"
|
rpc_py="$rootdir/scripts/rpc.py"
|
||||||
conf_file="$testdir/bdev.conf"
|
conf_file="$testdir/bdev.conf"
|
||||||
|
# Make sure the configuration is clean
|
||||||
|
:>"$conf_file"
|
||||||
|
|
||||||
|
function start_spdk_tgt() {
|
||||||
|
local spdk_cmd
|
||||||
|
|
||||||
|
if [[ -n $spdk_tgt_pid ]] && kill -0 "$spdk_tgt_pid" &>/dev/null; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -s $conf_file ]]; then
|
||||||
|
spdk_cmd+=(--config "$conf_file")
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$rootdir/app/spdk_tgt/spdk_tgt" "${spdk_cmd[@]}" &
|
||||||
|
spdk_tgt_pid=$!
|
||||||
|
trap 'killprocess "$spdk_tgt_pid"; exit 1' SIGINT SIGTERM EXIT
|
||||||
|
waitforlisten "$spdk_tgt_pid"
|
||||||
|
}
|
||||||
|
|
||||||
function setup_bdev_conf() {
|
function setup_bdev_conf() {
|
||||||
# Create a file to be used as an AIO backend
|
# Create a file to be used as an AIO backend
|
||||||
@ -27,9 +46,10 @@ dd if=/dev/zero of=/tmp/aiofile bs=2048 count=5000
|
|||||||
[Passthru]
|
[Passthru]
|
||||||
PT Malloc3 TestPT
|
PT Malloc3 TestPT
|
||||||
|
|
||||||
[QoS]
|
# FIXME: QoS doesn't work properly with json_config: issue 1146
|
||||||
Limit_IOPS Malloc0 20000
|
# [QoS]
|
||||||
Limit_BPS Malloc3 100
|
# Limit_IOPS Malloc0 20000
|
||||||
|
# Limit_BPS Malloc3 100
|
||||||
|
|
||||||
[RAID0]
|
[RAID0]
|
||||||
Name raid0
|
Name raid0
|
||||||
@ -45,8 +65,15 @@ function setup_nvme_conf() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setup_gpt_conf() {
|
function setup_gpt_conf() {
|
||||||
|
# FIXME: Remove this
|
||||||
|
if [[ $1 == reset ]]; then
|
||||||
|
# Make sure that on reset we use ini config only as part_dev_by_gpt()
|
||||||
|
# still depends on it
|
||||||
|
:>"$conf_file"
|
||||||
|
fi
|
||||||
setup_nvme_conf
|
setup_nvme_conf
|
||||||
if grep -q Nvme0 $conf_file; then
|
if grep -q Nvme0 $conf_file; then
|
||||||
|
[[ $1 == reset ]] && return 0
|
||||||
part_dev_by_gpt $conf_file Nvme0n1 $rootdir
|
part_dev_by_gpt $conf_file Nvme0n1 $rootdir
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
@ -82,7 +109,7 @@ function setup_rbd_conf() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function bdev_bounds() {
|
function bdev_bounds() {
|
||||||
$testdir/bdevio/bdevio -w -s $PRE_RESERVED_MEM -c $conf_file &
|
$testdir/bdevio/bdevio -w -s $PRE_RESERVED_MEM --json "$conf_file" &
|
||||||
bdevio_pid=$!
|
bdevio_pid=$!
|
||||||
trap 'killprocess $bdevio_pid; exit 1' SIGINT SIGTERM EXIT
|
trap 'killprocess $bdevio_pid; exit 1' SIGINT SIGTERM EXIT
|
||||||
echo "Process bdevio pid: $bdevio_pid"
|
echo "Process bdevio pid: $bdevio_pid"
|
||||||
@ -110,7 +137,7 @@ function nbd_function_test() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
modprobe nbd
|
modprobe nbd
|
||||||
$rootdir/test/app/bdev_svc/bdev_svc -r $rpc_server -i 0 -c ${conf} &
|
$rootdir/test/app/bdev_svc/bdev_svc -r $rpc_server -i 0 --json "$conf" &
|
||||||
nbd_pid=$!
|
nbd_pid=$!
|
||||||
trap 'killprocess $nbd_pid; exit 1' SIGINT SIGTERM EXIT
|
trap 'killprocess $nbd_pid; exit 1' SIGINT SIGTERM EXIT
|
||||||
echo "Process nbd pid: $nbd_pid"
|
echo "Process nbd pid: $nbd_pid"
|
||||||
@ -134,11 +161,11 @@ function fio_test_suite() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ $RUN_NIGHTLY_FAILING -eq 0 ]; then
|
if [ $RUN_NIGHTLY_FAILING -eq 0 ]; then
|
||||||
local fio_params="--ioengine=spdk_bdev --iodepth=8 --bs=4k --runtime=10 $testdir/bdev.fio --spdk_conf=./test/bdev/bdev.conf"
|
local fio_params="--ioengine=spdk_bdev --iodepth=8 --bs=4k --runtime=10 $testdir/bdev.fio --spdk_json_conf=./test/bdev/bdev.conf"
|
||||||
else
|
else
|
||||||
# Use size 192KB which both exceeds typical 128KB max NVMe I/O
|
# Use size 192KB which both exceeds typical 128KB max NVMe I/O
|
||||||
# size and will cross 128KB Intel DC P3700 stripe boundaries.
|
# size and will cross 128KB Intel DC P3700 stripe boundaries.
|
||||||
local fio_params="--ioengine=spdk_bdev --iodepth=128 --bs=192k --runtime=100 $testdir/bdev.fio --spdk_conf=./test/bdev/bdev.conf"
|
local fio_params="--ioengine=spdk_bdev --iodepth=128 --bs=192k --runtime=100 $testdir/bdev.fio --spdk_json_conf=./test/bdev/bdev.conf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_test "bdev_fio_rw_verify" fio_bdev $fio_params --spdk_mem=$PRE_RESERVED_MEM \
|
run_test "bdev_fio_rw_verify" fio_bdev $fio_params --spdk_mem=$PRE_RESERVED_MEM \
|
||||||
@ -234,7 +261,7 @@ function qos_function_test() {
|
|||||||
|
|
||||||
function qos_test_suite() {
|
function qos_test_suite() {
|
||||||
# Run bdevperf with QoS disabled first
|
# Run bdevperf with QoS disabled first
|
||||||
$testdir/bdevperf/bdevperf -z -m 0x2 -q 256 -o 4096 -w randread -t 60 &
|
"$testdir/bdevperf/bdevperf" -z -m 0x2 -q 256 -o 4096 -w randread -t 60 &
|
||||||
QOS_PID=$!
|
QOS_PID=$!
|
||||||
echo "Process qos testing pid: $QOS_PID"
|
echo "Process qos testing pid: $QOS_PID"
|
||||||
trap 'killprocess $QOS_PID; exit 1' SIGINT SIGTERM EXIT
|
trap 'killprocess $QOS_PID; exit 1' SIGINT SIGTERM EXIT
|
||||||
@ -289,14 +316,26 @@ if [ -n "$test_type" ]; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bdevs=$(discover_bdevs $rootdir $conf_file | jq -r '.[] | select(.claimed == false)')
|
start_spdk_tgt
|
||||||
|
|
||||||
|
# Overwrite ini config with json and use it as such throughout all the tests
|
||||||
|
cat <<-CONF >"$conf_file"
|
||||||
|
{"subsystems":[
|
||||||
|
$("$rpc_py" save_subsystem_config -n bdev)
|
||||||
|
]}
|
||||||
|
CONF
|
||||||
|
|
||||||
|
|
||||||
|
bdevs=$("$rpc_py" bdev_get_bdevs | jq -r '.[] | select(.claimed == false)')
|
||||||
bdevs_name=$(echo $bdevs | jq -r '.name')
|
bdevs_name=$(echo $bdevs | jq -r '.name')
|
||||||
bdev_list=($bdevs_name)
|
bdev_list=($bdevs_name)
|
||||||
hello_world_bdev=${bdev_list[0]}
|
hello_world_bdev=${bdev_list[0]}
|
||||||
|
trap - SIGINT SIGTERM EXIT
|
||||||
|
killprocess "$spdk_tgt_pid"
|
||||||
# End bdev configuration
|
# End bdev configuration
|
||||||
#-----------------------------------------------------
|
#-----------------------------------------------------
|
||||||
|
|
||||||
run_test "bdev_hello_world" $rootdir/examples/bdev/hello_world/hello_bdev -c $conf_file -b $hello_world_bdev
|
run_test "bdev_hello_world" $rootdir/examples/bdev/hello_world/hello_bdev --json "$conf_file" -b "$hello_world_bdev"
|
||||||
run_test "bdev_bounds" bdev_bounds
|
run_test "bdev_bounds" bdev_bounds
|
||||||
run_test "bdev_nbd" nbd_function_test $conf_file "$bdevs_name"
|
run_test "bdev_nbd" nbd_function_test $conf_file "$bdevs_name"
|
||||||
if [[ $CONFIG_FIO_PLUGIN == y ]]; then
|
if [[ $CONFIG_FIO_PLUGIN == y ]]; then
|
||||||
@ -311,8 +350,8 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
run_test "bdev_verify" $testdir/bdevperf/bdevperf -c $conf_file -q 128 -o 4096 -w verify -t 5
|
run_test "bdev_verify" $testdir/bdevperf/bdevperf --json "$conf_file" -q 128 -o 4096 -w verify -t 5
|
||||||
run_test "bdev_write_zeroes" $testdir/bdevperf/bdevperf -c $conf_file -q 128 -o 4096 -w write_zeroes -t 1
|
run_test "bdev_write_zeroes" $testdir/bdevperf/bdevperf --json "$conf_file" -q 128 -o 4096 -w write_zeroes -t 1
|
||||||
|
|
||||||
if [ -z $test_type ]; then
|
if [ -z $test_type ]; then
|
||||||
run_test "bdev_qos" qos_test_suite
|
run_test "bdev_qos" qos_test_suite
|
||||||
@ -320,12 +359,13 @@ fi
|
|||||||
|
|
||||||
# Temporarily disabled - infinite loop
|
# Temporarily disabled - infinite loop
|
||||||
# if [ $RUN_NIGHTLY -eq 1 ]; then
|
# if [ $RUN_NIGHTLY -eq 1 ]; then
|
||||||
# run_test "bdev_reset" $testdir/bdevperf/bdevperf -c $conf_file -q 16 -w reset -o 4096 -t 60
|
# run_test "bdev_reset" $testdir/bdevperf/bdevperf --json "$conf_file" -q 16 -w reset -o 4096 -t 60
|
||||||
# fi
|
# fi
|
||||||
|
|
||||||
# Bdev and configuration cleanup below this line
|
# Bdev and configuration cleanup below this line
|
||||||
#-----------------------------------------------------
|
#-----------------------------------------------------
|
||||||
if [ "$test_type" = "gpt" ]; then
|
if [ "$test_type" = "gpt" ]; then
|
||||||
|
setup_gpt_conf reset
|
||||||
part_dev_by_gpt $conf_file Nvme0n1 $rootdir reset
|
part_dev_by_gpt $conf_file Nvme0n1 $rootdir reset
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user