examples/ipsec-secgw: support header reconstruction
[dpdk.git] / examples / ipsec-secgw / test / run_test.sh
1 #! /bin/bash
2
3 # usage: /bin/bash run_test.sh [-46]
4 # Run all defined linux_test[4,6].sh test-cases one by one
5 # user has to setup properly the following environment variables:
6 #  SGW_PATH - path to the ipsec-secgw binary to test
7 #  REMOTE_HOST - ip/hostname of the DUT
8 #  REMOTE_IFACE - iface name for the test-port on DUT
9 #  ETH_DEV - ethernet device to be used on SUT by DPDK ('-w <pci-id>')
10 # Also user can optonally setup:
11 #  SGW_LCORE - lcore to run ipsec-secgw on (default value is 0)
12 #  CRYPTO_DEV - crypto device to be used ('-w <pci-id>')
13 #  if none specified appropriate vdevs will be created by the scrit
14 #  MULTI_SEG_TEST - ipsec-secgw option to enable reassembly support and
15 #  specify size of reassembly table (i.e. MULTI_SEG_TEST="--reassemble 128")
16 # refer to linux_test[4,6].sh for more information
17
18
19 # All supported modes to test.
20 # naming convention:
21 # 'old' means that ipsec-secgw will run in legacy (non-librte_ipsec mode)
22 # 'tun/trs' refer to tunnel/transport mode respectively
23
24 usage()
25 {
26         echo "Usage:"
27         echo -e "\t$0 -[46p]"
28         echo -e "\t\t-4 Perform Linux IPv4 network tests"
29         echo -e "\t\t-6 Perform Linux IPv6 network tests"
30         echo -e "\t\t-p Perform packet validation tests"
31         echo -e "\t\t-h Display this help"
32 }
33
34 LINUX_TEST="tun_aescbc_sha1 \
35 tun_aescbc_sha1_esn \
36 tun_aescbc_sha1_esn_atom \
37 tun_aesgcm \
38 tun_aesgcm_esn \
39 tun_aesgcm_esn_atom \
40 trs_aescbc_sha1 \
41 trs_aescbc_sha1_esn \
42 trs_aescbc_sha1_esn_atom \
43 trs_aesgcm \
44 trs_aesgcm_esn \
45 trs_aesgcm_esn_atom \
46 tun_aescbc_sha1_old \
47 tun_aesgcm_old \
48 trs_aescbc_sha1_old \
49 trs_aesgcm_old \
50 tun_aesctr_sha1 \
51 tun_aesctr_sha1_old \
52 tun_aesctr_sha1_esn \
53 tun_aesctr_sha1_esn_atom \
54 trs_aesctr_sha1 \
55 trs_aesctr_sha1_old \
56 trs_aesctr_sha1_esn \
57 trs_aesctr_sha1_esn_atom \
58 tun_3descbc_sha1 \
59 tun_3descbc_sha1_old \
60 tun_3descbc_sha1_esn \
61 tun_3descbc_sha1_esn_atom \
62 trs_3descbc_sha1 \
63 trs_3descbc_sha1_old \
64 trs_3descbc_sha1_esn \
65 trs_3descbc_sha1_esn_atom"
66
67 PKT_TESTS="trs_ipv6opts \
68 tun_null_header_reconstruct"
69
70 DIR=$(dirname $0)
71
72 # get input options
73 run4=0
74 run6=0
75 runpkt=0
76 while getopts ":46ph" opt
77 do
78         case $opt in
79                 4)
80                         run4=1
81                         ;;
82                 6)
83                         run6=1
84                         ;;
85                 p)
86                         runpkt=1
87                         ;;
88                 h)
89                         usage
90                         exit 0
91                         ;;
92                 ?)
93                         echo "Invalid option"
94                         usage
95                         exit 127
96                         ;;
97         esac
98 done
99
100 # no test suite has been selected
101 if [[ ${run4} -eq 0 && ${run6} -eq 0 && ${runpkt} -eq 0 ]]; then
102         usage
103         exit 127
104 fi
105
106 # perform packet processing validation tests
107 st=0
108 if [ $runpkt -eq 1 ]; then
109         echo "Performing packet validation tests"
110         /bin/bash ${DIR}/pkttest.sh ${PKT_TESTS}
111         st=$?
112
113         echo "pkttests finished with status ${st}"
114         if [[ ${st} -ne 0 ]]; then
115                 echo "ERROR pkttests FAILED"
116                 exit ${st}
117         fi
118 fi
119
120 # perform network tests
121 if [[ ${run4} -eq 1 || ${run6} -eq 1 ]]; then
122         for i in ${LINUX_TEST}; do
123
124                 echo "starting test ${i}"
125
126                 st4=0
127                 if [[ ${run4} -ne 0 ]]; then
128                         /bin/bash ${DIR}/linux_test4.sh ${i}
129                         st4=$?
130                         echo "test4 ${i} finished with status ${st4}"
131                 fi
132
133                 st6=0
134                 if [[ ${run6} -ne 0 ]]; then
135                         /bin/bash ${DIR}/linux_test6.sh ${i}
136                         st6=$?
137                         echo "test6 ${i} finished with status ${st6}"
138                 fi
139
140                 let "st = st4 + st6"
141                 if [[ $st -ne 0 ]]; then
142                         echo "ERROR test ${i} FAILED"
143                         exit $st
144                 fi
145         done
146 fi