rpc: Add test for pluggable RPCs

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: I62d8672389723f09e58ed66330e364042f375145

Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2419
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Maciej Szwed 2020-05-13 10:43:46 +02:00 committed by Tomasz Zawadzki
parent d3cf561199
commit 0418ef1ef1
2 changed files with 39 additions and 0 deletions

View File

@ -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

24
test/rpc/rpc_plugin.py Normal file
View File

@ -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)