From 64cfaf3f16a01f6dabae0e6993ad01b413721ce3 Mon Sep 17 00:00:00 2001 From: Michal Berger Date: Tue, 11 Feb 2020 15:53:45 +0100 Subject: [PATCH] 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 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/778 Tested-by: SPDK CI Jenkins Reviewed-by: Tomasz Zawadzki Reviewed-by: Darek Stojaczyk --- test/common/autotest_common.sh | 39 ++++++++++++++++++++++++++++++++++ test/lvol/common.sh | 8 +++++++ 2 files changed, 47 insertions(+) diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index 28af51fd2..4846ad7e7 100755 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -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" diff --git a/test/lvol/common.sh b/test/lvol/common.sh index 1bbdb2485..f3cbbc945 100644 --- a/test/lvol/common.sh +++ b/test/lvol/common.sh @@ -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" ]