test/ocf: Drop .ini config in favor of json

In persistent-metadata test,
add a sleep because of issue #1348

Change-Id: If9ecaf660ac7ed18614d87cc775e60371ca84a97
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1327
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Community-CI: Mellanox Build Bot
This commit is contained in:
Michal Berger 2020-03-17 10:59:19 +01:00 committed by Tomasz Zawadzki
parent e96d3280a0
commit 7a0274fc38
6 changed files with 194 additions and 39 deletions

View File

@ -7,6 +7,7 @@ source $rootdir/test/common/autotest_common.sh
bdevperf=$rootdir/test/bdev/bdevperf/bdevperf
rpc_py="$rootdir/scripts/rpc.py"
$bdevperf -c $curdir/mallocs.conf -q 128 -o 4096 -t 4 -w flush
$bdevperf -c $curdir/mallocs.conf -q 128 -o 4096 -t 4 -w unmap
$bdevperf -c $curdir/mallocs.conf -q 128 -o 4096 -t 4 -w write
source "$curdir/mallocs.conf"
$bdevperf --json <(gen_malloc_ocf_json) -q 128 -o 4096 -t 4 -w flush
$bdevperf --json <(gen_malloc_ocf_json) -q 128 -o 4096 -t 4 -w unmap
$bdevperf --json <(gen_malloc_ocf_json) -q 128 -o 4096 -t 4 -w write

View File

@ -18,23 +18,73 @@ clear_nvme
trap "cleanup; exit 1" SIGINT SIGTERM EXIT
nvme_cfg=$($rootdir/scripts/gen_nvme.sh)
# Building config is not backtrace worthy ...
xtrace_disable
config="
$(nvme_cfg)
config=() ocf_names=() ocf_modes=()
[Split]
Split Nvme0n1 8 101
ocf_names[1]=PT_Nvme ocf_modes[1]=pt
ocf_names[2]=WT_Nvme ocf_modes[2]=wt
ocf_names[3]=WB_Nvme0 ocf_modes[3]=wb
ocf_names[4]=WB_Nvme1 ocf_modes[4]=wb
[OCF]
OCF PT_Nvme pt Nvme0n1p0 Nvme0n1p1
OCF WT_Nvme wt Nvme0n1p2 Nvme0n1p3
OCF WB_Nvme0 wb Nvme0n1p4 Nvme0n1p5
OCF WB_Nvme1 wb Nvme0n1p6 Nvme0n1p7
"
echo "$config" > $curdir/modes.conf
mapfile -t config < <("$rootdir/scripts/gen_nvme.sh" --json)
fio_verify --filename=PT_Nvme:WT_Nvme:WB_Nvme0:WB_Nvme1 --spdk_conf=$curdir/modes.conf
# Drop anything from last closing ] so we can inject our own config pieces ...
config=("${config[@]::${#config[@]}-2}")
# ... and now convert entire array to a single string item
config=("${config[*]}")
config+=(
"$(
cat <<- JSON
{
"method": "bdev_split_create",
"params": {
"base_bdev": "Nvme0n1",
"split_count": 8,
"split_size_mb": 101
}
}
JSON
)"
)
for ((d = 0, c = 1; d <= ${#ocf_names[@]} + 2; d += 2, c++)); do
config+=(
"$(
cat <<- JSON
{
"method": "bdev_ocf_create",
"params": {
"name": "${ocf_names[c]}",
"mode": "${ocf_modes[c]}",
"cache_bdev_name": "Nvme0n1p$d",
"core_bdev_name": "Nvme0n1p$((d + 1))"
}
}
JSON
)"
)
done
# First ']}' closes our config and bdev subsystem blocks
cat <<- CONFIG > "$curdir/modes.conf"
{"subsystems":[
$(
IFS=","
printf '%s\n' "${config[*]}"
)
]}]}
CONFIG
# Format the config nicely and dump it to stdout for everyone to marvel at it ...
jq . "$curdir/modes.conf"
# ... and now back to our regularly scheduled program
xtrace_restore
fio_verify --filename=PT_Nvme:WT_Nvme:WB_Nvme0:WB_Nvme1 --spdk_json_conf="$curdir/modes.conf" --thread=1
trap - SIGINT SIGTERM EXIT
cleanup

View File

