numam-spdk/test/spdkcli/vhost.sh
Pawel Wodkowski 651d9158a0 test: consolidate tests for reading JSON config
This patch rework all JSON config file reading tests. This is needed as
current approach will require to modify each test to re-launch SPDK
applications for each test type. This is hard to do because tests are
not flexible and will require to be rewritten almost from scratch. Not
metioning time to relaunch each test separatly.

Instead, just replace all old tests with one test. Launch only one
target and only one initiator. Then configure it using RPC calls. Then
config is dumped and target and initiator application is relaunched to
reread the configuration from file. Then config is dumped again and
compared.

Change-Id: Id857089aed0e6f2197cbf3ae625a4e9f4b13e8bb
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/432318
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
2019-01-16 14:17:10 +00:00

132 lines
5.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -xe
MATCH_FILE="spdkcli_vhost.test"
SPDKCLI_BRANCH="/"
testdir=$(readlink -f $(dirname $0))
. $testdir/common.sh
timing_enter spdk_cli_vhost
trap 'on_error_exit' ERR
timing_enter run_vhost_tgt
run_vhost_tgt
timing_exit run_vhost_tgt
timing_enter spdkcli_create_bdevs_config
$spdkcli_job "'/bdevs/malloc create 40 512 Malloc0' 'Malloc0' True
'/bdevs/malloc create 32 512 Malloc1' 'Malloc1' True
'/bdevs/malloc create 32 512 Malloc2' 'Malloc2' True
'/bdevs/malloc create 32 4096 Malloc3' 'Malloc3' True
'/bdevs/malloc create 32 4096 Malloc4' 'Malloc4' True
'/bdevs/malloc create 32 4096 Malloc5' 'Malloc5' True
'/bdevs/error create Malloc1' 'EE_Malloc1' True
'/bdevs/error create Malloc4' 'EE_Malloc4' True
'/bdevs/null create null_bdev0 32 512' 'null_bdev0' True
'/bdevs/null create null_bdev1 32 512' 'null_bdev1' True
"
dd if=/dev/zero of=/tmp/sample_aio bs=2048 count=5000
dd if=/dev/zero of=/tmp/sample_aio2 bs=2048 count=5000
$spdkcli_job "'/bdevs/aio create sample0 /tmp/sample_aio 512' 'sample0' True
'/bdevs/aio create sample1 /tmp/sample_aio2 512' 'sample1' True
"
trtype=$($SPDKCLI_BUILD_DIR/scripts/gen_nvme.sh --json | jq -r '.config[].params | select(.name=="Nvme0").trtype')
traddr=$($SPDKCLI_BUILD_DIR/scripts/gen_nvme.sh --json | jq -r '.config[].params | select(.name=="Nvme0").traddr')
$spdkcli_job "'/bdevs/nvme create Nvme0 $trtype $traddr' 'Nvme0' True
'/bdevs/split_disk split_bdev Nvme0n1 4' 'Nvme0n1p0' True
"
timing_exit spdkcli_create_bdevs_config
timing_enter spdkcli_create_lvols_config
$spdkcli_job "'/lvol_stores create lvs0 Malloc0' 'lvs0' True
'/lvol_stores create lvs1 Malloc5' 'lvs1' True
'/bdevs/logical_volume create lvol0 16 lvs0' 'lvs0/lvol0' True
'/bdevs/logical_volume create lvol1 16 lvs0' 'lvs0/lvol1' True
"
timing_exit spdkcli_create_lvols_config
timing_enter spdkcli_create_vhosts_config
$spdkcli_job "'vhost/block create vhost_blk1 Nvme0n1p0' 'Nvme0n1p0' True
'vhost/block create vhost_blk2 Nvme0n1p1 0x1 readonly' 'Nvme0n1p1' True
'vhost/scsi create vhost_scsi1' 'vhost_scsi1' True
'vhost/scsi create vhost_scsi2' 'vhost_scsi2' True
'vhost/scsi/vhost_scsi1 add_lun 0 Malloc2' 'Malloc2' True
'vhost/scsi/vhost_scsi2 add_lun 0 Malloc3' 'Malloc3' True
'vhost/scsi/vhost_scsi2 add_lun 1 Nvme0n1p2' 'Nvme0n1p2' True
'vhost/scsi/vhost_scsi2 add_lun 2 Nvme0n1p3' 'Nvme0n1p3' True
"
timing_exit spdkcli_create_vhosts_config
timing_enter spdkcli_check_match
check_match
timing_exit spdkcli_check_match
timing_enter spdkcli_save_config
$spdkcli_job "'save_config $testdir/config.json'
'save_subsystem_config $testdir/config_bdev.json bdev'
'save_subsystem_config $testdir/config_vhost.json vhost'
"
timing_exit spdkcli_save_config
timing_enter spdkcli_check_match_details
$SPDKCLI_BUILD_DIR/scripts/spdkcli.py bdevs/split_disk/Nvme0n1p0 show_details | jq -r -S '.' > $testdir/match_files/spdkcli_details_vhost.test
$SPDKCLI_BUILD_DIR/test/app/match/match -v $testdir/match_files/spdkcli_details_vhost.test.match
rm -f $testdir/match_files/spdkcli_details_vhost.test
timing_exit spdkcli_check_match_details
timing_enter spdkcli_clear_config
$spdkcli_job "'vhost/scsi/vhost_scsi2 remove_target 2' 'Nvme0n1p3'
'vhost/scsi/vhost_scsi2 remove_target 1' 'Nvme0n1p2'
'vhost/scsi/vhost_scsi2 remove_target 0' 'Malloc3'
'vhost/scsi/vhost_scsi1 remove_target 0' 'Malloc2'
'vhost/scsi delete vhost_scsi2' 'vhost_scsi2'
'vhost/scsi delete vhost_scsi1' 'vhost_scsi1'
'vhost/block delete vhost_blk2' 'vhost_blk2'
'vhost/block delete vhost_blk1' 'vhost_blk1'
'/bdevs/split_disk destruct_split_bdev Nvme0n1' 'Nvme0n1p0'
'/bdevs/aio delete sample0' 'sample0'
'/bdevs/aio delete_all' 'sample1'
'/bdevs/nvme delete Nvme0' 'Nvme0'
'/bdevs/null delete null_bdev0' 'null_bdev0'
'/bdevs/null delete_all' 'null_bdev1'
'/bdevs/logical_volume delete lvs0/lvol0' 'lvs0/lvol0'
'/bdevs/logical_volume delete_all' 'lvs0/lvol1'
'/lvol_stores delete lvs0' 'lvs0'
'/lvol_stores delete_all' 'lvs1'
'/bdevs/error delete EE_Malloc1' 'EE_Malloc1'
'/bdevs/error delete_all' 'EE_Malloc4'
'/bdevs/malloc delete Malloc0' 'Malloc0'
'/bdevs/malloc delete_all' 'Malloc1'
"
timing_exit spdkcli_clear_config
timing_enter spdkcli_load_config
$spdkcli_job "'load_config $testdir/config.json'
'/lvol_stores create lvs0 Malloc0' 'lvs0' True
'/lvol_stores create lvs1 Malloc5' 'lvs1' True
'/bdevs/logical_volume create lvol0 16 lvs0' 'lvs0/lvol0' True
'/bdevs/logical_volume create lvol1 16 lvs0' 'lvs0/lvol1' True
"
check_match
$spdk_clear_config_py clear_config
# FIXME: remove this sleep when NVMe driver will be fixed to wait for reset to complete
sleep 2
$spdkcli_job "'load_subsystem_config $testdir/config_bdev.json'
'load_subsystem_config $testdir/config_vhost.json'
'/lvol_stores create lvs0 Malloc0' 'lvs0' True
'/lvol_stores create lvs1 Malloc5' 'lvs1' True
'/bdevs/logical_volume create lvol0 16 lvs0' 'lvs0/lvol0' True
'/bdevs/logical_volume create lvol1 16 lvs0' 'lvs0/lvol1' True
"
check_match
$spdk_clear_config_py clear_config
rm -f $testdir/config.json
rm -f $testdir/config_bdev.json
rm -f $testdir/config_vhost.json
rm -f /tmp/sample_aio
timing_exit spdkcli_load_config
killprocess $vhost_tgt_pid
timing_exit spdk_cli_vhost
report_test_completion spdk_cli_vhost