0001
0002
0003
0004 readonly SERVER_MAC="aa:00:00:00:00:02"
0005 readonly CLIENT_MAC="aa:00:00:00:00:01"
0006 readonly TESTS=("data" "ack" "flags" "tcp" "ip" "large")
0007 readonly PROTOS=("ipv4" "ipv6")
0008 dev=""
0009 test="all"
0010 proto="ipv4"
0011
0012 run_test() {
0013 local server_pid=0
0014 local exit_code=0
0015 local protocol=$1
0016 local test=$2
0017 local ARGS=( "--${protocol}" "--dmac" "${SERVER_MAC}" \
0018 "--smac" "${CLIENT_MAC}" "--test" "${test}" "--verbose" )
0019
0020 setup_ns
0021
0022
0023
0024 for tries in {1..3}; do
0025
0026 ip netns exec server_ns ./gro "${ARGS[@]}" "--rx" "--iface" "server" \
0027 1>>log.txt &
0028 server_pid=$!
0029 sleep 0.5
0030 ip netns exec client_ns ./gro "${ARGS[@]}" "--iface" "client" \
0031 1>>log.txt
0032 wait "${server_pid}"
0033 exit_code=$?
0034 if [[ "${exit_code}" -eq 0 ]]; then
0035 break;
0036 fi
0037 done
0038 cleanup_ns
0039 echo ${exit_code}
0040 }
0041
0042 run_all_tests() {
0043 local failed_tests=()
0044 for proto in "${PROTOS[@]}"; do
0045 for test in "${TESTS[@]}"; do
0046 echo "running test ${proto} ${test}" >&2
0047 exit_code=$(run_test $proto $test)
0048 if [[ "${exit_code}" -ne 0 ]]; then
0049 failed_tests+=("${proto}_${test}")
0050 fi;
0051 done;
0052 done
0053 if [[ ${
0054 echo "failed tests: ${failed_tests[*]}. \
0055 Please see log.txt for more logs"
0056 exit 1
0057 else
0058 echo "All Tests Succeeded!"
0059 fi;
0060 }
0061
0062 usage() {
0063 echo "Usage: $0 \
0064 [-i <DEV>] \
0065 [-t data|ack|flags|tcp|ip|large] \
0066 [-p <ipv4|ipv6>]" 1>&2;
0067 exit 1;
0068 }
0069
0070 while getopts "i:t:p:" opt; do
0071 case "${opt}" in
0072 i)
0073 dev="${OPTARG}"
0074 ;;
0075 t)
0076 test="${OPTARG}"
0077 ;;
0078 p)
0079 proto="${OPTARG}"
0080 ;;
0081 *)
0082 usage
0083 ;;
0084 esac
0085 done
0086
0087 if [ -n "$dev" ]; then
0088 source setup_loopback.sh
0089 else
0090 source setup_veth.sh
0091 fi
0092
0093 setup
0094 trap cleanup EXIT
0095 if [[ "${test}" == "all" ]]; then
0096 run_all_tests
0097 else
0098 run_test "${proto}" "${test}"
0099 fi;