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 time { 13 bdevs=$($rpc bdev_get_bdevs) 14 [ "$(jq length <<< "$bdevs")" == "0" ] 15 16 malloc=$($rpc bdev_malloc_create 8 512) 17 bdevs=$($rpc bdev_get_bdevs) 18 [ "$(jq length <<< "$bdevs")" == "1" ] 19 20 $rpc bdev_passthru_create -b "$malloc" -p Passthru0 21 bdevs=$($rpc bdev_get_bdevs) 22 [ "$(jq length <<< "$bdevs")" == "2" ] 23 24 $rpc bdev_passthru_delete Passthru0 25 $rpc bdev_malloc_delete $malloc 26 bdevs=$($rpc bdev_get_bdevs) 27 [ "$(jq length <<< "$bdevs")" == "0" ] 28 } 29} 30 31function rpc_plugins() { 32 time { 33 malloc=$($rpc --plugin rpc_plugin create_malloc) 34 bdevs=$($rpc bdev_get_bdevs) 35 [ "$(jq length <<< "$bdevs")" == "1" ] 36 37 $rpc --plugin rpc_plugin delete_malloc $malloc 38 bdevs=$($rpc bdev_get_bdevs) 39 [ "$(jq length <<< "$bdevs")" == "0" ] 40 } 41} 42 43function rpc_trace_cmd_test() { 44 local info 45 46 info=$($rpc trace_get_info) 47 [ "$(jq length <<< "$info")" -gt 2 ] 48 [ "$(jq 'has("tpoint_group_mask")' <<< "$info")" = "true" ] 49 [ "$(jq 'has("tpoint_shm_path")' <<< "$info")" = "true" ] 50 [ "$(jq 'has("bdev")' <<< "$info")" = "true" ] 51 [ "$(jq -r .bdev.tpoint_mask <<< "$info")" != "0x0" ] 52} 53 54$SPDK_BIN_DIR/spdk_tgt -e bdev & 55spdk_pid=$! 56trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT 57waitforlisten $spdk_pid 58 59export PYTHONPATH=$PYTHONPATH:$testdir 60 61# basic integrity test 62rpc=rpc_cmd 63run_test "rpc_integrity" rpc_integrity 64run_test "rpc_plugins" rpc_plugins 65run_test "rpc_trace_cmd_test" rpc_trace_cmd_test 66# same integrity test, but with rpc_cmd() instead 67rpc="rpc_cmd" 68run_test "rpc_daemon_integrity" rpc_integrity 69 70trap - SIGINT SIGTERM EXIT 71killprocess $spdk_pid 72