From 0418ef1ef1b3edc28aafa53f9952f0df3e70f18f Mon Sep 17 00:00:00 2001 From: Maciej Szwed Date: Wed, 13 May 2020 10:43:46 +0200 Subject: [PATCH] rpc: Add test for pluggable RPCs Signed-off-by: Maciej Szwed Change-Id: I62d8672389723f09e58ed66330e364042f375145 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2419 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Tomasz Zawadzki --- test/rpc/rpc.sh | 15 +++++++++++++++ test/rpc/rpc_plugin.py | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 test/rpc/rpc_plugin.py diff --git a/test/rpc/rpc.sh b/test/rpc/rpc.sh index 4fbda195f..c2acd3ece 100755 --- a/test/rpc/rpc.sh +++ b/test/rpc/rpc.sh @@ -25,14 +25,29 @@ function rpc_integrity() { } } +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" ] + } +} + $rootdir/app/spdk_tgt/spdk_tgt & spdk_pid=$! trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT waitforlisten $spdk_pid +export PYTHONPATH=$PWD/test/rpc/ + # basic integrity test rpc="$rootdir/scripts/rpc.py" run_test "rpc_integrity" rpc_integrity +run_test "rpc_plugins" rpc_plugins # same test, but with rpc_cmd() instead rpc="rpc_cmd" run_test "rpc_daemon_integrity" rpc_integrity diff --git a/test/rpc/rpc_plugin.py b/test/rpc/rpc_plugin.py new file mode 100644 index 000000000..18c2d7c51 --- /dev/null +++ b/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)