@ -1,9 +1,59 @@
gen_malloc_ocf_json () {
local size=300 # MB
local block_size=512
local config
[Malloc]
NumberOfLuns 3
LunSizeInMB 300
BlockSize 512
local malloc malloc_devs=3
for (( malloc = 0; malloc < malloc_devs; malloc++ )); do
config+=(
"$(
cat <<-JSON
{
"method": "bdev_malloc_create",
"params": {
"name": "Malloc$malloc",
"num_blocks": $(( (size << 20) / block_size )),
"block_size": 512
}
}
JSON
)"
)
done
[OCF]
OCF MalCache1 wt Malloc0 Malloc1
OCF MalCache2 pt Malloc0 Malloc2
local ocfs ocf ocf_mode ocf_cache ocf_core
ocfs=(1 2)
ocf_mode[1]=wt ocf_cache[1]=Malloc0 ocf_core[1]=Malloc1
ocf_mode[2]=pt ocf_cache[2]=Malloc0 ocf_core[2]=Malloc2
for ocf in "${ocfs[@]}"; do
config+=(
"$(
cat <<-JSON
{
"method": "bdev_ocf_create",
"params": {
"name": "MalCache$ocf",
"mode": "${ocf_mode[ocf]}",
"cache_bdev_name": "${ocf_cache[ocf]}",
"core_bdev_name": "${ocf_core[ocf]}"
}
}
JSON
)"
)
done
jq . <<-JSON
{
"subsystems": [
{
"subsystem": "bdev",
"config": [
$(IFS=","; printf '%s\n' "${config[*]}")
]
}
]
}
JSON
}

View File

@ -7,7 +7,8 @@ source $rootdir/test/common/autotest_common.sh
bdevperf=$rootdir/test/bdev/bdevperf/bdevperf
rpc_py="$rootdir/scripts/rpc.py"
$bdevperf -c $curdir/mallocs.conf -q 128 -o 4096 -w write -t 120 -r /var/tmp/spdk.sock &
source "$curdir/mallocs.conf"
$bdevperf --json <(gen_malloc_ocf_json) -q 128 -o 4096 -w write -t 120 -r /var/tmp/spdk.sock &
bdev_perf_pid=$!
waitforlisten $bdev_perf_pid
sleep 1

View File

@ -4,18 +4,48 @@ curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
rootdir=$(readlink -f $curdir/../../..)
source $rootdir/test/ocf/common.sh
config="
$(nvme_cfg)
source $rootdir/scripts/common.sh
source $rootdir/test/common/autotest_common.sh
[Split]
Split Nvme0n1 7 128
"
echo "$config" > $curdir/config
rpc_py=$rootdir/scripts/rpc.py
$rootdir/scripts/setup.sh
mapfile -t config < <("$rootdir/scripts/gen_nvme.sh" --json)
# Drop anything from last closing ] so we can inject our own config pieces ...
config=("${config[@]::${#config[@]}-2}")
# ... and now convert entire array to a single string item
config=("${config[*]}")
config+=(
"$(
cat <<- JSON
{
"method": "bdev_split_create",
"params": {
"base_bdev": "Nvme0n1",
"split_count": 7,
"split_size_mb": 128
}
}
JSON
)"
)
# First ']}' closes our config and bdev subsystem blocks
jq . <<- CONFIG > "$curdir/config"
{"subsystems":[
$(
IFS=","
printf '%s\n' "${config[*]}"
)
]}]}
CONFIG
# Clear nvme device which we will use in test
clear_nvme
$rootdir/app/iscsi_tgt/iscsi_tgt -c $curdir/config &
"$rootdir/app/iscsi_tgt/iscsi_tgt" --json "$curdir/config" &
spdk_pid=$!
waitforlisten $spdk_pid
@ -36,12 +66,13 @@ trap - SIGINT SIGTERM EXIT
killprocess $spdk_pid
# Check for ocf persistency after restart
$rootdir/app/iscsi_tgt/iscsi_tgt -c $curdir/config &
"$rootdir/app/iscsi_tgt/iscsi_tgt" --json "$curdir/config" &
spdk_pid=$!
trap 'killprocess $spdk_pid; rm -f $curdir/config ocf_bdevs ocf_bdevs_verify; exit 1' SIGINT SIGTERM EXIT
waitforlisten $spdk_pid
sleep 5
# OCF should be loaded now as well

View File

@ -10,13 +10,35 @@ rm -f aio*
truncate -s 128M aio0
truncate -s 128M aio1
echo "
[AIO]
AIO ./aio0 aio0 512
AIO ./aio1 aio1 512
" > $curdir/config
jq . <<- JSON > "$curdir/config"
{
"subsystems": [
{
"subsystem": "bdev",
"config": [
{
"method": "bdev_aio_create",
"params": {
"name": "ai0",
"block_size": 512,
"filename": "./aio0"
}
},
{
"method": "bdev_aio_create",
"params": {
"name": "aio1",
"block_size": 512,
"filename": "./aio1"
}
}
]
}
]
}
JSON
$rootdir/app/iscsi_tgt/iscsi_tgt -c $curdir/config &
"$rootdir/app/iscsi_tgt/iscsi_tgt" --json "$curdir/config" &
spdk_pid=$!
waitforlisten $spdk_pid
@ -42,7 +64,7 @@ trap - SIGINT SIGTERM EXIT
killprocess $spdk_pid
# Check for ocfWT was deleted permanently
$rootdir/app/iscsi_tgt/iscsi_tgt -c $curdir/config &
"$rootdir/app/iscsi_tgt/iscsi_tgt" --json "$curdir/config" &
spdk_pid=$!
trap 'killprocess $spdk_pid; rm -f aio* $curdir/config ocf_bdevs ocf_bdevs_verify; exit 1' SIGINT SIGTERM EXIT