]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/test/iscsi_tgt/digests/digests.sh
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / test / iscsi_tgt / digests / digests.sh
CommitLineData
11fdf7f2
TL
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
9f95a23c
TL
8# $1 = "iso" - triggers isolation mode (setting up required environment).
9# $2 = test type posix or vpp. defaults to posix.
10iscsitestinit $1 $2
11
11fdf7f2
TL
12function node_login_fio_logout() {
13 for arg in "$@"; do
14 iscsiadm -m node -p $TARGET_IP:$ISCSI_PORT -o update -n node.conn[0].iscsi.$arg
15 done
16 iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
f67539c2 17 waitforiscsidevices 1
9f95a23c
TL
18 $fio_py -p iscsi -i 512 -d 1 -t write -r 2
19 $fio_py -p iscsi -i 512 -d 1 -t read -r 2
11fdf7f2 20 iscsiadm -m node --logout -p $TARGET_IP:$ISCSI_PORT
f67539c2 21 waitforiscsidevices 0
11fdf7f2
TL
22}
23
24function iscsi_header_digest_test() {
25 # Enable HeaderDigest to CRC32C
11fdf7f2 26 node_login_fio_logout "HeaderDigest -v CRC32C"
11fdf7f2
TL
27
28 # Let iscsi target to decide its preference on
29 # HeaderDigest based on its capability.
11fdf7f2 30 node_login_fio_logout "HeaderDigest -v CRC32C,None"
11fdf7f2
TL
31}
32
33function iscsi_header_data_digest_test() {
34 # Only enable HeaderDigest to CRC32C
11fdf7f2 35 node_login_fio_logout "HeaderDigest -v CRC32C" "DataDigest -v None"
11fdf7f2
TL
36
37 # Only enable DataDigest to CRC32C
11fdf7f2 38 node_login_fio_logout "HeaderDigest -v None" "DataDigest -v CRC32C"
11fdf7f2
TL
39
40 # Let iscsi target to decide its preference on both
41 # HeaderDigest and DataDigest based on its capability.
11fdf7f2 42 node_login_fio_logout "HeaderDigest -v CRC32C,None" "DataDigest -v CRC32C,None"
11fdf7f2
TL
43
44 # Enable HeaderDigest and DataDigest both.
11fdf7f2 45 node_login_fio_logout "HeaderDigest -v CRC32C" "DataDigest -v CRC32C"
11fdf7f2
TL
46}
47
11fdf7f2
TL
48MALLOC_BDEV_SIZE=64
49MALLOC_BLOCK_SIZE=512
50
51rpc_py="$rootdir/scripts/rpc.py"
52fio_py="$rootdir/scripts/fio.py"
53
54timing_enter start_iscsi_tgt
55
f67539c2 56"${ISCSI_APP[@]}" -m $ISCSI_TEST_CORE_MASK --wait-for-rpc &
11fdf7f2
TL
57pid=$!
58echo "Process pid: $pid"
59
f67539c2 60trap 'killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT
11fdf7f2
TL
61
62waitforlisten $pid
f67539c2
TL
63$rpc_py iscsi_set_options -o 30 -a 16
64$rpc_py framework_start_init
11fdf7f2
TL
65echo "iscsi_tgt is listening. Running tests..."
66
67timing_exit start_iscsi_tgt
68
f67539c2
TL
69$rpc_py iscsi_create_portal_group $PORTAL_TAG $TARGET_IP:$ISCSI_PORT
70$rpc_py iscsi_create_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK
71$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE
11fdf7f2
TL
72# "Malloc0:0" ==> use Malloc0 blockdev for LUN0
73# "1:2" ==> map PortalGroup1 to InitiatorGroup2
74# "64" ==> iSCSI queue depth 64
75# "-d" ==> disable CHAP authentication
f67539c2 76$rpc_py iscsi_create_target_node Target3 Target3_alias 'Malloc0:0' $PORTAL_TAG:$INITIATOR_TAG 64 -d
11fdf7f2
TL
77sleep 1
78
79iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
80
f67539c2 81# iscsiadm installed by some Fedora releases loses the ability to set DataDigest parameter.
11fdf7f2 82# Check and avoid setting DataDigest.
f67539c2
TL
83DataDigestAbility=$(iscsiadm -m node -p $TARGET_IP:$ISCSI_PORT -o update -n node.conn[0].iscsi.DataDigest -v None 2>&1 || true)
84if [ "$DataDigestAbility"x != x ]; then
85 run_test "iscsi_tgt_digest" iscsi_header_digest_test
11fdf7f2 86else
f67539c2 87 run_test "iscsi_tgt_data_digest" iscsi_header_data_digest_test
11fdf7f2
TL
88fi
89
90trap - SIGINT SIGTERM EXIT
91
92iscsicleanup
93killprocess $pid
9f95a23c 94iscsitestfini $1 $2