Commit 7e8206c3 authored by Pawel Kaminski's avatar Pawel Kaminski Committed by Jim Harris
Browse files

test/spdkcli: Run different parts of tests with given spdk target.



Use nvmf_tgt for nvmf tests.
Use iscsi_tgt for spdkcli iscsi tests.
Use vhost target for spdkcli vhost tests.
Fixes #511.

Change-Id: I5f084bccf87d32b0ede210c62ccc4a2f7926d716
Signed-off-by: default avatarPawel Kaminski <pawelx.kaminski@intel.com>
Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Signed-off-by: default avatarPawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/435139


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarKarol Latecki <karol.latecki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 71cd1ea7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -804,7 +804,7 @@ class UIVhostBlk(UIVhost):

    def refresh(self):
        self._children = set([])
        for ctrlr in self.get_root().get_vhost_ctrlrs(self.name):
        for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type=self.name):
            UIVhostBlkCtrlObj(ctrlr, self)

    def ui_command_create(self, name, bdev, cpumask=None, readonly=False):
@@ -838,7 +838,7 @@ class UIVhostScsi(UIVhost):

    def refresh(self):
        self._children = set([])
        for ctrlr in self.get_root().get_vhost_ctrlrs(self.name):
        for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type=self.name):
            UIVhostScsiCtrlObj(ctrlr, self)

    def ui_command_create(self, name, cpumask=None):
@@ -898,7 +898,7 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
        try:
            self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr,
                                                     scsi_target_num=int(target_num))
            for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
            for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type="scsi"):
                if ctrlr.ctrlr == self.ctrlr.ctrlr:
                    self.ctrlr = ctrlr
        except JSONRPCException as e:
@@ -921,7 +921,7 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
            self.get_root().add_vhost_scsi_lun(ctrlr=self.ctrlr.ctrlr,
                                               scsi_target_num=int(target_num),
                                               bdev_name=bdev_name)
            for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
            for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type="scsi"):
                if ctrlr.ctrlr == self.ctrlr.ctrlr:
                    self.ctrlr = ctrlr
        except JSONRPCException as e:
+4 −1
Original line number Diff line number Diff line
@@ -24,7 +24,10 @@ class UIISCSIGlobalParams(UINode):

    def refresh(self):
        self._children = set([])
        for param, val in self.get_root().get_iscsi_global_params().items():
        iscsi_global_params = self.get_root().get_iscsi_global_params()
        if not iscsi_global_params:
            return
        for param, val in iscsi_global_params.items():
            UIISCSIGlobalParam("%s: %s" % (param, val), self)

    def ui_command_set_auth(self, g=None, d=None, r=None, m=None):
