CLIENT_PATH64='/data/nativetest64/hidl_test_client/hidl_test_client'
CLIENT_PATH32='/data/nativetest/hidl_test_client/hidl_test_client'
SERVER_PATH64='/data/nativetest64/hidl_test_servers/hidl_test_servers'
SERVER_PATH32='/data/nativetest/hidl_test_servers/hidl_test_servers'

function usage() {
    echo "runs hidl_test"
    echo "\t -h help"
    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"
}

failed_test_cases=()

function run_test() {
    if [ $1 -eq 32 ]; then
        CLIENT_PATH=$CLIENT_PATH32
    else
        CLIENT_PATH=$CLIENT_PATH64
    fi

    if [ $2 -eq 32 ]; then
        SERVER_PATH=$SERVER_PATH32
    else
        SERVER_PATH=$SERVER_PATH64
    fi

    echo "Running $1-bit client with $2-bit servers"
    $SERVER_PATH &
    sleep 1
    SERVER_PID=$!
    $CLIENT_PATH
    if [ $? -ne 0 ]; then
        failed_test_cases+=("$1-bit client with $2-bit servers")
    fi
    kill $SERVER_PID
}

if [ $# -eq 0 ]; then
    for i in 32 64
        do
            for j in 32 64
                do
                    run_test $i $j
                done
        done
    count_failed_tests=${#failed_test_cases[@]}
    echo "*********************************************************"
    echo "    hidl_test Final Summary:\n"
    if [ $count_failed_tests -gt 0 ]; then
        echo "    hidl_test failed for the following cases:\n\t"
        for each in "${failed_test_cases[@]}"
            do
                echo "\t$each"
            done
    else
        echo "    hidl_test passed for all cases!"
    fi
    echo "*********************************************************"
    exit 0
fi

while getopts hc: opt;
do
    case $opt in
        h)
            usage
            exit 0
            ;;
        c)
            case $OPTARG in
                CLIENT64_SERVER64)
                    run_test 64 64
                    ;;
                CLIENT32_SERVER32)
                    run_test 32 32
                    ;;
                CLIENT64_SERVER32)
                    run_test 64 32
                    ;;
                CLIENT32_SERVER64)
                    run_test 32 64
                    ;;
                *)
                    echo "Error: unknown config value \"$OPTARG\""
                    exit 1
                    ;;
            esac
            ;;
        *)
            echo "Error: unknown param \"$opt\""
            usage
            exit 1
            ;;
    esac
done
