#!/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