xref: /spdk/test/iscsi_tgt/multiconnection/multiconnection.sh (revision 18c8b52afa69f39481ebb75711b2f30b11693f9d)
1#!/usr/bin/env bash
2
3testdir=$(readlink -f $(dirname $0))
4rootdir=$(readlink -f $testdir/../../..)
5source $rootdir/test/common/autotest_common.sh
6source $rootdir/test/iscsi_tgt/common.sh
7
8iscsitestinit
9
10# Declare rpc_py here, because its default value points to rpc_cmd function,
11# which does not tolerate piping arguments into it.
12rpc_py="$rootdir/scripts/rpc.py"
13fio_py="$rootdir/scripts/fio-wrapper"
14
15CONNECTION_NUMBER=30
16
17# Remove lvol bdevs and stores.
18function remove_backends() {
19	echo "INFO: Removing lvol bdevs"
20	for i in $(seq 1 $CONNECTION_NUMBER); do
21		lun="lvs0/lbd_$i"
22		$rpc_py bdev_lvol_delete $lun
23		echo -e "\tINFO: lvol bdev $lun removed"
24	done
25	sleep 1
26
27	echo "INFO: Removing lvol stores"
28	$rpc_py bdev_lvol_delete_lvstore -l lvs0
29	echo "INFO: lvol store lvs0 removed"
30
31	echo "INFO: Removing NVMe"
32	$rpc_py bdev_nvme_detach_controller Nvme0
33
34	return 0
35}
36
37timing_enter start_iscsi_tgt
38"${ISCSI_APP[@]}" --wait-for-rpc &
39iscsipid=$!
40echo "iSCSI target launched. pid: $iscsipid"
41trap 'remove_backends; iscsicleanup; killprocess $iscsipid; iscsitestfini; exit 1' SIGINT SIGTERM EXIT
42
43waitforlisten $iscsipid
44$rpc_py iscsi_set_options -o 30 -a 128
45$rpc_py framework_start_init
46$rootdir/scripts/gen_nvme.sh | $rpc_py load_subsystem_config
47timing_exit start_iscsi_tgt
48
49$rpc_py iscsi_create_portal_group $PORTAL_TAG $TARGET_IP:$ISCSI_PORT
50$rpc_py iscsi_create_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK
51
52echo "Creating an iSCSI target node."
53ls_guid=$($rpc_py bdev_lvol_create_lvstore "Nvme0n1" "lvs0" -c 1048576)
54
55# Assign even size for each lvol_bdev.
56get_lvs_free_mb $ls_guid
57lvol_bdev_size=$((free_mb / CONNECTION_NUMBER))
58for i in $(seq 1 $CONNECTION_NUMBER); do
59	$rpc_py bdev_lvol_create -u $ls_guid lbd_$i $lvol_bdev_size
60done
61
62for i in $(seq 1 $CONNECTION_NUMBER); do
63	lun="lvs0/lbd_$i:0"
64	$rpc_py iscsi_create_target_node Target$i Target${i}_alias "$lun" $PORTAL_TAG:$INITIATOR_TAG 256 -d
65done
66sleep 1
67
68echo "Logging into iSCSI target."
69iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
70iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
71waitforiscsidevices $CONNECTION_NUMBER
72
73echo "Running FIO"
74$fio_py -p iscsi -i 131072 -d 64 -t randrw -r 5
75$fio_py -p iscsi -i 262144 -d 16 -t randwrite -r 10
76sync
77
78trap - SIGINT SIGTERM EXIT
79
80rm -f ./local-job*
81iscsicleanup
82remove_backends
83killprocess $iscsipid
84iscsitestfini
85