+38 −4
Original line number Diff line number Diff line
@@ -20,11 +20,12 @@ class UIRoot(UINode):
        self.set_rpc_target(s)
        self.verbose = False
        self.is_init = self.check_init()
        self.methods = []

    def refresh(self):
        self.methods = self.get_rpc_methods(current=True)
        if self.is_init is False:
            methods = self.get_rpc_methods(current=True)
            methods = "\n".join(methods)
            methods = "\n".join(self.methods)
            self.shell.log.warning("SPDK Application is not yet initialized.\n"
                                   "Please initialize subsystems with start_subsystem_init command.\n"
                                   "List of available commands in current state:\n"
@@ -41,6 +42,7 @@ class UIRoot(UINode):
            UIVhosts(self)
        if self.has_subsystem("nvmf"):
            UINVMf(self)
        if self.has_subsystem("iscsi"):
            UIISCSI(self)

    def set_rpc_target(self, s):
@@ -61,6 +63,17 @@ class UIRoot(UINode):
            return r
        return w

    def is_method_available(f):
        # Check if method f is available for given spdk target
        def w(self, **kwargs):
            if f.__name__ in self.methods:
                r = f(self, **kwargs)
                return r
            # If given method is not avaialble return empty list
            # similar to real get_* like rpc
            return []
        return w

    def ui_command_start_subsystem_init(self):
        if rpc.start_subsystem_init(self.client):
            self.is_init = True
@@ -179,6 +192,8 @@ class UIRoot(UINode):
    def delete_error_bdev(self, **kwargs):
        rpc.bdev.delete_error_bdev(self.client, **kwargs)

    @verbose
    @is_method_available
    def get_lvol_stores(self):
        if self.is_init:
            self.current_lvol_stores = rpc.lvol.get_lvol_stores(self.client)
@@ -233,6 +248,8 @@ class UIRoot(UINode):
        response = rpc.vhost.remove_virtio_bdev(self.client, **kwargs)
        return response

    @verbose
    @is_method_available
    def get_virtio_scsi_devs(self):
        if self.is_init:
            for bdev in rpc.vhost.get_virtio_scsi_devs(self.client):
@@ -243,7 +260,9 @@ class UIRoot(UINode):
        if self.is_init:
            self.current_vhost_ctrls = rpc.vhost.get_vhost_controllers(self.client)

    def get_vhost_ctrlrs(self, ctrlr_type):
    @verbose
    @is_method_available
    def get_vhost_controllers(self, ctrlr_type):
        if self.is_init:
            self.list_vhost_ctrls()
            for ctrlr in [x for x in self.current_vhost_ctrls if ctrlr_type in list(x["backend_specific"].keys())]:
@@ -280,6 +299,8 @@ class UIRoot(UINode):
        if self.is_init:
            self.current_nvmf_transports = rpc.nvmf.get_nvmf_transports(self.client)

    @verbose
    @is_method_available
    def get_nvmf_transports(self):
        if self.is_init:
            self.list_nvmf_transports()
@@ -290,6 +311,8 @@ class UIRoot(UINode):
        if self.is_init:
            self.current_nvmf_subsystems = rpc.nvmf.get_nvmf_subsystems(self.client)

    @verbose
    @is_method_available
    def get_nvmf_subsystems(self):
        if self.is_init:
            self.list_nvmf_subsystems()
@@ -336,11 +359,15 @@ class UIRoot(UINode):
    def nvmf_subsystem_allow_any_host(self, **kwargs):
        rpc.nvmf.nvmf_subsystem_allow_any_host(self.client, **kwargs)

    @verbose
    @is_method_available
    def get_scsi_devices(self):
        if self.is_init:
            for device in rpc.iscsi.get_scsi_devices(self.client):
                yield ScsiObj(device)

    @verbose
    @is_method_available
    def get_target_nodes(self):
        if self.is_init:
            for tg in rpc.iscsi.get_target_nodes(self.client):
@@ -354,11 +381,15 @@ class UIRoot(UINode):
    def delete_target_node(self, **kwargs):
        rpc.iscsi.delete_target_node(self.client, **kwargs)

    @verbose
    @is_method_available
    def get_portal_groups(self):
        if self.is_init:
            for pg in rpc.iscsi.get_portal_groups(self.client):
                yield ScsiObj(pg)

    @verbose
    @is_method_available
    def get_initiator_groups(self):
        if self.is_init:
            for ig in rpc.iscsi.get_initiator_groups(self.client):
@@ -381,6 +412,7 @@ class UIRoot(UINode):
        rpc.iscsi.delete_initiator_group(self.client, **kwargs)

    @verbose
    @is_method_available
    def get_iscsi_connections(self, **kwargs):
        if self.is_init:
            for ic in rpc.iscsi.get_iscsi_connections(self.client, **kwargs):
@@ -411,6 +443,7 @@ class UIRoot(UINode):
        rpc.iscsi.delete_secret_from_iscsi_auth_group(self.client, **kwargs)

    @verbose
    @is_method_available
    def get_iscsi_auth_groups(self, **kwargs):
        return rpc.iscsi.get_iscsi_auth_groups(self.client, **kwargs)

@@ -435,6 +468,7 @@ class UIRoot(UINode):
        rpc.iscsi.set_iscsi_discovery_auth(self.client, **kwargs)

    @verbose
    @is_method_available
    def get_iscsi_global_params(self, **kwargs):
        return rpc.iscsi.get_iscsi_global_params(self.client, **kwargs)

+30 −1
Original line number Diff line number Diff line
@@ -7,7 +7,18 @@ spdkcli_job="$SPDKCLI_BUILD_DIR/test/spdkcli/spdkcli_job.py"

function on_error_exit() {
	set +e
	if [ ! -z $spdk_tgt_pid ]; then
		killprocess $spdk_tgt_pid
	fi
	if [ ! -z $nvmf_tgt_pid ]; then
		killprocess $nvmf_tgt_pid
	fi
	if [ ! -z $iscsi_tgt_pid ]; then
		killprocess $iscsi_tgt_pid
	fi
	if [ ! -z $vhost_tgt_pid ]; then
		killprocess $vhost_tgt_pid
	fi
	rm -f $testdir/${MATCH_FILE} $testdir/match_files/spdkcli_details_vhost.test /tmp/sample_aio /tmp/sample_pmem
	print_backtrace
	exit 1
@@ -19,6 +30,24 @@ function run_spdk_tgt() {
	waitforlisten $spdk_tgt_pid
}

function run_nvmf_tgt() {
	$SPDKCLI_BUILD_DIR/app/nvmf_tgt/nvmf_tgt -m 0x3 -p 0 -s 4096 &
	nvmf_tgt_pid=$!
	waitforlisten $nvmf_tgt_pid
}

function run_iscsi_tgt() {
	$SPDKCLI_BUILD_DIR/app/iscsi_tgt/iscsi_tgt -m 0x3 -p 0 -s 4096 &
	iscsi_tgt_pid=$!
	waitforlisten $iscsi_tgt_pid
}

function run_vhost_tgt() {
	$SPDKCLI_BUILD_DIR/app/vhost/vhost -m 0x3 -p 0 -s 4096 &
	vhost_tgt_pid=$!
	waitforlisten $vhost_tgt_pid
}

function check_match() {
	$SPDKCLI_BUILD_DIR/scripts/spdkcli.py ll $SPDKCLI_BRANCH > $testdir/match_files/${MATCH_FILE}
	$SPDKCLI_BUILD_DIR/test/app/match/match -v $testdir/match_files/${MATCH_FILE}.match
+4 −4
Original line number Diff line number Diff line
@@ -10,9 +10,9 @@ testdir=$(readlink -f $(dirname $0))
timing_enter spdkcli_iscsi
trap 'on_error_exit;' ERR

timing_enter run_spdk_tgt
run_spdk_tgt
timing_exit run_spdk_tgt
timing_enter run_iscsi_tgt
run_iscsi_tgt
timing_exit run_iscsi_tgt

timing_enter spdkcli_create_iscsi_config
$spdkcli_job "'/bdevs/malloc create 32 512 Malloc0' 'Malloc0' True
@@ -62,6 +62,6 @@ $spdkcli_job "'/iscsi/auth_groups delete_secret 1 test2' 'user=test2'
"
timing_exit spdkcli_clear_iscsi_config

killprocess $spdk_tgt_pid
killprocess $iscsi_tgt_pid
timing_exit spdkcli_iscsi
report_test_completion spdk_cli
Loading