You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.4 KiB
139 lines
3.4 KiB
#!/bin/bash |
|
# |
|
# Starts tests from within the container |
|
# |
|
# License: according to LICENSE.md in the root directory of the PX4 Firmware repository |
|
set -e |
|
|
|
# TODO move to docker image |
|
pip install px4tools pymavlink -q |
|
|
|
# A POSIX variable |
|
OPTIND=1 # Reset in case getopts has been used previously in the shell. |
|
|
|
# Initialize our own variables: |
|
do_clean=true |
|
gui=false |
|
|
|
while getopts "h?og" opt; do |
|
case "$opt" in |
|
h|\?) |
|
echo """ |
|
$0 [-h] [-o] [-g] |
|
-h show help |
|
-o don't clean before building (to save time) |
|
-g run gazebo gui |
|
""" |
|
exit 0 |
|
;; |
|
o) do_clean=false |
|
echo "not cleaning" |
|
;; |
|
g) gui=true |
|
;; |
|
esac |
|
done |
|
|
|
|
|
# determine the directory of the source given the directory of this script |
|
pushd `dirname $0` > /dev/null |
|
SCRIPTPATH=`pwd` |
|
popd > /dev/null |
|
ORIG_SRC=$(dirname $SCRIPTPATH) |
|
|
|
# set paths |
|
JOB_DIR=$(dirname $ORIG_SRC) |
|
CATKIN_DIR=$JOB_DIR/catkin |
|
BUILD_DIR=$CATKIN_DIR/build/px4 |
|
SRC_DIR=${CATKIN_DIR}/src/px4 |
|
|
|
echo setting up ROS paths |
|
if [ -f /opt/ros/indigo/setup.bash ] |
|
then |
|
source /opt/ros/indigo/setup.bash |
|
elif [ -f /opt/ros/kinetic/setup.bash ] |
|
then |
|
source /opt/ros/kinetic/setup.bash |
|
else |
|
echo "could not find /opt/ros/{ros-distro}/setup.bash" |
|
exit 1 |
|
fi |
|
export ROS_HOME=$JOB_DIR/.ros |
|
export ROS_LOG_DIR=$ROS_HOME/log |
|
export ROS_TEST_RESULT_DIR=$ROS_HOME/test_results/px4 |
|
export PX4_LOG_DIR=$ROS_HOME/rootfs/fs/microsd/log |
|
TEST_RESULT_TARGET_DIR=$JOB_DIR/test_results |
|
|
|
# TODO |
|
# BAGS=$ROS_HOME |
|
# CHARTS=$ROS_HOME/charts |
|
# EXPORT_CHARTS=/sitl/testing/export_charts.py |
|
|
|
if $do_clean |
|
then |
|
echo cleaning |
|
rm -rf $CATKIN_DIR |
|
rm -rf $ROS_HOME |
|
rm -rf $TEST_RESULT_TARGET_DIR |
|
else |
|
echo skipping clean step |
|
fi |
|
|
|
echo "=====> compile ($SRC_DIR)" |
|
mkdir -p $ROS_HOME |
|
mkdir -p $CATKIN_DIR/src |
|
mkdir -p $TEST_RESULT_TARGET_DIR |
|
if ! [ -d $SRC_DIR ] |
|
then |
|
ln -s $ORIG_SRC $SRC_DIR |
|
ln -s $ORIG_SRC/Tools/sitl_gazebo ${CATKIN_DIR}/src/mavlink_sitl_gazebo |
|
fi |
|
cd $CATKIN_DIR |
|
catkin_make |
|
. ./devel/setup.bash |
|
echo "<=====" |
|
|
|
# print paths to user |
|
echo -e "JOB_DIR\t\t: $JOB_DIR" |
|
echo -e "ROS_HOME\t: $ROS_HOME" |
|
echo -e "CATKIN_DIR\t: $CATKIN_DIR" |
|
echo -e "BUILD_DIR\t: $BUILD_DIR" |
|
echo -e "SRC_DIR\t\t: $SRC_DIR" |
|
echo -e "ROS_TEST_RESULT_DIR\t: $ROS_TEST_RESULT_DIR" |
|
echo -e "ROS_LOG_DIR\t\t: $ROS_LOG_DIR" |
|
echo -e "PX4_LOG_DIR\t\t: $PX4_LOG_DIR" |
|
echo -e "TEST_RESULT_TARGET_DIR\t: $TEST_RESULT_TARGET_DIR" |
|
|
|
# don't exit on error anymore (because single tests or exports might fail) |
|
# however, stop executing tests after the first failure |
|
set +e |
|
echo "=====> run tests" |
|
test $? -eq 0 && rostest px4 mavros_posix_tests_iris.launch gui:=$gui |
|
|
|
# commented out optical flow test for now since ci server has |
|
# an issue producing the simulated flow camera currently |
|
#test $? -eq 0 && rostest px4 mavros_posix_tests_iris_opt_flow.launch gui:=$gui |
|
|
|
test $? -eq 0 && rostest px4 mavros_posix_tests_standard_vtol.launch gui:=$gui |
|
TEST_RESULT=$? |
|
echo "<=====" |
|
|
|
# TODO |
|
echo "=====> process test results" |
|
# cd $BAGS |
|
# for bag in `ls *.bag` |
|
# do |
|
# echo "processing bag: $bag" |
|
# python $EXPORT_CHARTS $CHARTS $bag |
|
# done |
|
|
|
echo "copy build test results to job directory" |
|
cp -r $ROS_TEST_RESULT_DIR/* ${TEST_RESULT_TARGET_DIR} |
|
cp -r $ROS_LOG_DIR/* ${TEST_RESULT_TARGET_DIR} |
|
cp -r $PX4_LOG_DIR/* ${TEST_RESULT_TARGET_DIR} |
|
# cp $BAGS/*.bag ${TEST_RESULT_TARGET_DIR}/ |
|
# cp -r $CHARTS ${TEST_RESULT_TARGET_DIR}/ |
|
echo "<=====" |
|
|
|
# need to return error if tests failed, else Jenkins won't notice the failure |
|
exit $TEST_RESULT
|
|
|