diff --git a/autotest.sh b/autotest.sh index c36c7374b..e16db3b21 100755 --- a/autotest.sh +++ b/autotest.sh @@ -126,6 +126,7 @@ timing_exit lib if [ $SPDK_TEST_ISCSI -eq 1 ]; then run_test ./test/iscsi_tgt/iscsi_tgt.sh posix + run_test ./test/iscsi_tgt/iscsijson/json_config.sh fi if [ $SPDK_TEST_BLOBFS -eq 1 ]; then diff --git a/test/iscsi_tgt/iscsijson/json_config.sh b/test/iscsi_tgt/iscsijson/json_config.sh new file mode 100755 index 000000000..ea4668086 --- /dev/null +++ b/test/iscsi_tgt/iscsijson/json_config.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -xe +ISCSI_JSON_DIR=$(readlink -f $(dirname $0)) +. $ISCSI_JSON_DIR/../../json_config/common.sh +. $JSON_DIR/../iscsi_tgt/common.sh +base_iscsi_config=$JSON_DIR/base_iscsi_config.json +last_iscsi_config=$JSON_DIR/last_iscsi_config.json +rpc_py="$spdk_rpc_py" +clear_config_py="$spdk_clear_config_py" +trap 'on_error_exit "${FUNCNAME}" "${LINENO}"; rm -f $base_iscsi_config $last_iscsi_config' ERR + +timing_enter iscsi_json_config +run_spdk_tgt +$rpc_py start_subsystem_init + +timing_enter iscsi_json_config_create_setup +$rpc_py add_portal_group $PORTAL_TAG 127.0.0.1:$ISCSI_PORT +$rpc_py add_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK +$rpc_py construct_malloc_bdev 64 4096 --name Malloc0 +$rpc_py construct_target_node Target3 Target3_alias 'Malloc0:0' $PORTAL_TAG:$INITIATOR_TAG 64 -d +$rpc_py save_config -f $base_iscsi_config +timing_exit iscsi_json_config_create_setup + +timing_enter iscsi_json_config_test +test_json_config +timing_exit iscsi_json_config_test + +timing_enter iscsi_json_config_restart_spdk +$clear_config_py clear_config +kill_targets +run_spdk_tgt +$rpc_py load_config -f $base_iscsi_config +$rpc_py save_config -f $last_iscsi_config +timing_exit iscsi_json_config_restart_spdk + +diff $base_iscsi_config $last_iscsi_config + +$clear_config_py clear_config +kill_targets +rm -f $base_iscsi_config $last_iscsi_config + +timing_exit iscsi_json_config +report_test_completion iscsi_json_config diff --git a/test/json_config/clear_config.py b/test/json_config/clear_config.py index a303e2b1e..ebde9fd39 100755 --- a/test/json_config/clear_config.py +++ b/test/json_config/clear_config.py @@ -100,12 +100,34 @@ def clear_nvmf_subsystem(args, nvmf_config): args.client.call(destroy_method, {'nqn': nvmf['params']['nqn']}) -def clear_scsi_subsystem(args, scsi_config): - pass +def get_iscsi_destroy_method(iscsi): + destroy_method_map = {'add_portal_group': "delete_portal_group", + 'add_initiator_group': "delete_initiator_group", + 'construct_target_node': "delete_target_node", + 'set_iscsi_options': None + } + return destroy_method_map[iscsi['method']] + + +def get_iscsi_name(iscsi): + if 'name' in iscsi['params']: + return iscsi['params']['name'] + else: + return iscsi['params']['tag'] + + +def get_iscsi_name_key(iscsi): + if iscsi['method'] == 'construct_target_node': + return "name" + else: + return 'tag' def clear_iscsi_subsystem(args, iscsi_config): - pass + for iscsi in iscsi_config: + destroy_method = get_iscsi_destroy_method(iscsi) + if destroy_method: + args.client.call(destroy_method, {get_iscsi_name_key(iscsi): get_iscsi_name(iscsi)}) def clear_nbd_subsystem(args, scsi_config):