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: Pawel Kaminski <pawelx.kaminski@intel.com> Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Signed-off-by: Pawel 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: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
71cd1ea7e7
commit
7e8206c330
@ -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:
|
||||
|
@ -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):
|
||||
|
@ -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,7 +42,8 @@ class UIRoot(UINode):
|
||||
UIVhosts(self)
|
||||
if self.has_subsystem("nvmf"):
|
||||
UINVMf(self)
|
||||
UIISCSI(self)
|
||||
if self.has_subsystem("iscsi"):
|
||||
UIISCSI(self)
|
||||
|
||||
def set_rpc_target(self, s):
|
||||
self.client = rpc.client.JSONRPCClient(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)
|
||||
|
||||
|
@ -7,7 +7,18 @@ spdkcli_job="$SPDKCLI_BUILD_DIR/test/spdkcli/spdkcli_job.py"
|
||||
|
||||
function on_error_exit() {
|
||||
set +e
|
||||
killprocess $spdk_tgt_pid
|
||||
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
|
||||
|
@ -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
|
||||
|
@ -31,39 +31,9 @@ o- / ...........................................................................
|
||||
| | o- Nvme0n1p3 $(S) [Size=$(FP)G, Not claimed]
|
||||
| o- virtioblk_disk ................................................................................................... [Bdevs: 0]
|
||||
| o- virtioscsi_disk .................................................................................................. [Bdevs: 0]
|
||||
o- iscsi ................................................................................................................... [...]
|
||||
| o- auth_groups ..................................................................................................... [Groups: 0]
|
||||
| o- global_params ......................................................................................................... [...]
|
||||
| | o- allow_duplicated_isid: False ........................................................................................ [...]
|
||||
| | o- chap_group: 0 ....................................................................................................... [...]
|
||||
| | o- default_time2retain: 20 ............................................................................................. [...]
|
||||
| | o- default_time2wait: 2 ................................................................................................ [...]
|
||||
| | o- disable_chap: False ................................................................................................. [...]
|
||||
| | o- error_recovery_level: 0 ............................................................................................. [...]
|
||||
| | o- first_burst_length: 8192 ............................................................................................ [...]
|
||||
| | o- immediate_data: True ................................................................................................ [...]
|
||||
| | o- max_connections_per_session: 2 ...................................................................................... [...]
|
||||
| | o- max_queue_depth: 64 ................................................................................................. [...]
|
||||
| | o- max_sessions: 128 ................................................................................................... [...]
|
||||
| | o- min_connections_per_core: 4 ......................................................................................... [...]
|
||||
| | o- mutual_chap: False .................................................................................................. [...]
|
||||
| | o- node_base: iqn.2016-06.io.spdk ...................................................................................... [...]
|
||||
| | o- nop_in_interval: 30 ................................................................................................. [...]
|
||||
| | o- nop_timeout: 60 ..................................................................................................... [...]
|
||||
| | o- require_chap: False ................................................................................................. [...]
|
||||
| o- initiator_groups ...................................................................................... [Initiator groups: 0]
|
||||
| o- iscsi_connections .......................................................................................... [Connections: 0]
|
||||
| o- portal_groups ............................................................................................ [Portal groups: 0]
|
||||
| o- target_nodes .............................................................................................. [Target nodes: 0]
|
||||
o- lvol_stores .................................................................................................. [Lvol stores: 2]
|
||||
| o- lvs0 ................................................................................................ [Size=$(FP)M, Free=$(FP)M]
|
||||
| o- lvs1 ............................................................................................... [Size=$(FP)M, Free=$(FP)M]
|
||||
o- nvmf .................................................................................................................... [...]
|
||||
| o- subsystem ................................................................................................... [Subsystems: 1]
|
||||
| | o- nqn.2014-08.org.nvmexpress.discovery ....................................................... [st=Discovery, Allow any host]
|
||||
| | o- hosts ........................................................................................................ [Hosts: 0]
|
||||
| | o- listen_addresses ......................................................................................... [Addresses: 0]
|
||||
| o- transport ................................................................................................... [Transports: 0]
|
||||
| o- lvs0 $(S) [Size=$(FP)M, Free=$(FP)M]
|
||||
| o- lvs1 $(S) [Size=$(FP)M, Free=$(FP)M]
|
||||
o- vhost ................................................................................................................... [...]
|
||||
o- block ................................................................................................................. [...]
|
||||
| o- vhost_blk1 $(S) [$(S)]
|
||||
|
@ -11,9 +11,9 @@ timing_enter spdkcli_nvmf
|
||||
trap 'on_error_exit; revert_soft_roce' ERR
|
||||
rdma_device_init
|
||||
|
||||
timing_enter run_spdk_tgt
|
||||
run_spdk_tgt
|
||||
timing_exit run_spdk_tgt
|
||||
timing_enter run_nvmf_tgt
|
||||
run_nvmf_tgt
|
||||
timing_exit run_nvmf_tgt
|
||||
|
||||
RDMA_IP_LIST=$(get_available_rdma_ips)
|
||||
NVMF_TARGET_IP=$(echo "$RDMA_IP_LIST" | head -n 1)
|
||||
@ -80,7 +80,7 @@ $spdkcli_job "'/nvmf/subsystem/nqn.2014-08.org.spdk:cnode1/namespaces delete nsi
|
||||
"
|
||||
timing_exit spdkcli_clear_nvmf_config
|
||||
|
||||
killprocess $spdk_tgt_pid
|
||||
killprocess $nvmf_tgt_pid
|
||||
#revert_soft_roce
|
||||
timing_exit spdkcli_nvmf
|
||||
report_test_completion spdk_cli_nvmf
|
||||
|
@ -10,7 +10,7 @@ testdir=$(readlink -f $(dirname $0))
|
||||
timing_enter spdk_cli_vhost
|
||||
trap 'on_error_exit' ERR
|
||||
timing_enter run_vhost_tgt
|
||||
run_spdk_tgt
|
||||
run_vhost_tgt
|
||||
timing_exit run_vhost_tgt
|
||||
|
||||
timing_enter spdkcli_create_bdevs_config
|
||||
@ -126,7 +126,7 @@ rm -f $testdir/config_vhost.json
|
||||
rm -f /tmp/sample_aio
|
||||
timing_exit spdkcli_load_config
|
||||
|
||||
killprocess $spdk_tgt_pid
|
||||
killprocess $vhost_tgt_pid
|
||||
|
||||
timing_exit spdk_cli_vhost
|
||||
report_test_completion spdk_cli_vhost
|
||||
|
Loading…
Reference in New Issue
Block a user