Hridya Valsaraju | 11bd9dd | 2017-03-23 12:35:37 -0700 | [diff] [blame] | 1 | function usage() { |
| 2 | echo "runs $TEST_NAME" |
| 3 | echo "\t -h help" |
| 4 | echo "\t -c [CLIENT64_SERVER64 | CLIENT32_SERVER32 | CLIENT64_SERVER32 | CLIENT32_SERVER64] configures whether to run 32-bit or 64-bit versions of the servers and client" |
| 5 | } |
| 6 | |
| 7 | failed_test_cases=() |
| 8 | |
| 9 | function run_test() { |
| 10 | if [ $1 -eq 32 ]; then |
| 11 | CLIENT_PATH=$CLIENT_PATH32 |
| 12 | else |
| 13 | CLIENT_PATH=$CLIENT_PATH64 |
| 14 | fi |
| 15 | |
| 16 | if [ $2 -eq 32 ]; then |
| 17 | SERVER_PATH=$SERVER_PATH32 |
| 18 | else |
| 19 | SERVER_PATH=$SERVER_PATH64 |
| 20 | fi |
| 21 | |
| 22 | echo "Running $1-bit client with $2-bit servers" |
| 23 | $SERVER_PATH & |
Hridya Valsaraju | 11bd9dd | 2017-03-23 12:35:37 -0700 | [diff] [blame] | 24 | SERVER_PID=$! |
| 25 | $CLIENT_PATH |
| 26 | if [ $? -ne 0 ]; then |
| 27 | failed_test_cases+=("$1-bit client with $2-bit servers") |
| 28 | fi |
| 29 | kill $SERVER_PID |
| 30 | } |
| 31 | |
| 32 | function check_env() { |
| 33 | if [ -z ${TEST_NAME+x} ]; then |
| 34 | echo "TEST_NAME is unset"; |
| 35 | exit 1 |
| 36 | fi |
| 37 | |
| 38 | if [ -z ${CLIENT_PATH32+x} ]; then |
| 39 | echo "CLIENT_PATH32 is unset"; |
| 40 | exit 1 |
| 41 | fi |
| 42 | |
| 43 | if [ -z ${CLIENT_PATH64+x} ]; then |
| 44 | echo "CLIENT_PATH64 is unset"; |
| 45 | exit 1 |
| 46 | fi |
| 47 | |
| 48 | if [ -z ${SERVER_PATH32+x} ]; then |
| 49 | echo "SERVER_PATH32 is unset"; |
| 50 | exit 1 |
| 51 | fi |
| 52 | |
| 53 | if [ -z ${SERVER_PATH64+x} ]; then |
| 54 | echo "SERVER_PATH64 is unset"; |
| 55 | exit 1 |
| 56 | fi |
| 57 | } |
| 58 | |
| 59 | #usage: run_all_tests server_path32 server_path64 client_path32 client_path64 test_name [-h/-c config] |
| 60 | function run_all_tests() { |
| 61 | SERVER_PATH32=$1 |
| 62 | SERVER_PATH64=$2 |
| 63 | CLIENT_PATH32=$3 |
| 64 | CLIENT_PATH64=$4 |
| 65 | TEST_NAME=$5 |
| 66 | check_env |
| 67 | shift 5 |
| 68 | |
| 69 | if [ $# -eq 0 ]; then |
| 70 | for i in 32 64 |
| 71 | do |
| 72 | for j in 32 64 |
| 73 | do |
| 74 | run_test $i $j |
| 75 | done |
| 76 | done |
| 77 | count_failed_tests=${#failed_test_cases[@]} |
| 78 | echo "*********************************************************" |
| 79 | echo " $TEST_NAME Final Summary:\n" |
| 80 | if [ $count_failed_tests -gt 0 ]; then |
| 81 | echo " $TEST_NAME failed for the following cases:\n\t" |
| 82 | for each in "${failed_test_cases[@]}" |
| 83 | do |
| 84 | echo "\t$each" |
| 85 | done |
| 86 | else |
| 87 | echo " $TEST_NAME passed for all cases!" |
| 88 | fi |
| 89 | echo "*********************************************************" |
| 90 | fi |
| 91 | |
| 92 | while getopts hc: opt; |
| 93 | do |
| 94 | case $opt in |
| 95 | h) |
| 96 | usage |
| 97 | exit 0 |
| 98 | ;; |
| 99 | c) |
| 100 | case $OPTARG in |
| 101 | CLIENT64_SERVER64) |
| 102 | run_test 64 64 |
| 103 | ;; |
| 104 | CLIENT32_SERVER32) |
| 105 | run_test 32 32 |
| 106 | ;; |
| 107 | CLIENT64_SERVER32) |
| 108 | run_test 64 32 |
| 109 | ;; |
| 110 | CLIENT32_SERVER64) |
| 111 | run_test 32 64 |
| 112 | ;; |
| 113 | *) |
| 114 | echo "Error: unknown config value \"$OPTARG\"" |
| 115 | exit 1 |
| 116 | ;; |
| 117 | esac |
| 118 | ;; |
| 119 | *) |
| 120 | echo "Error: unknown param \"$opt\"" |
| 121 | usage |
| 122 | exit 1 |
| 123 | ;; |
| 124 | esac |
| 125 | done |
| 126 | exit ${#failed_test_cases[@]} |
| 127 | } |