From b7408943d1c8d5688df84c7aaa83db656234c9bf Mon Sep 17 00:00:00 2001 From: Maciej Szwed Date: Mon, 22 Jul 2019 08:04:51 +0200 Subject: [PATCH] test/json: Fix json tests for NVMe with multiple namespaces Currently json tests try to remove NVMe controller for each NVMe bdev, but with NVMe that has multiple namepsaces it actually tries to remove same controller multiple times. This patch fixes that issue. Signed-off-by: Maciej Szwed Change-Id: I555cb2a9aa78fd4cc700ddda0f5c1026329a2d3a Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/461561 Tested-by: SPDK CI Jenkins Reviewed-by: Darek Stojaczyk Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- test/json_config/clear_config.py | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/test/json_config/clear_config.py b/test/json_config/clear_config.py index dc0a3c666..e982d38ed 100755 --- a/test/json_config/clear_config.py +++ b/test/json_config/clear_config.py @@ -30,23 +30,8 @@ def get_bdev_name(bdev): return bdev_name -def delete_subbdevs(args, bdev, rpc_bdevs): - ret_value = False - bdev_name = get_bdev_name(bdev) - if bdev_name and 'method' in bdev: - construct_method = bdev['method'] - if construct_method == 'construct_nvme_bdev': - for rpc_bdev in rpc_bdevs: - if bdev_name in rpc_bdev['name'] and rpc_bdev['product_name'] == "NVMe disk": - args.client.call('delete_nvme_controller', {'name': "%s" % rpc_bdev['name'].split('n')[0]}) - ret_value = True - - return ret_value - - def get_bdev_destroy_method(bdev): - destroy_method_map = {'construct_nvme_bdev': "delete_nvme_controller", - 'construct_malloc_bdev': "delete_malloc_bdev", + destroy_method_map = {'construct_malloc_bdev': "delete_malloc_bdev", 'construct_null_bdev': "delete_null_bdev", 'construct_rbd_bdev': "delete_rbd_bdev", 'construct_pmem_bdev': "delete_pmem_bdev", @@ -71,14 +56,16 @@ def get_bdev_destroy_method(bdev): def clear_bdev_subsystem(args, bdev_config): rpc_bdevs = args.client.call("get_bdevs") for bdev in bdev_config: - if delete_subbdevs(args, bdev, rpc_bdevs): - continue bdev_name_key = get_bdev_name_key(bdev) bdev_name = get_bdev_name(bdev) destroy_method = get_bdev_destroy_method(bdev) if destroy_method: args.client.call(destroy_method, {bdev_name_key: bdev_name}) + nvme_controllers = args.client.call("get_nvme_controllers") + for ctrlr in nvme_controllers: + args.client.call('delete_nvme_controller', {'name': ctrlr['name']}) + ''' Disable and reset hotplug ''' rpc.bdev.set_bdev_nvme_hotplug(args.client, False)