Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | #*----------------------------------------------------------------------------*# |
| 3 | #* Copyright (c) 2014-2019 FIRST. All Rights Reserved. *# |
| 4 | #* Open Source Software - may be modified and shared by FRC teams. The code *# |
| 5 | #* must be accompanied by the FIRST BSD license file in the root directory of *# |
| 6 | #* the project. *# |
| 7 | #*----------------------------------------------------------------------------*# |
| 8 | |
| 9 | # Configurable variables |
| 10 | source config.sh |
| 11 | |
| 12 | # Java variables |
| 13 | DEFAULT_DESTINATION_JAVA_TEST_FILE=${DEFAULT_TEST_SCP_DIR}/${DEFAULT_JAVA_TEST_NAME} |
| 14 | |
| 15 | # C++ Variables |
| 16 | DEFAULT_DESTINATION_CPP_TEST_FILE=${DEFAULT_TEST_SCP_DIR}/${DEFAULT_CPP_TEST_NAME} |
| 17 | |
| 18 | DEFAULT_DESTINATION_RUN_TEST_SCRIPT=${DEFAULT_DESTINATION_DIR}/${DEFAULT_LOCAL_RUN_TEST_SCRIPT} |
| 19 | |
| 20 | usage="$(basename "$0") [-h] (java|cpp) [-A] [arg] [arg]... |
| 21 | A script designed to run the integration tests. |
| 22 | This script should only be run on the computer connected to the roboRIO. |
| 23 | Where: |
| 24 | -h Show this help text. |
Austin Schuh | 1e69f94 | 2020-11-14 15:06:14 -0800 | [diff] [blame] | 25 | -A Disable language recommended arguments. |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 26 | arg Additional arguments to be passed to test." |
| 27 | |
| 28 | |
| 29 | # These variables are set when the language is selected |
| 30 | LANGUAGE=none |
| 31 | LOCAL_TEST_FILE=none |
| 32 | DESTINATION_TEST_FILE=none |
| 33 | TEST_RUN_ARGS="" |
| 34 | DESTINATION_TEST_RESULTS=none |
| 35 | LOCAL_TEST_RESULTS=none |
| 36 | |
| 37 | |
James Kuszmaul | b13e13f | 2023-11-22 20:44:04 -0800 | [diff] [blame] | 38 | # Begin searching for options from the second parameter on |
Brian Silverman | 8fce748 | 2020-01-05 13:18:21 -0800 | [diff] [blame] | 39 | PARAM_ARGS=${@:2} |
| 40 | |
| 41 | if [[ "$1" = java ]]; then |
| 42 | LANGUAGE=$1 |
| 43 | LOCAL_TEST_FILE=$DEFAULT_LOCAL_JAVA_TEST_FILE |
| 44 | DESTINATION_TEST_FILE=$DEFAULT_DESTINATION_JAVA_TEST_FILE |
| 45 | DESTINATION_TEST_RESULTS=$DEFAULT_DESTINATION_JAVA_TEST_RESULTS |
| 46 | LOCAL_TEST_RESULTS=$DEFAULT_LOCAL_JAVA_TEST_RESULT |
| 47 | elif [[ "$1" = cpp ]]; then |
| 48 | LANGUAGE=$1 |
| 49 | LOCAL_TEST_FILE=$DEFAULT_LOCAL_CPP_TEST_FILE |
| 50 | DESTINATION_TEST_FILE=$DEFAULT_DESTINATION_CPP_TEST_FILE |
| 51 | DESTINATION_TEST_RESULTS=$DEFAULT_DESTINATION_CPP_TEST_RESULTS |
| 52 | LOCAL_TEST_RESULTS=$DEFAULT_LOCAL_CPP_TEST_RESULT |
| 53 | elif [[ "$1" = "-h" ]]; then |
| 54 | printf "Usage:\n" |
| 55 | echo "$usage" |
| 56 | exit |
| 57 | else |
| 58 | printf "Invalid language selection: %s\n\n" "$1" >&2 |
| 59 | echo "$usage" >&2 |
| 60 | exit 1 |
| 61 | fi |
| 62 | |
| 63 | # Check if the test file to upload exists |
| 64 | if [[ ! -e ${LOCAL_TEST_FILE} ]]; then |
| 65 | printf "The test file does not exist: %s\nAre you sure that you compiled the tests??\n\n" "${LOCAL_TEST_FILE}" >&2 |
| 66 | echo "$usage" >&2 |
| 67 | exit 1 |
| 68 | fi |
| 69 | |
| 70 | TEST_RUN_ARGS="${@:2}" |
| 71 | |
| 72 | shopt -s huponexit |
| 73 | |
| 74 | # Fail if any command fails |
| 75 | set -e |
| 76 | |
| 77 | ssh ${ROBOT_ADDRESS} "rm -R ${DEFAULT_DESTINATION_TEST_RESULTS_DIR}; mkdir ${DEFAULT_DESTINATION_TEST_RESULTS_DIR}" |
| 78 | scp ${DEFAULT_LIBRARY_NATIVE_FILES}/* ${ROBOT_ADDRESS}:${DEFAULT_LIBRARY_NATIVE_DESTINATION} |
| 79 | ssh ${ADMIN_ROBOT_ADDRESS} ldconfig |
| 80 | scp config.sh ${DEFAULT_LOCAL_RUN_TEST_SCRIPT} ${ROBOT_ADDRESS}:/${DEFAULT_DESTINATION_DIR} |
| 81 | ssh ${ROBOT_ADDRESS} "chmod a+x ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT}; mkdir ${DEFAULT_TEST_SCP_DIR}; touch ${DESTINATION_TEST_FILE}" |
| 82 | scp ${LOCAL_TEST_FILE} ${ROBOT_ADDRESS}:${DESTINATION_TEST_FILE} |
| 83 | ssh ${ROBOT_ADDRESS} ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT} ${LANGUAGE} -d ${DEFAULT_TEST_SCP_DIR} ${TEST_RUN_ARGS} |
| 84 | mkdir ${DEFAULT_LOCAL_TEST_RESULTS_DIR}; scp ${ROBOT_ADDRESS}:${DESTINATION_TEST_RESULTS} ${LOCAL_TEST_RESULTS} |