mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
The two run scripts now take an extra optional parameter [-m] that overrides the giving and taking of the mutex and lets the user handle it. This is used by the jenkins script to prevent other users from jumping in at any time while the script is running. Change-Id: Iffcbeb7ce677b173b1e9b7d9953d5a35b2643436
80 lines
2.6 KiB
Bash
Executable File
80 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#*----------------------------------------------------------------------------*#
|
|
#* Copyright (c) FIRST 2014. All Rights Reserved. *#
|
|
#* Open Source Software - may be modified and shared by FRC teams. The code *#
|
|
#* must be accompanied by the FIRST BSD license file in the root directory of *#
|
|
#* the project. *#
|
|
#*----------------------------------------------------------------------------*#
|
|
|
|
# Configurable variables
|
|
source config.sh
|
|
|
|
# Setup the mutex release before we grab it
|
|
mutexTaken=false
|
|
# This function should run even if the script exits abnormally
|
|
function finish {
|
|
if [ "$mutexTaken" == true ]; then
|
|
SSH_GIVE_MUTEX="ssh -t ${ROBOT_ADDRESS} /usr/local/frc/bin/teststand give --name=$(whoami)"
|
|
if [ $(which sshpass) ]; then
|
|
sshpass -p "" ${SSH_GIVE_MUTEX}
|
|
else
|
|
printf "WARNING!!! THIS IS HOW THE MUTEX IS RELEASED!\nIF YOU CHOOSE TO 'ctr+c' NOW YOU WILL HAVE TO HAND BACK THE MUTEX MANUALLY ON THE ROBOT.\n"
|
|
eval ${SSH_GIVE_MUTEX}
|
|
fi
|
|
mutexTaken=false
|
|
fi
|
|
}
|
|
trap finish EXIT SIGINT
|
|
|
|
|
|
|
|
# Take the mutex from the driver station
|
|
mutexTaken=true
|
|
SSH_TAKE_MUTEX="ssh -t ${ROBOT_ADDRESS} /usr/local/frc/bin/teststand take --name=$(whoami)"
|
|
if [ $(which sshpass) ]; then
|
|
sshpass -p "" ${SSH_TAKE_MUTEX}
|
|
else
|
|
eval ${SSH_TAKE_MUTEX}
|
|
fi
|
|
|
|
# If there are already test results in the repository then remove them
|
|
if [[ -e ${DEFAULT_LOCAL_TEST_RESULTS_DIR} ]]; then
|
|
rm -R ${DEFAULT_LOCAL_TEST_RESULTS_DIR}
|
|
fi
|
|
|
|
# Make the directory where the tests should live
|
|
mkdir ${DEFAULT_LOCAL_TEST_RESULTS_DIR} 2>/dev/null
|
|
|
|
# Remove the preivous test results from the the robot
|
|
SSH_REMOVE_OLD_TEST_RESULTS="ssh -t ${ROBOT_ADDRESS} rm -R ${DEFAULT_DESTINATION_TEST_RESULTS_DIR}; mkdir ${DEFAULT_DESTINATION_TEST_RESULTS_DIR}"
|
|
if [ $(which sshpass) ]; then
|
|
sshpass -p "" ${SSH_REMOVE_OLD_TEST_RESULTS}
|
|
else
|
|
eval ${SSH_REMOVE_OLD_TEST_RESULTS}
|
|
fi
|
|
|
|
printf "Running cpp test\n"
|
|
|
|
# Run the C++ Tests
|
|
./deploy-and-run-test-on-robot.sh cpp -m -A "--gtest_output=xml:${DEFAULT_DESTINATION_CPP_TEST_RESULTS}"
|
|
|
|
# Retrive the C++ Test Results
|
|
SCP_GET_CPP_TEST_RESULT="scp ${ROBOT_ADDRESS}:${DEFAULT_DESTINATION_CPP_TEST_RESULTS} ${DEFAULT_LOCAL_CPP_TEST_RESULT}"
|
|
if [ $(which sshpass) ]; then
|
|
sshpass -p "" ${SCP_GET_CPP_TEST_RESULT}
|
|
else
|
|
eval ${SCP_GET_CPP_TEST_RESULT}
|
|
fi
|
|
|
|
# Run the Java Tests
|
|
./deploy-and-run-test-on-robot.sh java -m
|
|
|
|
# Retrive the Java Test Results
|
|
SCP_GET_JAVA_TEST_RESULT="scp ${ROBOT_ADDRESS}:${DEFAULT_DESTINATION_JAVA_TEST_RESULTS} ${DEFAULT_LOCAL_JAVA_TEST_RESULT}"
|
|
if [ $(which sshpass) ]; then
|
|
sshpass -p "" ${SCP_GET_JAVA_TEST_RESULT}
|
|
else
|
|
eval ${SCP_GET_JAVA_TEST_RESULT}
|
|
fi
|
|
|
|
# The mutex is released when this program exits |