diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index 886b01eec..54e138294 100755 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -29,6 +29,7 @@ fi : ${SPDK_RUN_VALGRIND=1}; export SPDK_RUN_VALGRIND : ${SPDK_TEST_UNITTEST=1}; export SPDK_TEST_UNITTEST : ${SPDK_TEST_ISCSI=1}; export SPDK_TEST_ISCSI +: ${SPDK_TEST_ISCSI_INITIATOR=1}; export SPDK_TEST_ISCSI_INITIATOR : ${SPDK_TEST_NVME=1}; export SPDK_TEST_NVME : ${SPDK_TEST_NVMF=1}; export SPDK_TEST_NVMF : ${SPDK_TEST_RBD=1}; export SPDK_TEST_RBD @@ -120,8 +121,13 @@ if [ -d /usr/include/iscsi ]; then libiscsi_version=`grep LIBISCSI_API_VERSION /usr/include/iscsi/iscsi.h | head -1 | awk '{print $3}' | awk -F '(' '{print $2}' | awk -F ')' '{print $1}'` if [ $libiscsi_version -ge 20150621 ]; then config_params+=' --with-iscsi-initiator' + else + export SPDK_TEST_ISCSI_INITIATOR=0 fi +else + export SPDK_TEST_ISCSI_INITIATOR=0 fi + export config_params if [ -z "$output_dir" ]; then diff --git a/test/iscsi_tgt/initiator/bdev.conf b/test/iscsi_tgt/initiator/bdev.conf new file mode 100644 index 000000000..5495f1d24 --- /dev/null +++ b/test/iscsi_tgt/initiator/bdev.conf @@ -0,0 +1,5 @@ +[iSCSI_Initiator] + URL iscsi://127.0.0.1/iqn.2016-06.io.spdk:disk1/0 iSCSI0 + +[Ioat] + Disable Yes diff --git a/test/iscsi_tgt/initiator/initiator.sh b/test/iscsi_tgt/initiator/initiator.sh new file mode 100755 index 000000000..eedaddc60 --- /dev/null +++ b/test/iscsi_tgt/initiator/initiator.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +testdir=$(readlink -f $(dirname $0)) +rootdir=$(readlink -f $testdir/../../..) +source $rootdir/test/common/autotest_common.sh +source $rootdir/test/iscsi_tgt/common.sh + +timing_enter initiator + +# iSCSI target configuration +PORT=3260 +INITIATOR_TAG=2 +INITIATOR_NAME=ANY +NETMASK=$INITIATOR_IP/32 +MALLOC_BDEV_SIZE=64 +MALLOC_BLOCK_SIZE=512 + +rpc_py="python $rootdir/scripts/rpc.py" + +timing_enter start_iscsi_tgt + +# Start the iSCSI target without using stub +# Reason: Two SPDK processes will be started +$rootdir/app/iscsi_tgt/iscsi_tgt -c $testdir/iscsi.conf -m 0x2 -p 1 -s 512 & +pid=$! +echo "iSCSI target launched. pid: $pid" +trap "killprocess $pid;exit 1" SIGINT SIGTERM EXIT +waitforlisten $pid +echo "iscsi_tgt is listening. Running tests..." + +timing_exit start_iscsi_tgt + +$rpc_py add_portal_group 1 $TARGET_IP:$PORT +$rpc_py add_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK +$rpc_py construct_malloc_bdev $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE +# "Malloc0:0" ==> use Malloc0 blockdev for LUN0 +# "1:2" ==> map PortalGroup1 to InitiatorGroup2 +# "64" ==> iSCSI queue depth 64 +# "-d" ==> disable CHAP authentication +$rpc_py construct_target_node disk1 disk1_alias 'Malloc0:0' '1:2' 256 -d +sleep 1 +trap "killprocess $pid; exit 1" SIGINT SIGTERM EXIT +$rootdir/test/lib/bdev/bdevperf/bdevperf -c $testdir/bdev.conf -q 128 -s 4096 -w verify -t 5 -d 512 + +trap - SIGINT SIGTERM EXIT + +killprocess $pid + +report_test_completion "iscsi_initiator" +timing_exit initiator diff --git a/test/iscsi_tgt/initiator/iscsi.conf b/test/iscsi_tgt/initiator/iscsi.conf new file mode 100644 index 000000000..8f0a3d31b --- /dev/null +++ b/test/iscsi_tgt/initiator/iscsi.conf @@ -0,0 +1,15 @@ +[Global] + Comment "Global section" + +[iSCSI] + NodeBase "iqn.2016-06.io.spdk" + AuthFile /usr/local/etc/spdk/auth.conf + Timeout 30 + DiscoveryAuthMethod Auto + MaxSessions 4 + ImmediateData Yes + ErrorRecoveryLevel 0 + +# Do not specify InitiatorGroup, PortalGroup, Malloc, +# or TargetNode entries here - the autotest.sh script +# will use RPC to set up this part of the configuration. diff --git a/test/iscsi_tgt/iscsi_tgt.sh b/test/iscsi_tgt/iscsi_tgt.sh index 3e2e80d58..f525444de 100755 --- a/test/iscsi_tgt/iscsi_tgt.sh +++ b/test/iscsi_tgt/iscsi_tgt.sh @@ -61,4 +61,8 @@ if [ $RUN_NIGHTLY -eq 1 ]; then run_test ./test/iscsi_tgt/multiconnection/multiconnection.sh fi +if [ $SPDK_TEST_ISCSI_INITIATOR -eq 1 ]; then + run_test ./test/iscsi_tgt/initiator/initiator.sh +fi + timing_exit iscsi_tgt