xref: /spdk/test/rpc/rpc.sh (revision 58549382d02320e5d13bd57a16e33c39dc648848)
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