1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (C) 2019 Intel Corporation 4# All rights reserved. 5# 6testdir=$(readlink -f $(dirname $0)) 7rootdir=$(readlink -f $testdir/../..) 8source $rootdir/test/common/autotest_common.sh 9 10# simply check if rpc commands have any effect on spdk 11function rpc_integrity() { 12 bdevs=$($rpc bdev_get_bdevs) 13 [ "$(jq length <<< "$bdevs")" == "0" ] 14 15 malloc=$($rpc bdev_malloc_create 8 512) 16 bdevs=$($rpc bdev_get_bdevs) 17 [ "$(jq length <<< "$bdevs")" == "1" ] 18 19 $rpc bdev_passthru_create -b "$malloc" -p Passthru0 20 bdevs=$($rpc bdev_get_bdevs) 21 [ "$(jq length <<< "$bdevs")" == "2" ] 22 23 $rpc bdev_passthru_delete Passthru0 24 $rpc bdev_malloc_delete $malloc 25 bdevs=$($rpc bdev_get_bdevs) 26 [ "$(jq length <<< "$bdevs")" == "0" ] 27} 28 29function rpc_plugins() { 30 malloc=$($rpc --plugin rpc_plugin create_malloc) 31 bdevs=$($rpc bdev_get_bdevs) 32 [ "$(jq length <<< "$bdevs")" == "1" ] 33 34 $rpc --plugin rpc_plugin delete_malloc $malloc 35 bdevs=$($rpc bdev_get_bdevs) 36 [ "$(jq length <<< "$bdevs")" == "0" ] 37} 38 39function rpc_trace_cmd_test() { 40 local info 41 42 info=$($rpc trace_get_info) 43 [ "$(jq length <<< "$info")" -gt 2 ] 44 [ "$(jq 'has("tpoint_group_mask")' <<< "$info")" = "true" ] 45 [ "$(jq 'has("tpoint_shm_path")' <<< "$info")" = "true" ] 46 [ "$(jq 'has("bdev")' <<< "$info")" = "true" ] 47 [ "$(jq -r .bdev.tpoint_mask <<< "$info")" != "0x0" ] 48} 49 50$SPDK_BIN_DIR/spdk_tgt -e bdev & 51spdk_pid=$! 52trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT 53waitforlisten $spdk_pid 54 55export PYTHONPATH=$PYTHONPATH:$testdir 56 57# basic integrity test 58rpc=rpc_cmd 59run_test "rpc_integrity" rpc_integrity 60run_test "rpc_plugins" rpc_plugins 61run_test "rpc_trace_cmd_test" rpc_trace_cmd_test 62# same integrity test, but with rpc_cmd() instead 63rpc="rpc_cmd" 64run_test "rpc_daemon_integrity" rpc_integrity 65 66trap - SIGINT SIGTERM EXIT 67killprocess $spdk_pid 68