| #!/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 |
| |
| ( |
| # Wait for lock |
| printf "Getting exclusive lock for RIO execution...\n" |
| flock -x 200 || exit 1 |
| |
| # Ensure the teststand is dead |
| SSH_STOP_TESTSTAND="ssh -t ${ROBOT_ADDRESS} sh -c '/etc/init.d/teststand stop; sleep 1'" |
| if [ $(which sshpass) ]; then |
| sshpass -p "" ${SSH_STOP_TESTSTAND} |
| else |
| eval ${SSH_STOP_TESTSTAND} |
| 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 -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 |
| |
| sleep 10 |
| |
| # Run the Java Tests |
| ./deploy-and-run-test-on-robot.sh java |
| |
| # 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 |
| |
| # Make sure that we got test results back. |
| if [ ! -e ${DEFAULT_LOCAL_CPP_TEST_RESULT} ]; then |
| echo "There are no results from the C++ tests; they must have failed." |
| exit 100 |
| fi |
| |
| if [ ! -e ${DEFAULT_LOCAL_JAVA_TEST_RESULT} ]; then |
| echo "There are no results from the Java tests; they must have failed." |
| exit 101 |
| fi |
| |
| # The mutex is released when this program exits |
| ) 200>/var/lock/jenkins.rio.exclusivelock |