From a3ac80c10522290262b949397094c7eef26c8bd0 Mon Sep 17 00:00:00 2001 From: Michal Berger Date: Fri, 5 Nov 2021 14:03:33 +0100 Subject: [PATCH] test/config_converter: Drop config_converter tests It's been some time since SPDK switched from ini to json, there's no much benefit from keeping these tests around. Signed-off-by: Michal Berger Change-Id: I0cf7fcd6587abe872553211e41bee12e14bf234f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10065 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Reviewed-by: Karol Latecki Reviewed-by: Tomasz Zawadzki Reviewed-by: Paul Luse Reviewed-by: Jacek Kalwas Reviewed-by: Jim Harris --- autotest.sh | 4 - scripts/config_converter.py | 684 ------------------ test/common/autotest_common.sh | 2 - test/common/config/vm_setup.sh | 1 - test/config_converter/config.ini | 146 ---- test/config_converter/config_virtio.ini | 21 - test/config_converter/spdk_config.json | 484 ------------- test/config_converter/spdk_config_virtio.json | 42 -- test/config_converter/test_converter.sh | 29 - 9 files changed, 1413 deletions(-) delete mode 100755 scripts/config_converter.py delete mode 100644 test/config_converter/config.ini delete mode 100644 test/config_converter/config_virtio.ini delete mode 100644 test/config_converter/spdk_config.json delete mode 100644 test/config_converter/spdk_config_virtio.json delete mode 100755 test/config_converter/test_converter.sh diff --git a/autotest.sh b/autotest.sh index d7c41b17d7..0be6a5cedd 100755 --- a/autotest.sh +++ b/autotest.sh @@ -205,10 +205,6 @@ if [ $SPDK_RUN_FUNCTIONAL_TEST -eq 1 ]; then fi fi - if [ $SPDK_TEST_JSON -eq 1 ]; then - run_test "test_converter" test/config_converter/test_converter.sh - fi - if [ $SPDK_TEST_NVME -eq 1 ]; then run_test "blockdev_nvme" test/bdev/blockdev.sh "nvme" if [[ $(uname -s) == Linux ]]; then diff --git a/scripts/config_converter.py b/scripts/config_converter.py deleted file mode 100755 index 967070a20e..0000000000 --- a/scripts/config_converter.py +++ /dev/null @@ -1,684 +0,0 @@ -#!/usr/bin/env python3 - -import configparser -import re -import sys -import json -from collections import OrderedDict - -bdev_dict = OrderedDict() -bdev_dict["bdev_set_options"] = [] -bdev_dict["bdev_split_create"] = [] -bdev_dict["bdev_nvme_set_options"] = [] -bdev_dict["bdev_nvme_attach_controller"] = [] -bdev_dict["bdev_nvme_set_hotplug"] = [] -bdev_dict["bdev_malloc_create"] = [] -bdev_dict["bdev_aio_create"] = [] -bdev_dict["bdev_pmem_create"] = [] -bdev_dict["bdev_virtio_attach_controller"] = [] - -vhost_dict = OrderedDict() -vhost_dict["vhost_create_scsi_controller"] = [] -vhost_dict["vhost_create_blk_controller"] = [] - -iscsi_dict = OrderedDict() -iscsi_dict["iscsi_set_options"] = [] -iscsi_dict["iscsi_create_portal_group"] = [] -iscsi_dict["iscsi_create_initiator_group"] = [] -iscsi_dict["iscsi_create_target_node"] = [] - -nvmf_dict = OrderedDict() -nvmf_dict["nvmf_set_config"] = [] -nvmf_dict["nvmf_set_max_subsystems"] = [] -nvmf_dict["subsystems"] = [] - - -# dictionary with new config that will be written to new json config file -subsystem = { - "bdev": bdev_dict, - "nvmf": nvmf_dict, - "vhost": vhost_dict, - "iscsi": iscsi_dict -} - - -class OptionOrderedDict(OrderedDict): - def __setitem__(self, option, value): - if option in self and isinstance(value, list): - self[option].extend(value) - return - super(OptionOrderedDict, self).__setitem__(option, value) - - -no_yes_map = {"no": False, "No": False, "Yes": True, "yes": True} - - -def generate_new_json_config(): - json_subsystems = [] - - bdev_subsystem = {"subsystem": "bdev", "config": []} - for method in subsystem['bdev']: - for item in subsystem['bdev'][method]: - bdev_subsystem['config'].append(item) - if bdev_subsystem['config']: - json_subsystems.append(bdev_subsystem) - nvmf_subsystem = {"subsystem": "nvmf", "config": []} - for method in subsystem['nvmf']: - for item in subsystem['nvmf'][method]: - nvmf_subsystem['config'].append(item) - if nvmf_subsystem['config']: - json_subsystems.append(nvmf_subsystem) - vhost_subsystem = {"subsystem": "vhost", "config": []} - for method in subsystem['vhost']: - for item in subsystem['vhost'][method]: - vhost_subsystem['config'].append(item) - if vhost_subsystem['config']: - json_subsystems.append(vhost_subsystem) - iscsi_subsystem = {"subsystem": "iscsi", "config": []} - for method in subsystem['iscsi']: - for item in subsystem['iscsi'][method]: - iscsi_subsystem['config'].append(item) - if iscsi_subsystem['config']: - json_subsystems.append(iscsi_subsystem) - - return {"subsystems": json_subsystems} - - -section_to_subsystem = { - "Bdev": subsystem['bdev'], - "AIO": subsystem['bdev'], - "Malloc": subsystem['bdev'], - "Nvme": subsystem['bdev'], - "Pmem": subsystem['bdev'], - "Split": subsystem['bdev'], - "Nvmf": subsystem['nvmf'], - "Subsystem": subsystem['nvmf'], - "VhostScsi": subsystem['vhost'], - "VhostBlk": subsystem['vhost'], - "VhostNvme": subsystem['vhost'], - "VirtioUser": subsystem['bdev'], - "iSCSI": subsystem['iscsi'], - "PortalGroup": subsystem['iscsi'], - "InitiatorGroup": subsystem['iscsi'], - "TargetNode": subsystem['iscsi'] -} - - -def set_param(params, cfg_name, value): - for param in params: - if param[0] != cfg_name: - continue - if param[1] == "disable_chap": - param[3] = True if value == "None" else False - elif param[1] == "require_chap": - param[3] = True if value in ["CHAP", "Mutual"] else False - elif param[1] == "mutual_chap": - param[3] = True if value == "Mutual" else False - elif param[1] == "chap_group": - param[3] = int(value.replace("AuthGroup", "")) - elif param[2] == bool: - param[3] = True if value in ("yes", "true", "Yes") else False - elif param[2] == "hex": - param[3] = str(int(value, 16)) - elif param[2] == int: - param[3] = int(value) - elif param[2] == list: - param[3].append(value) - elif param[2] == "dev_type": - if value.lower() == "blk": - param[3] = "blk" - else: - param[3] = param[2](value.replace("\"", "")) - - -def to_json_params(params): - out = {} - for param in params: - if param[3] is not None: - out[param[1]] = param[3] - return out - - -def get_bdev_options_json(config, section): - params = [ - ["BdevIoPoolSize", "bdev_io_pool_size", int, 65536], - ["BdevIoCacheSize", "bdev_io_cache_size", int, 256] - ] - for option in config.options("Bdev"): - set_param(params, option, config.get("Bdev", option)) - - return [{"params": to_json_params(params), "method": "bdev_set_options"}] - - -def get_aio_bdev_json(config, section): - aio_json = [] - value = None - for option in config.options("AIO"): - if option == "AIO": - value = config.get("AIO", option).split("\n") - if value is None: - return aio_json - for item in value: - items = re.findall(r"\S+", item) - params = {} - params['filename'] = items[0] - params['name'] = items[1] - if len(items) == 3: - params['block_size'] = int(items[2]) - aio_json.append({ - "params": params, - "method": "bdev_aio_create" - }) - - return aio_json - - -def get_malloc_bdev_json(config, section): - malloc_json = [] - params = [ - ['NumberOfLuns', '', int, -1], - ['LunSizeInMB', '', int, 20], - ['BlockSize', '', int, 512] - ] - for option in config.options("Malloc"): - set_param(params, option, config.get("Malloc", option)) - for lun in range(0, params[0][3]): - malloc_json.append({ - "params": { - "block_size": params[2][3], - "num_blocks": params[1][3] * 1024 * 1024 / params[2][3], - "name": "Malloc%s" % lun - }, - "method": "bdev_malloc_create" - }) - - return malloc_json - - -def get_nvme_bdev_json(config, section): - params = [ - ["RetryCount", "retry_count", int, 4], - ["TimeoutuSec", "timeout_us", int, 0], - ["AdminPollRate", "nvme_adminq_poll_period_us", int, 1000000], - ["ActionOnTimeout", "action_on_timeout", str, "none"], - ["IOPollRate", "nvme_ioq_poll_period_us", int, 0], - ["HotplugEnable", "enable", bool, False], - ["AdminPollRate", "period_us", int, 1000] - ] - nvme_json = [] - for option in config.options("Nvme"): - value = config.get("Nvme", option) - if "TransportID" == option: - entry = re.findall(r"\S+", value) - nvme_name = entry[-1] - trtype = re.findall(r"trtype:\S+", value) - if trtype: - trtype = trtype[0].replace("trtype:", "").replace("\"", "") - traddr = re.findall(r"traddr:\S+", value) - if traddr: - traddr = traddr[0].replace("traddr:", "").replace("\"", "") - nvme_json.append({ - "params": { - "trtype": trtype, - "name": nvme_name, - "traddr": traddr - }, - "method": "bdev_nvme_attach_controller" - }) - else: - set_param(params, option, value) - params[3][3] = params[3][3].lower() - params[6][3] = params[6][3] * 100 - nvme_json.append({ - "params": to_json_params(params[5:7]), - "method": "bdev_nvme_set_hotplug" - }) - nvme_json.append({ - "params": to_json_params(params[0:5]), - "method": "bdev_nvme_set_options" - }) - return nvme_json - - -def get_pmem_bdev_json(config, section): - pmem_json = [] - for option in config.options(section): - if "Blk" == option: - for value in config.get(section, option).split("\n"): - items = re.findall(r"\S+", value) - pmem_json.append({ - "params": { - "name": items[1], - "pmem_file": items[0] - }, - "method": "bdev_pmem_create" - }) - - return pmem_json - - -def get_split_bdev_json(config, section): - split_json = [] - value = [] - for option in config.options("Split"): - if "Split" == option: - value = config.get("Split", option) - if value and not isinstance(value, list): - value = [value] - for split in value: - items = re.findall(r"\S+", split) - split_size_mb = 0 - base_bdev = items[0] - split_count = int(items[1]) - if len(items) == 3: - split_size_mb = items[2] - split_json.append({ - "params": { - "base_bdev": base_bdev, - "split_size_mb": split_size_mb, - "split_count": split_count - }, - "method": "bdev_split_create" - }) - - return split_json - - -def get_nvmf_options_json(config, section): - params = [ - ["AcceptorPollRate", "acceptor_poll_rate", int, 10000], - ["MaxSubsystems", "max_subsystems", int, 1024] - ] - for option in config.options("Nvmf"): - set_param(params, option, config.get("Nvmf", option)) - nvmf_json = [] - nvmf_json.append({ - "params": to_json_params([params[0]]), - "method": "nvmf_set_config" - }) - nvmf_json.append({ - "params": to_json_params(params[1:7]), - "method": "nvmf_set_max_subsystems" - }) - - return nvmf_json - - -def get_nvmf_subsystem_json(config, section): - nvmf_subsystem_methods = [] - params = [ - # Last items are default values if given entry is not set - ["Host", "hosts", list, []], - ["NQN", "nqn", str, ""], - ["AllowAnyHost", "allow_any_host", bool, False], - ["SN", "serial_number", str, "00000000000000000000"], - ["MN", "model_number", str, "SPDK bdev Controller"], - ["MaxNamespaces", "max_namespaces", str, ""], - ] - listen_address = [] - namespaces = [] - nsid = 0 - searched_items = [param[0] for param in params] - for option in config.options(section): - value = config.get(section, option) - if option in searched_items: - set_param(params, option, value) - continue - if "Listen" == option: - items = re.findall(r"\S+", value) - adrfam = "IPv4" - if len(items[1].split(":")) > 2: - adrfam = "IPv6" - listen_address.append({ - "trtype": items[0], - "adrfam": adrfam, - "trsvcid": items[1].rsplit(":", 1)[-1], - "traddr": items[1].rsplit(":", 1)[0].replace( - "]", "").replace("[", "") - }) - if "Namespace" == option: - for item in value.split("\n"): - items = re.findall(r"\S+", item) - if len(items) == 2: - nsid = items[1] - else: - nsid += 1 - namespaces.append({ - "nsid": int(nsid), - "bdev_name": items[0], - }) - # Get parameters: nqn, allow_any_host, serial_number - # for nvmf_create_subsystem rpc method - parameters = to_json_params(params[1:5]) - nvmf_subsystem_methods.append({ - "params": parameters, - "method": "nvmf_create_subsystem" - }) - for listen in listen_address: - nvmf_subsystem_methods.append({ - "params": { - "listen_address": listen, - "nqn": parameters['nqn'] - }, - "method": "nvmf_subsystem_add_listener" - }) - for host in to_json_params([params[0]])['hosts']: - nvmf_subsystem_methods.append({ - "params": { - "host": host, - "nqn": parameters['nqn'] - }, - "method": "nvmf_subsystem_add_host" - }) - for namespace in namespaces: - nvmf_subsystem_methods.append({ - "params": { - "namespace": namespace, - "nqn": parameters['nqn'] - }, - "method": "nvmf_subsystem_add_ns" - }) - - # Define max_namespaces if it is set in old config - if params[5][3]: - nvmf_subsystem_methods[0]['params']['max_namespaces'] = int(params[5][3]) - - return nvmf_subsystem_methods - - -def get_vhost_scsi_json(config, section): - params = [ - ["Name", "ctrlr", str, None], - ["Cpumask", "cpumask", "hex", "1"], - ] - targets = [] - vhost_scsi_json = [] - for option in config.options(section): - value = config.get(section, option) - if option in ["Name", "Cpumask"]: - set_param(params, option, value) - if "Target" == option: - for item in value.split("\n"): - items = re.findall(r"\S+", item) - targets.append({ - "scsi_target_num": int(items[0]), - "ctrlr": params[0][3], - "bdev_name": items[1] - }) - vhost_scsi_json.append({ - "params": to_json_params(params), - "method": "vhost_create_scsi_controller" - }) - for target in targets: - vhost_scsi_json.append({ - "params": target, - "method": "vhost_scsi_controller_add_target" - }) - - return vhost_scsi_json - - -def get_vhost_blk_json(config, section): - params = [ - ["ReadOnly", "readonly", bool, False], - ["Dev", "dev_name", str, ""], - ["Name", "ctrlr", str, ""], - ["Cpumask", "cpumask", "hex", ""] - ] - for option in config.options(section): - set_param(params, option, config.get(section, option)) - return [{"method": "vhost_create_blk_controller", - "params": to_json_params(params)}] - - -def get_virtio_user_json(config, section): - params = [ - ["Path", "traddr", str, ""], - ["Queues", "vq_count", int, 1], - ["Type", "dev_type", "dev_type", "scsi"], - ["Name", "name", str, section], - # Define parameters with default values. - # These params are set by rpc commands and - # do not occur in ini config file. - # But they are visible in json config file - # with default values even if not set by rpc. - [None, "trtype", str, "user"], - [None, "vq_size", int, 512] - ] - for option in config.options(section): - set_param(params, option, config.get(section, option)) - dev_name = "Scsi" - if params[2][3] == "blk": - dev_name = "Blk" - params[3][3] = params[3][3].replace("User", dev_name) - - return [{ - "params": to_json_params(params), - "method": "bdev_virtio_attach_controller" - }] - - -def get_iscsi_options_json(config, section): - params = [ - ['AllowDuplicateIsid', 'allow_duplicated_isid', bool, False], - ['DefaultTime2Retain', 'default_time2retain', int, 20], - ['DiscoveryAuthMethod', 'mutual_chap', bool, False], - ['MaxConnectionsPerSession', 'max_connections_per_session', int, 2], - ['Timeout', 'nop_timeout', int, 60], - ['DiscoveryAuthMethod', 'disable_chap', bool, False], - ['DiscoveryAuthMethod', 'require_chap', bool, False], - ['NodeBase', 'node_base', str, "iqn.2016-06.io.spdk"], - ['AuthFile', 'auth_file', str, None], - ['DiscoveryAuthGroup', 'chap_group', int, 0], - ['MaxSessions', 'max_sessions', int, 128], - ['ImmediateData', 'immediate_data', bool, True], - ['ErrorRecoveryLevel', 'error_recovery_level', int, 0], - ['NopInInterval', 'nop_in_interval', int, 30], - ['DefaultTime2Wait', 'default_time2wait', int, 2], - ['QueueDepth', 'max_queue_depth', int, 64], - ['', 'first_burst_length', int, 8192] - ] - for option in config.options(section): - set_param(params, option, config.get(section, option)) - return [{"method": "iscsi_set_options", "params": to_json_params(params)}] - - -def get_iscsi_portal_group_json(config, name): - portal_group_json = [] - portals = [] - for option in config.options(name): - if "Portal" == option: - for value in config.get(name, option).split("\n"): - items = re.findall(r"\S+", value) - portal = {'host': items[1].rsplit(":", 1)[0]} - if "@" in items[1]: - portal['port'] =\ - items[1].rsplit(":", 1)[1].split("@")[0] - else: - portal['port'] = items[1].rsplit(":", 1)[1] - portals.append(portal) - - portal_group_json.append({ - "params": { - "portals": portals, - "tag": int(re.findall(r'\d+', name)[0]) - }, - "method": "iscsi_create_portal_group" - }) - - return portal_group_json - - -def get_iscsi_initiator_group_json(config, name): - initiators = [] - netmasks = [] - - for option in config.options(name): - if "InitiatorName" == option: - initiators.append(config.get(name, option)) - if "Netmask" == option: - netmasks.append(config.get(name, option)) - initiator_group_json = { - "params": { - "initiators": initiators, - "tag": int(re.findall(r'\d+', name)[0]), - "netmasks": netmasks - }, - "method": "iscsi_create_initiator_group" - } - - return [initiator_group_json] - - -def get_iscsi_target_node_json(config, section): - luns = [] - mutual_chap = False - name = "" - alias_name = "" - require_chap = False - chap_group = 1 - pg_ig_maps = [] - data_digest = False - disable_chap = False - header_digest = False - queue_depth = 64 - - for option in config.options(section): - value = config.get(section, option) - if "TargetName" == option: - name = value - if "TargetAlias" == option: - alias_name = value.replace("\"", "") - if "Mapping" == option: - items = re.findall(r"\S+", value) - pg_ig_maps.append({ - "ig_tag": int(re.findall(r'\d+', items[1])[0]), - "pg_tag": int(re.findall(r'\d+', items[0])[0]) - }) - if "AuthMethod" == option: - items = re.findall(r"\S+", value) - for item in items: - if "CHAP" == item: - require_chap = True - elif "Mutual" == item: - mutual_chap = True - elif "Auto" == item: - disable_chap = False - require_chap = False - mutual_chap = False - elif "None" == item: - disable_chap = True - require_chap = False - mutual_chap = False - if "AuthGroup" == option: # AuthGroup1 - items = re.findall(r"\S+", value) - chap_group = int(re.findall(r'\d+', items[0])[0]) - if "UseDigest" == option: - items = re.findall(r"\S+", value) - for item in items: - if "Header" == item: - header_digest = True - elif "Data" == item: - data_digest = True - elif "Auto" == item: - header_digest = False - data_digest = False - - if re.match(r"LUN\d+", option): - luns.append({"lun_id": len(luns), - "bdev_name": value}) - if "QueueDepth" == option: - queue_depth = int(value) - - params = {"alias_name": alias_name} - params["name"] = "iqn.2016-06.io.spdk:%s" % name - params["luns"] = luns - params["pg_ig_maps"] = pg_ig_maps - params["queue_depth"] = queue_depth - params["chap_group"] = chap_group - params["header_digest"] = header_digest - params["mutual_chap"] = mutual_chap - params["require_chap"] = require_chap - params["data_digest"] = data_digest - params["disable_chap"] = disable_chap - - target_json = { - "params": params, - "method": "iscsi_create_target_node" - } - - return [target_json] - - -if __name__ == "__main__": - try: - config = configparser.ConfigParser(strict=False, delimiters=(' '), - dict_type=OptionOrderedDict, - allow_no_value=True) - # Do not parse options and values. Capital letters are relevant. - config.optionxform = str - config.read_file(sys.stdin) - except Exception as e: - print("Exception while parsing config: %s" % e) - exit(1) - - for section in config.sections(): - match = re.match(r'(Bdev|Nvme|Malloc|VirtioUser\d+|Split|Pmem|AIO|' - r'iSCSI|PortalGroup\d+|InitiatorGroup\d+|' - r'TargetNode\d+|Nvmf|Subsystem\d+|VhostScsi\d+|' - r'VhostBlk\d+)', section) - if match: - match_section = ''.join(letter for letter in match.group(0) - if not letter.isdigit()) - if match_section == "Bdev": - items = get_bdev_options_json(config, section) - elif match_section == "AIO": - items = get_aio_bdev_json(config, section) - elif match_section == "Malloc": - items = get_malloc_bdev_json(config, section) - elif match_section == "Nvme": - items = get_nvme_bdev_json(config, section) - elif match_section == "Pmem": - items = get_pmem_bdev_json(config, section) - elif match_section == "Split": - items = get_split_bdev_json(config, section) - elif match_section == "Nvmf": - items = get_nvmf_options_json(config, section) - elif match_section == "Subsystem": - items = get_nvmf_subsystem_json(config, section) - elif match_section == "VhostScsi": - items = get_vhost_scsi_json(config, section) - elif match_section == "VhostBlk": - items = get_vhost_blk_json(config, section) - elif match_section == "VirtioUser": - items = get_virtio_user_json(config, section) - elif match_section == "iSCSI": - items = get_iscsi_options_json(config, section) - elif match_section == "PortalGroup": - items = get_iscsi_portal_group_json(config, section) - elif match_section == "InitiatorGroup": - items = get_iscsi_initiator_group_json(config, section) - elif match_section == "TargetNode": - items = get_iscsi_target_node_json(config, section) - for item in items: - if match_section == "VhostScsi": - section_to_subsystem[match_section]["vhost_create_scsi_controller"].append(item) - elif match_section == "Subsystem": - section_to_subsystem[match_section]["subsystems"].append(item) - else: - section_to_subsystem[match_section][ - item['method']].append(item) - elif section == "Global": - pass - elif section == "Ioat": - # Ioat doesn't support JSON config yet. - pass - elif section == "VirtioPci": - print("Please use spdk target flags.") - exit(1) - else: - print("An invalid section detected: %s.\n" - "Please revise your config file." % section) - exit(1) - json.dump(generate_new_json_config(), sys.stdout, indent=2) - print("") diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index 86f0c20435..0bae07b1ff 100755 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -119,8 +119,6 @@ export SPDK_TEST_VHOST_INIT export SPDK_TEST_PMDK : ${SPDK_TEST_LVOL=0} export SPDK_TEST_LVOL -: ${SPDK_TEST_JSON=0} -export SPDK_TEST_JSON : ${SPDK_TEST_REDUCE=0} export SPDK_TEST_REDUCE : ${SPDK_RUN_ASAN=0} diff --git a/test/common/config/vm_setup.sh b/test/common/config/vm_setup.sh index 2d771c388e..9bf333537f 100755 --- a/test/common/config/vm_setup.sh +++ b/test/common/config/vm_setup.sh @@ -189,7 +189,6 @@ SPDK_TEST_BLOCKDEV=1 SPDK_TEST_BLOBFS=1 SPDK_TEST_PMDK=1 SPDK_TEST_LVOL=1 -SPDK_TEST_JSON=1 SPDK_TEST_NVME_CUSE=1 SPDK_TEST_BLOBFS=1 SPDK_TEST_URING=1 diff --git a/test/config_converter/config.ini b/test/config_converter/config.ini deleted file mode 100644 index 5601414df9..0000000000 --- a/test/config_converter/config.ini +++ /dev/null @@ -1,146 +0,0 @@ -#comment1 -[Global] - Comment "Global section"#comment2 - ReactorMask 0xF #comment3 -#comment4 - #comment5 -[Nvmf] - MaxQueuesPerSession 4 - MaxQueueDepth 128 - InCapsuleDataSize 4096 - MaxIOSize 131072 - AcceptorPollRate 10000 - IOUnitSize 131072 - -[Nvme] - TransportID "trtype:PCIe traddr:0000:00:04.0" Nvme0 - -[Bdev] - BdevIoPoolSize 65536 - BdevIoCacheSize 256 - -[Split] - Split Nvme0n1 8 - -[Nvme] - RetryCount 4 - TimeoutUsec 0 - ActionOnTimeout None - AdminPollRate 100000 - IOPollRate 0 - HotplugEnable Yes - -[iSCSI] - NodeBase "iqn.2016-06.io.spdk" - AuthFile /usr/local/etc/spdk/auth.conf - Timeout 30 - DiscoveryAuthMethod Auto - DiscoveryAuthGroup AuthGroup1 - MaxSessions 16 - ImmediateData Yes - ErrorRecoveryLevel 0 - MaxR2T 256 - NopInInterval 10 - AllowDuplicateIsid Yes - DefaultTime2Wait 2 - QueueDepth 128 - -[Malloc] - NumberOfLuns 8 - LunSizeInMB 128 - BlockSize 4096 - -[Pmem] - Blk /tmp/sample_pmem Pmem0 - -[AIO] - AIO /tmp/sample_aio0 AIO0 2048 - AIO /tmp/sample_aio1 AIO1 2048 - AIO /tmp/sample_aio2 AIO2 2048 - AIO /tmp/sample_aio1 AIO3 2048 - AIO /tmp/sample_aio2 AIO4 2048 - -[VhostBlk0] - Name vhost.1 - Dev Malloc6 - ReadOnly yes - Cpumask 0x1 - -[VhostScsi0] - Name naa.vhost.0 - Target 0 Malloc4 - Target 1 AIO3 - Target 2 Nvme0n1p2 - # Target 3 Nvme1n1p2 - Cpumask 0x1 - -[VhostScsi1] - Name naa.vhost.1 - Target 0 AIO4 - Cpumask 0x1 - -[VhostBlk1] - Name naa.vhost.2 - Dev Malloc5 - ReadOnly no - Cpumask 0x1 - -[Subsystem1] - NQN nqn.2016-06.io.spdk:cnode1 - Listen RDMA 10.0.2.15:4420 - AllowAnyHost No - Host nqn.2016-06.io.spdk:init - SN SPDK00000000000001 - MN SPDK_Controller1 - MaxNamespaces 20 - Namespace Nvme0n1p5 1 - Namespace Nvme0n1p6 2 - -[Subsystem2] - NQN nqn.2016-06.io.spdk:cnode2 - Listen RDMA 10.0.2.15:4421 - AllowAnyHost No - Host nqn.2016-06.io.spdk:init - SN SPDK00000000000002 - MN SPDK_Controller2 - Namespace Malloc1 - Namespace Malloc2 - Namespace AIO0 - Namespace AIO1 - -[InitiatorGroup1] - InitiatorName ANY - Netmask 127.0.0.1/32 - -[PortalGroup1] - Portal DA1 127.0.0.1:4000 - Portal DA2 127.0.0.1:4001@0xF - -[TargetNode1] - TargetName disk1 - TargetAlias "Data Disk1" - Mapping PortalGroup1 InitiatorGroup1 - AuthMethod Auto - AuthGroup AuthGroup1 - # Enable header and data digest - # UseDigest Header Data - UseDigest Auto - # Use the first malloc target - LUN0 Malloc0 - # Using the first AIO target - LUN1 AIO2 - # Using the second storage target - LUN2 AIO3 - # Using the third storage target - LUN3 AIO4 - QueueDepth 128 - -[TargetNode2] - TargetName disk2 - TargetAlias "Data Disk2" - Mapping PortalGroup1 InitiatorGroup1 - AuthMethod Auto - AuthGroup AuthGroup1 - UseDigest Auto - LUN0 Nvme0n1p3 - QueueDepth 32 diff --git a/test/config_converter/config_virtio.ini b/test/config_converter/config_virtio.ini deleted file mode 100644 index b2b7f4c71b..0000000000 --- a/test/config_converter/config_virtio.ini +++ /dev/null @@ -1,21 +0,0 @@ -[VirtioUser0] - Path naa.vhost.0 - Queues 8 - -[VirtioUser1] - Path naa.vhost.1 - Queues 8 - -#[VirtioUser2] -# Path naa.vhost.3 -# Queues 8 - -#[VirtioUser3] -# Path naa.vhost.2 -# Type Blk -# Queues 8 - -[VirtioUser4] - Path vhost.1 - Type Blk -# Queues 8 diff --git a/test/config_converter/spdk_config.json b/test/config_converter/spdk_config.json deleted file mode 100644 index 3276f7d1d2..0000000000 --- a/test/config_converter/spdk_config.json +++ /dev/null @@ -1,484 +0,0 @@ -{ - "subsystems": [ - { - "subsystem": "bdev", - "config": [ - { - "params": { - "bdev_io_pool_size": 65536, - "bdev_io_cache_size": 256 - }, - "method": "bdev_set_options" - }, - { - "params": { - "base_bdev": "Nvme0n1", - "split_size_mb": 0, - "split_count": 8 - }, - "method": "bdev_split_create" - }, - { - "params": { - "retry_count": 4, - "timeout_us": 0, - "nvme_adminq_poll_period_us": 100000, - "nvme_ioq_poll_period_us": 0, - "action_on_timeout": "none" - }, - "method": "bdev_nvme_set_options" - }, - { - "params": { - "trtype": "PCIe", - "name": "Nvme0", - "traddr": "0000:00:04.0" - }, - "method": "bdev_nvme_attach_controller" - }, - { - "params": { - "enable": true, - "period_us": 10000000 - }, - "method": "bdev_nvme_set_hotplug" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc0" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc1" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc2" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc3" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc4" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc5" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc6" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 4096, - "num_blocks": 32768, - "name": "Malloc7" - }, - "method": "bdev_malloc_create" - }, - { - "params": { - "block_size": 2048, - "name": "AIO0", - "filename": "/tmp/sample_aio0" - }, - "method": "bdev_aio_create" - }, - { - "params": { - "block_size": 2048, - "name": "AIO1", - "filename": "/tmp/sample_aio1" - }, - "method": "bdev_aio_create" - }, - { - "params": { - "block_size": 2048, - "name": "AIO2", - "filename": "/tmp/sample_aio2" - }, - "method": "bdev_aio_create" - }, - { - "params": { - "block_size": 2048, - "name": "AIO3", - "filename": "/tmp/sample_aio1" - }, - "method": "bdev_aio_create" - }, - { - "params": { - "block_size": 2048, - "name": "AIO4", - "filename": "/tmp/sample_aio2" - }, - "method": "bdev_aio_create" - }, - { - "params": { - "name": "Pmem0", - "pmem_file": "/tmp/sample_pmem" - }, - "method": "bdev_pmem_create" - } - ] - }, - { - "subsystem": "nvmf", - "config": [ - { - "params": { - "acceptor_poll_rate": 10000 - }, - "method": "nvmf_set_config" - }, - { - "params": { - "max_subsystems": 1024 - }, - "method": "nvmf_set_max_subsystems" - }, - { - "params": { - "max_namespaces": 20, - "allow_any_host": false, - "serial_number": "SPDK00000000000001", - "model_number": "SPDK_Controller1", - "nqn": "nqn.2016-06.io.spdk:cnode1" - }, - "method": "nvmf_create_subsystem" - }, - { - "params": { - "listen_address": { - "adrfam": "IPv4", - "traddr": "10.0.2.15", - "trsvcid": "4420", - "trtype": "RDMA" - }, - "nqn": "nqn.2016-06.io.spdk:cnode1" - }, - "method": "nvmf_subsystem_add_listener" - }, - { - "params": { - "host": "nqn.2016-06.io.spdk:init", - "nqn": "nqn.2016-06.io.spdk:cnode1" - }, - "method": "nvmf_subsystem_add_host" - }, - { - "params": { - "namespace": { - "bdev_name": "Nvme0n1p5", - "nsid": 1 - }, - "nqn": "nqn.2016-06.io.spdk:cnode1" - }, - "method": "nvmf_subsystem_add_ns" - }, - { - "params": { - "namespace": { - "bdev_name": "Nvme0n1p6", - "nsid": 2 - }, - "nqn": "nqn.2016-06.io.spdk:cnode1" - }, - "method": "nvmf_subsystem_add_ns" - }, - { - "params": { - "allow_any_host": false, - "serial_number": "SPDK00000000000002", - "model_number": "SPDK_Controller2", - "nqn": "nqn.2016-06.io.spdk:cnode2" - }, - "method": "nvmf_create_subsystem" - }, - { - "method": "nvmf_subsystem_add_listener", - "params": { - "listen_address": { - "adrfam": "IPv4", - "traddr": "10.0.2.15", - "trsvcid": "4421", - "trtype": "RDMA" - }, - "nqn": "nqn.2016-06.io.spdk:cnode2" - } - }, - { - "method": "nvmf_subsystem_add_host", - "params": { - "host": "nqn.2016-06.io.spdk:init", - "nqn": "nqn.2016-06.io.spdk:cnode2" - } - }, - { - "method": "nvmf_subsystem_add_ns", - "params": { - "namespace": { - "bdev_name": "Malloc1", - "nsid": 1 - }, - "nqn": "nqn.2016-06.io.spdk:cnode2" - } - }, - { - "method": "nvmf_subsystem_add_ns", - "params": { - "namespace": { - "bdev_name": "Malloc2", - "nsid": 2 - }, - "nqn": "nqn.2016-06.io.spdk:cnode2" - } - }, - { - "method": "nvmf_subsystem_add_ns", - "params": { - "namespace": { - "bdev_name": "AIO0", - "nsid": 3 - }, - "nqn": "nqn.2016-06.io.spdk:cnode2" - } - }, - { - "method": "nvmf_subsystem_add_ns", - "params": { - "namespace": { - "bdev_name": "AIO1", - "nsid": 4 - }, - "nqn": "nqn.2016-06.io.spdk:cnode2" - } - } - ] - }, - { - "subsystem": "vhost", - "config": [ - { - "params": { - "cpumask": "1", - "ctrlr": "naa.vhost.0" - }, - "method": "vhost_create_scsi_controller" - }, - { - "params": { - "scsi_target_num": 0, - "bdev_name": "Malloc4", - "ctrlr": "naa.vhost.0" - }, - "method": "vhost_scsi_controller_add_target" - }, - { - "params": { - "scsi_target_num": 1, - "bdev_name": "AIO3", - "ctrlr": "naa.vhost.0" - }, - "method": "vhost_scsi_controller_add_target" - }, - { - "params": { - "scsi_target_num": 2, - "bdev_name": "Nvme0n1p2", - "ctrlr": "naa.vhost.0" - }, - "method": "vhost_scsi_controller_add_target" - }, - { - "params": { - "cpumask": "1", - "ctrlr": "naa.vhost.1" - }, - "method": "vhost_create_scsi_controller" - }, - { - "params": { - "scsi_target_num": 0, - "bdev_name": "AIO4", - "ctrlr": "naa.vhost.1" - }, - "method": "vhost_scsi_controller_add_target" - }, - { - "params": { - "dev_name": "Malloc6", - "readonly": true, - "ctrlr": "vhost.1", - "cpumask": "1" - }, - "method": "vhost_create_blk_controller" - }, - { - "params": { - "dev_name": "Malloc5", - "readonly": false, - "ctrlr": "naa.vhost.2", - "cpumask": "1" - }, - "method": "vhost_create_blk_controller" - } - ] - }, - { - "subsystem": "iscsi", - "config": [ - { - "params": { - "allow_duplicated_isid": true, - "default_time2retain": 20, - "mutual_chap": false, - "require_chap": false, - "immediate_data": true, - "node_base": "iqn.2016-06.io.spdk", - "nop_in_interval": 10, - "max_connections_per_session": 2, - "first_burst_length": 8192, - "max_queue_depth": 64, - "nop_timeout": 30, - "chap_group": 1, - "max_sessions": 16, - "error_recovery_level": 0, - "disable_chap": false, - "auth_file": "/usr/local/etc/spdk/auth.conf", - "default_time2wait": 2 - }, - "method": "iscsi_set_options" - }, - { - "params": { - "portals": [ - { - "cpumask": "0x1", - "host": "127.0.0.1", - "port": "4000" - }, - { - "cpumask": "0x1", - "host": "127.0.0.1", - "port": "4001" - } - ], - "tag": 1 - }, - "method": "iscsi_create_portal_group" - }, - { - "params": { - "initiators": [ - "ANY" - ], - "tag": 1, - "netmasks": [ - "127.0.0.1/32" - ] - }, - "method": "iscsi_create_initiator_group" - }, - { - "params": { - "luns": [ - { - "lun_id": 0, - "bdev_name": "Malloc0" - }, - { - "lun_id": 1, - "bdev_name": "AIO2" - }, - { - "lun_id": 2, - "bdev_name": "AIO3" - }, - { - "lun_id": 3, - "bdev_name": "AIO4" - } - ], - "mutual_chap": false, - "name": "iqn.2016-06.io.spdk:disk1", - "alias_name": "Data Disk1", - "require_chap": false, - "chap_group": 1, - "pg_ig_maps": [ - { - "ig_tag": 1, - "pg_tag": 1 - } - ], - "data_digest": false, - "disable_chap": false, - "header_digest": false, - "queue_depth": 64 - }, - "method": "iscsi_create_target_node" - }, - { - "params": { - "luns": [ - { - "lun_id": 0, - "bdev_name": "Nvme0n1p3" - } - ], - "mutual_chap": false, - "name": "iqn.2016-06.io.spdk:disk2", - "alias_name": "Data Disk2", - "require_chap": false, - "chap_group": 1, - "pg_ig_maps": [ - { - "ig_tag": 1, - "pg_tag": 1 - } - ], - "data_digest": false, - "disable_chap": false, - "header_digest": false, - "queue_depth": 32 - }, - "method": "iscsi_create_target_node" - } - ] - } - ] -} diff --git a/test/config_converter/spdk_config_virtio.json b/test/config_converter/spdk_config_virtio.json deleted file mode 100644 index 32e62328fd..0000000000 --- a/test/config_converter/spdk_config_virtio.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "subsystems": [ - { - "subsystem": "bdev", - "config": [ - { - "params": { - "name": "VirtioScsi0", - "dev_type": "scsi", - "vq_size": 512, - "trtype": "user", - "traddr": "naa.vhost.0", - "vq_count": 8 - }, - "method": "bdev_virtio_attach_controller" - }, - { - "params": { - "name": "VirtioScsi1", - "dev_type": "scsi", - "vq_size": 512, - "trtype": "user", - "traddr": "naa.vhost.1", - "vq_count": 8 - }, - "method": "bdev_virtio_attach_controller" - }, - { - "params": { - "name": "VirtioBlk4", - "dev_type": "blk", - "vq_size": 512, - "trtype": "user", - "traddr": "vhost.1", - "vq_count": 1 - }, - "method": "bdev_virtio_attach_controller" - } - ] - } - ] -} diff --git a/test/config_converter/test_converter.sh b/test/config_converter/test_converter.sh deleted file mode 100755 index 218cc8a1d3..0000000000 --- a/test/config_converter/test_converter.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash -testdir=$(readlink -f "$(dirname "$0")") -rootdir=$(readlink -f "$testdir/../../") -source "$rootdir/test/common/autotest_common.sh" - -CONVERTER_DIR=$testdir -SPDK_BUILD_DIR=$rootdir - -function test_cleanup() { - rm -f $CONVERTER_DIR/config_converter.json $CONVERTER_DIR/config_virtio_converter.json -} - -function on_error_exit() { - set +e - test_cleanup - print_backtrace - exit 1 -} - -trap 'on_error_exit' ERR - -empty_json=$(echo "" | $SPDK_BUILD_DIR/scripts/config_converter.py | jq -c) -[[ ${empty_json} == '{"subsystems":[]}' ]] - -$SPDK_BUILD_DIR/scripts/config_converter.py < $CONVERTER_DIR/config.ini > $CONVERTER_DIR/config_converter.json -$SPDK_BUILD_DIR/scripts/config_converter.py < $CONVERTER_DIR/config_virtio.ini > $CONVERTER_DIR/config_virtio_converter.json -diff -I "cpumask" -I "max_queue_depth" -I "queue_depth" <(jq -S . $CONVERTER_DIR/config_converter.json) <(jq -S . $CONVERTER_DIR/spdk_config.json) -diff <(jq -S . $CONVERTER_DIR/config_virtio_converter.json) <(jq -S . $CONVERTER_DIR/spdk_config_virtio.json) -test_cleanup