test/iscsi_tgt: use stub application

The stub application will ensure that each
iSCSI test does not need to reinitialized DPDK
memory and NVMe devices.  This drastically
cuts down on the amount of time needed to run
all of the iscsi_tgt tests.

While here, add a new common ISCSI_TEST_CORE_MASK
shell variable, eliminating a bunch of copies of
the 0xFFFF core mask, and ensuring the stub application
chooses a core mask that overlaps all of the iscsi_tgt
test cases.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ifae73276923258ff64370ae42e19cf1a4a2c2212

Reviewed-on: https://review.gerrithub.io/362454
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Jim Harris 2017-05-24 20:58:35 -07:00 committed by Ben Walker
parent 7c34782192
commit a8e1295d4b
7 changed files with 45 additions and 4 deletions

View File

@ -227,6 +227,21 @@ function rbd_cleanup() {
fi
}
function start_stub() {
$rootdir/test/app/stub/stub $1 &
stubpid=$!
echo Waiting for stub to ready for secondary processes...
while ! [ -e /var/run/.spdk0_config ]; do
sleep 0.1s
done
echo done.
}
function kill_stub() {
kill $stubpid
rm -rf /var/run/.spdk0_config
}
function run_test() {
set +x
echo "************************************"

View File

@ -11,3 +11,7 @@ fi
if [ -z "$ISCSI_APP" ]; then
ISCSI_APP=./app/iscsi_tgt/iscsi_tgt
fi
if [ -z "$ISCSI_TEST_CORE_MASK" ]; then
ISCSI_TEST_CORE_MASK=0xFFFF
fi

View File

@ -20,7 +20,7 @@ rpc_py="python $rootdir/scripts/rpc.py"
timing_enter start_iscsi_tgt
$ISCSI_APP -c $testdir/iscsi.conf -m 0xFFFF &
$ISCSI_APP -c $testdir/iscsi.conf -m $ISCSI_TEST_CORE_MASK &
pid=$!
echo "Process pid: $pid"

View File

@ -15,7 +15,7 @@ fio_py="python $rootdir/scripts/fio.py"
timing_enter start_iscsi_tgt
$ISCSI_APP -c $testdir/iscsi.conf -m 0xFFFF &
$ISCSI_APP -c $testdir/iscsi.conf -m $ISCSI_TEST_CORE_MASK &
pid=$!
echo "Process pid: $pid"

View File

@ -45,7 +45,7 @@ do
timing_enter start_iscsi_tgt_$i
# TODO: run the different iSCSI instances on non-overlapping CPU masks
$ISCSI_APP -c $testdir/iscsi.conf.$i -s 1000 -i $i -m 0xFFFF &
$ISCSI_APP -c $testdir/iscsi.conf.$i -s 1000 -i $i -m $ISCSI_TEST_CORE_MASK &
pid=$!
echo "Process pid: $pid"

View File

@ -10,7 +10,22 @@ fi
export TARGET_IP=127.0.0.1
export INITIATOR_IP=127.0.0.1
source $rootdir/test/iscsi_tgt/common.sh
timing_enter iscsi_tgt
# ISCSI_TEST_CORE_MASK is the biggest core mask specified by
# any of the iscsi_tgt tests. Using this mask for the stub
# ensures that if this mask spans CPU sockets, that we will
# allocate memory from both sockets. The stub will *not*
# run anything on the extra cores (and will sleep on master
# core 0) so there is no impact to the iscsi_tgt tests by
# specifying the bigger core mask.
start_stub "-s 2048 -i 0 -m $ISCSI_TEST_CORE_MASK"
trap "kill_stub; exit 1" SIGINT SIGTERM EXIT
export ISCSI_APP="./app/iscsi_tgt/iscsi_tgt -i 0"
run_test ./test/iscsi_tgt/calsoft/calsoft.sh
run_test ./test/iscsi_tgt/filesystem/filesystem.sh
run_test ./test/iscsi_tgt/fio/fio.sh
@ -22,5 +37,12 @@ if [ $RUN_NIGHTLY -eq 1 ]; then
fi
run_test ./test/iscsi_tgt/ext4test/ext4test.sh
run_test ./test/iscsi_tgt/rbd/rbd.sh
trap - SIGINT SIGTERM EXIT
kill_stub
# TODO: enable remote NVMe controllers with multi-process so that
# we can use the stub for this test
run_test ./test/iscsi_tgt/nvme_remote/fio_remote_nvme.sh
timing_exit iscsi_tgt

View File

@ -29,7 +29,7 @@ fio_py="python $rootdir/scripts/fio.py"
timing_enter start_iscsi_tgt
$ISCSI_APP -c $testdir/iscsi.conf -m 0xFFFF &
$ISCSI_APP -c $testdir/iscsi.conf -m $ISCSI_TEST_CORE_MASK &
pid=$!
trap "killprocess $pid; exit 1" SIGINT SIGTERM EXIT