aboutsummaryrefslogtreecommitdiffstats
path: root/runTags.sh
blob: 08ffe531db9a95d8e1e7560375affd81a9e16716 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/bash

# Set the defaults
DEFAULT_LOG_LEVEL="TRACE" # Available levels: TRACE, DEBUG, INFO (default), WARN, NONE (no logging)
DEFAULT_RES="1280x1024x24"
DEFAULT_DISPLAY=":99"
DEFAULT_ROBOT_TEST="-i health"
INSTALL_NAME="OpenECOMP_ETE"
DEFAULT_OUTPUT_FOLDER=./

# To mitigate the chromedriver hanging issue
export DBUS_SESSION_BUS_ADDRESS=/dev/null

# Use default if none specified as env var
LOG_LEVEL=${LOG_LEVEL:-$DEFAULT_LOG_LEVEL}
RES=${RES:-$DEFAULT_RES}
DISPLAY=${DISPLAY:-$DEFAULT_DISPLAY}

# OUTPUT_FOLDER env variable will be overridden by -d command line argument.
OUTPUT_FOLDER=${OUTPUT_FOLDER:-$DEFAULT_OUTPUT_FOLDER}

VARIABLEFILES=
LISTENERS=

## Single argument, it is an include tag
if [ $# -eq 1 ]; then
    ROBOT_TAGS="-i $1"
fi

##
## if more than 1 tag is supplied, the must be provided with -i or -e
##
while [ $# -gt 1 ]
do
	key="$1"

	case $key in
    	-i|--include)
    	ROBOT_TAGS="${ROBOT_TAGS} -i $2"
    	shift
    	;;
    	-e|--exclude)
    	ROBOT_TAGS="${ROBOT_TAGS} -e $2"
    	shift
    	;;
    	-d|--outputdir)
    	OUTPUT_FOLDER=$2
    	shift
    	;;
  		--display)
    	DISPLAY=:$2
    	shift
    	;;
  		--listener)
    	LISTENERS="${LISTENER} --listener $2 "
    	shift
    	;;
   		-V)
    	VARIABLEFILES="${VARIABLEFILES} -V $2 "
    	shift
    	;;
   		-v)
    	VARIABLES="${VARIABLES} -v $2 "
    	shift
    	;;
	esac
	shift
done

if [ "${ROBOT_TAGS}" = "" ];then
    ROBOT_TAGS=$DEFAULT_ROBOT_TEST
fi

# Start Xvfb
echo -e "Starting Xvfb on display ${DISPLAY} with res ${RES}"
Xvfb ${DISPLAY} -ac -screen 0 ${RES} +extension RANDR &
XVFBPID=$!
# Get pid of this spawned process to make sure we kill the correct process later

export DISPLAY=${DISPLAY}

# Execute tests
echo -e "Executing robot tests at log level ${LOG_LEVEL}"

ROBOT_LIBS=./robot/library:./robot/library/eteutils:./robot/library/heatbridge

cd /var/opt/${INSTALL_NAME}
python -m robot.run -L ${LOG_LEVEL} -d ${OUTPUT_FOLDER} ${VARIABLEFILES} ${VARIABLES} ${LISTENERS} -P ${ROBOT_LIBS} ${ROBOT_TAGS} $(pwd)
RET_CODE=$?

# Stop Xvfb we started earlier
# select it from list of possible Xvfb pids running because
# a) there may be multiple Xvfbs running and
# b) the XVFBPID may not be the correct if the start did not actually work (unlikely and that may be)
PIDS=$(pgrep Xvfb)
for P in $PIDS
do
	if [ $P == $XVFBPID ];then
		kill -9 $P
	fi
done

exit $RET_CODE