blob: a4232e68168fb51726275d47436b8d2a67b607a1 [file] [log] [blame]
Brian Silvermanf7f267a2017-02-04 16:16:08 -08001#!/usr/bin/env bash
2#*----------------------------------------------------------------------------*#
3#* Copyright (c) FIRST 2014. 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) [-m] [-A] [arg] [arg]...
21A script designed to run the integration tests.
22This script should only be run on the roborio.
23Where:
24 -h Show this help text.
25 -m The driver station mutex will be handled manually.
26 -A Disable language recomended arguments.
27 arg Additional arguments to be passed to test."
28
29
30# These variables are set when the language is selected
31LANGUAGE=none
32LOCAL_TEST_FILE=none
33DESTINATION_TEST_FILE=none
34LIBRARY_FILES=none
35TEST_RUN_ARGS=""
36
37# Begin searching for options from the third paramater on
38PARAM_ARGS=${@:2}
39
40if [[ "$1" = java ]]; then
41 LANGUAGE=$1
42 LOCAL_TEST_FILE=$DEFAULT_LOCAL_JAVA_TEST_FILE
43 DESTINATION_TEST_FILE=$DEFAULT_DESTINATION_JAVA_TEST_FILE
44elif [[ "$1" = cpp ]]; then
45 LANGUAGE=$1
46 LOCAL_TEST_FILE=$DEFAULT_LOCAL_CPP_TEST_FILE
47 DESTINATION_TEST_FILE=$DEFAULT_DESTINATION_CPP_TEST_FILE
48elif [[ "$1" = "-h" ]]; then
49 printf "Usage:\n"
50 echo "$usage"
51 exit
52else
53 printf "Invalid language selection: %s\n\n" "$1" >&2
54 echo "$usage" >&2
55 exit 1
56fi
57
58# Check if the test file to upload exists
59if [[ ! -e ${LOCAL_TEST_FILE} ]]; then
60 printf "The test file does not exist: %s\nAre you sure that you compiled the tests??\n\n" "${LOCAL_TEST_FILE}" >&2
61 echo "$usage" >&2
62 exit 1
63fi
64
65MUTEX_OVERRIDE_PARAM_TEXT=""
66if [[ "$2" = "-m" ]]; then
67 MUTEX_OVERRIDE_PARAM_TEXT="-m "
68 TEST_RUN_ARGS="${@:3}"
69else
70 TEST_RUN_ARGS="${@:2}"
71fi
72
73shopt -s huponexit
74
75SCP_TEST_SCRIPT="scp config.sh ${DEFAULT_LOCAL_RUN_TEST_SCRIPT} ${ROBOT_ADDRESS}:/${DEFAULT_DESTINATION_DIR}"
76SSH_CHMOD_AND_MAKE_TEMP_TEST_DIR="ssh -t ${ROBOT_ADDRESS} \"chmod a+x ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT}; mkdir ${DEFAULT_TEST_SCP_DIR}; touch ${DESTINATION_TEST_FILE}\""
77SCP_TEST_PROGRAM="scp ${LOCAL_TEST_FILE} ${ROBOT_ADDRESS}:${DESTINATION_TEST_FILE}"
78SSH_RUN_TESTS="ssh -t ${ROBOT_ADDRESS} ${DEFAULT_DESTINATION_RUN_TEST_SCRIPT} ${LANGUAGE} $(whoami) ${MUTEX_OVERRIDE_PARAM_TEXT}-d ${DEFAULT_TEST_SCP_DIR} ${TEST_RUN_ARGS}"
79SCP_NATIVE_LIBRARIES="scp ${DEFAULT_LIBRARY_NATIVE_FILES}/* ${ROBOT_ADDRESS}:${DEFAULT_LIBRARY_NATIVE_DESTINATION}"
80CONFIG_NATIVE_LIBRARIES="ssh -t ${ADMIN_ROBOT_ADDRESS} ldconfig"
81
82if [ $(which sshpass) ]; then
83 sshpass -p "" ${SCP_NATIVE_LIBRARIES}
84 sshpass -p "" ${CONFIG_NATIVE_LIBRARIES}
85 sshpass -p "" ${SCP_TEST_SCRIPT}
86 sshpass -p "" ${SSH_CHMOD_AND_MAKE_TEMP_TEST_DIR}
87 sshpass -p "" ${SCP_TEST_PROGRAM}
88 sshpass -p "" ${SSH_RUN_TESTS}
89else
90 eval ${SCP_NATIVE_LIBRARIES}
91 eval ${CONFIG_NATIVE_LIBRARIES}
92 eval ${SCP_TEST_SCRIPT}
93 eval ${SSH_CHMOD_AND_MAKE_TEMP_TEST_DIR}
94 eval ${SCP_TEST_PROGRAM}
95 eval ${SSH_RUN_TESTS}
96fi