blob: 1caf045daa082688a4eecbbb33eb5e10a026a487 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001#!/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
10source config.sh
11
12# Java variables
13DEFAULT_DESTINATION_JAVA_TEST_FILE=${DEFAULT_TEST_SCP_DIR}/${DEFAULT_JAVA_TEST_NAME}
14
15# C++ Variables
16DEFAULT_DESTINATION_CPP_TEST_FILE=${DEFAULT_TEST_SCP_DIR}/${DEFAULT_CPP_TEST_NAME}
17
18DEFAULT_DESTINATION_RUN_TEST_SCRIPT=${DEFAULT_DESTINATION_DIR}/${DEFAULT_LOCAL_RUN_TEST_SCRIPT}
19
20usage="$(basename "$0") [-h] (java|cpp) [-A] [arg] [arg]...
21A script designed to run the integration tests.
22This script should only be run on the computer connected to the roboRIO.
23Where:
24 -h Show this help text.
Austin Schuh1e69f942020-11-14 15:06:14 -080025 -A Disable language recommended arguments.
Brian Silverman8fce7482020-01-05 13:18:21 -080026 arg Additional arguments to be passed to test."
27
28
29# These variables are set when the language is selected
30LANGUAGE=none
31LOCAL_TEST_FILE=none
32DESTINATION_TEST_FILE=none
33TEST_RUN_ARGS=""
34DESTINATION_TEST_RESULTS=none
35LOCAL_TEST_RESULTS=none
36
37
James Kuszmaulb13e13f2023-11-22 20:44:04 -080038# Begin searching for options from the second parameter on
Brian Silverman8fce7482020-01-05 13:18:21 -080039PARAM_ARGS=${@:2}
40
41if [[ "$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
47elif [[ "$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
53elif [[ "$1" = "-h" ]]; then
54 printf "Usage:\n"
55 echo "$usage"
56 exit
57else
58 printf "Invalid language selection: %s\n\n" "$1" >&2
59 echo "$usage" >&2
60 exit 1
61fi
62
63# Check if the test file to upload exists
64if [[ ! -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
68fi
69
70TEST_RUN_ARGS="${@:2}"
71
72shopt -s huponexit
73
74# Fail if any command fails
75set -e
76
77ssh ${ROBOT_ADDRESS} "rm -R ${DEFAULT_DESTINATION_TEST_RESULTS_DIR}; mkdir ${DEFAULT_DESTINATION_TEST_RESULTS_DIR}"
78scp ${DEFAULT_LIBRARY_NATIVE_FILES}/* ${ROBOT_ADDRESS}:${DEFAULT_LIBRARY_NATIVE_DESTINATION}
79ssh ${ADMIN_ROBOT_ADDRESS} ldconfig
80scp config.sh ${DEFAULT_LOCAL_RUN_TEST_SCRIPT} ${ROBOT_ADDRESS}:/${DEFAULT_DESTINATION_DIR}
81ssh ${ROBOT_ADDRESS} "chmod a+x ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT}; mkdir ${DEFAULT_TEST_SCP_DIR}; touch ${DESTINATION_TEST_FILE}"
82scp ${LOCAL_TEST_FILE} ${ROBOT_ADDRESS}:${DESTINATION_TEST_FILE}
83ssh ${ROBOT_ADDRESS} ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT} ${LANGUAGE} -d ${DEFAULT_TEST_SCP_DIR} ${TEST_RUN_ARGS}
84mkdir ${DEFAULT_LOCAL_TEST_RESULTS_DIR}; scp ${ROBOT_ADDRESS}:${DESTINATION_TEST_RESULTS} ${LOCAL_TEST_RESULTS}