diff options
Diffstat (limited to 'src/spdk/test/rpc')
-rwxr-xr-x | src/spdk/test/rpc/rpc.sh | 56 | ||||
-rw-r--r-- | src/spdk/test/rpc/rpc_plugin.py | 24 |
2 files changed, 80 insertions, 0 deletions
diff --git a/src/spdk/test/rpc/rpc.sh b/src/spdk/test/rpc/rpc.sh new file mode 100755 index 000000000..56da28cf5 --- /dev/null +++ b/src/spdk/test/rpc/rpc.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +testdir=$(readlink -f $(dirname $0)) +rootdir=$(readlink -f $testdir/../..) +source $rootdir/test/common/autotest_common.sh + +# simply check if rpc commands have any effect on spdk +function rpc_integrity() { + time { + bdevs=$($rpc bdev_get_bdevs) + [ "$(jq length <<< "$bdevs")" == "0" ] + + malloc=$($rpc bdev_malloc_create 8 512) + bdevs=$($rpc bdev_get_bdevs) + [ "$(jq length <<< "$bdevs")" == "1" ] + + $rpc bdev_passthru_create -b "$malloc" -p Passthru0 + bdevs=$($rpc bdev_get_bdevs) + [ "$(jq length <<< "$bdevs")" == "2" ] + + $rpc bdev_passthru_delete Passthru0 + $rpc bdev_malloc_delete $malloc + bdevs=$($rpc bdev_get_bdevs) + [ "$(jq length <<< "$bdevs")" == "0" ] + } +} + +function rpc_plugins() { + time { + malloc=$($rpc --plugin rpc_plugin create_malloc) + bdevs=$($rpc bdev_get_bdevs) + [ "$(jq length <<< "$bdevs")" == "1" ] + + $rpc --plugin rpc_plugin delete_malloc $malloc + bdevs=$($rpc bdev_get_bdevs) + [ "$(jq length <<< "$bdevs")" == "0" ] + } +} + +$SPDK_BIN_DIR/spdk_tgt & +spdk_pid=$! +trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT +waitforlisten $spdk_pid + +export PYTHONPATH=$testdir + +# basic integrity test +rpc="$rootdir/scripts/rpc.py" +run_test "rpc_integrity" rpc_integrity +run_test "rpc_plugins" rpc_plugins +# same integrity test, but with rpc_cmd() instead +rpc="rpc_cmd" +run_test "rpc_daemon_integrity" rpc_integrity + +trap - SIGINT SIGTERM EXIT +killprocess $spdk_pid diff --git a/src/spdk/test/rpc/rpc_plugin.py b/src/spdk/test/rpc/rpc_plugin.py new file mode 100644 index 000000000..18c2d7c51 --- /dev/null +++ b/src/spdk/test/rpc/rpc_plugin.py @@ -0,0 +1,24 @@ +from rpc.client import print_json + + +def malloc_create(args): + params = {'num_blocks': 256, 'block_size': 4096} + return args.client.call('bdev_malloc_create', params) + + +def malloc_delete(args): + params = {'name': args.name} + return args.client.call('bdev_malloc_delete', params) + + +def create_malloc(args): + print_json(malloc_create(args)) + + +def spdk_rpc_plugin_initialize(subparsers): + p = subparsers.add_parser('create_malloc', help='Create malloc backend') + p.set_defaults(func=create_malloc) + + p = subparsers.add_parser('delete_malloc', help='Delete malloc backend') + p.add_argument('name', help='malloc bdev name') + p.set_defaults(func=malloc_delete) |