#!/bin/bash INSTALL_DIR=/var/opt/ONAP ##################################################################### # Start display on 256 if it has not already been started... # This will stay up and be used for all soak tests # Tried this once and got an unexpected error so restored the start/kill # pattern for each test for now. # Perhaps the error was unrelated to the using the same display for # all tests. Preserve this just in case.... function start_display_if { export DISPLAY=:256 xdpyinfo -display $DISPLAY >/dev/null 2>&1 while [ $? = 1 ] do # Start Xvfb echo -e "Starting Xvfb on display ${DISPLAY} with res ${RES}" Xvfb ${DISPLAY} -ac -screen 0 ${RES} +extension RANDR & disown done } ##################################################################### function start_display { export DISPLAY=:$(( $TEST_NUMBER % 256 )) xdpyinfo -display $DISPLAY >/dev/null 2>&1 while [ $? = 0 ] do DISPLAY=$(( $RANDOM % 1000 )) xdpyinfo -display $DISPLAY >/dev/null 2>&1 done # Start Xvfb echo -e "Starting Xvfb on display ${DISPLAY} with res ${RES}" Xvfb ${DISPLAY} -ac -screen 0 ${RES} +extension RANDR & XVFBPID=$! disown echo ${DISPLAY} > /tmp/robotDisplay.$TEST_NUMBER # Get and save pid of this spawned process to make sure we kill the correct process later } ##################################################################### function kill_display { xdpyinfo -display $DISPLAY >/dev/null 2>&1 if [ $? = 0 ]; then kill -9 $XVFBPID >/dev/null 2>&1 fi rm -rf /tmp/robotDisplay.$TEST_NUMBER } ##################################################################### # main ##################################################################### export ROBOT_TAG=$1 export TEST_NUMBER=$2 if [ "$TEST_NUMBER" = "" ];then TEST_NUMBER=$$ fi # Use default if none specified as env var DEFAULT_LOG_LEVEL="INFO" # Available levels: TRACE, DEBUG, INFO (default), WARN, NONE (no logging) LOG_LEVEL=${LOG_LEVEL:-$DEFAULT_LOG_LEVEL} # To mitigate the chromedriver hanging issue export DBUS_SESSION_BUS_ADDRESS=/dev/null RES="1280x1024x24" OUTPUT_FOLDER=/share/logs/${SOAKSUBFOLDER}runEteTag_$TEST_NUMBER mkdir -p $OUTPUT_FOLDER INSTALL_DIR="/var/opt/ONAP" ROBOT_LIBS=./robot/library:./robot/library/ONAPLibrary:./robot/library/heatbridge VARIABLEFILES="-V /share/config/vm_properties.py -V /share/config/integration_robot_properties.py -V /share/config/integration_preload_parameters.py" VARIABLES="-v GLOBAL_BUILD_NUMBER:$TEST_NUMBER" LISTENERS= start_display # Execute tests echo -e "Executing robot test ${ROBOT_TAG} at log level ${LOG_LEVEL}" cd ${INSTALL_DIR} python -m robot.run -L ${LOG_LEVEL} -d ${OUTPUT_FOLDER} ${VARIABLEFILES} ${VARIABLES} ${LISTENERS} -P ${ROBOT_LIBS} -i ${ROBOT_TAG} $(pwd) > ${OUTPUT_FOLDER}/robot.out 2>&1 #################################################################### # Stop Xvfb we started earlier kill_display