test/lvol: Add function to handle output from simple jq queries

This function exposes assoc array which consits of fields extracted
out of the parsed jq output.

Change-Id: I189c5c01e6efd60d6f2010df90093920a5d37690
Signed-off-by: Michal Berger <michalx.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/778
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
This commit is contained in:
Michal Berger 2020-02-11 15:53:45 +01:00 committed by Tomasz Zawadzki
parent eb33c9a659
commit 64cfaf3f16
2 changed files with 47 additions and 0 deletions

View File

@ -323,6 +323,45 @@ function rpc_cmd() {
[[ $rc == 0 ]]
}
function rpc_cmd_simple_data_json() {
local elems="$1[@]" elem
local -gA jq_out=()
local jq val
local lvs=(
"uuid"
"name"
"base_bdev"
"total_data_clusters"
"free_clusters"
"block_size"
"cluster_size"
)
local bdev=(
"name"
"aliases[0]"
"block_size"
"num_blocks"
"uuid"
"product_name"
)
[[ -v $elems ]] || return 1
for elem in "${!elems}"; do
jq="${jq:+$jq,\"\\n\",}\"$elem\",\" \",.[0].$elem"
done
jq+=',"\n"'
shift
while read -r elem val; do
jq_out["$elem"]=$val
done < <(rpc_cmd "$@" | jq -jr "$jq")
(( ${#jq_out[@]} > 0 )) || return 1
}
function timing() {
direction="$1"
testname="$2"

View File

@ -8,6 +8,14 @@ LVS_DEFAULT_CLUSTER_SIZE=$(( LVS_DEFAULT_CLUSTER_SIZE_MB * 1024 * 1024 ))
LVS_DEFAULT_CAPACITY_MB=$(( MALLOC_SIZE_MB - LVS_DEFAULT_CLUSTER_SIZE_MB ))
LVS_DEFAULT_CAPACITY=$(( LVS_DEFAULT_CAPACITY_MB * 1024 * 1024 ))
function get_bdev_jq() {
rpc_cmd_simple_data_json bdev "$@"
}
function get_lvs_jq() {
rpc_cmd_simple_data_json lvs "$@"
}
function check_leftover_devices() {
leftover_bdevs=$(rpc_cmd bdev_get_bdevs)
[ "$(jq length <<< "$leftover_bdevs")" == "0" ]