blob: 58fc31023a5c7cb9eb31f49149b48e9e260a0207 (
plain) (
blame)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
#! /bin/sh
# Copyright (c) 2010 Stephan Herrmann.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# Stephan Herrmann - initial API and implementation
###############################################################################
# =============================================================================
# MAIN BUILD AND TEST SCRIPT FOR THE OBJECT TEAMS DEVELOPMENT TOOLING (OTDT)
# =============================================================================
# INPUT: Variables from otdt_prerequisites:
# -----------------------------------------------------------------------------
# TMPDIR for log output
# OT_TESTSUITE_DIR root directory for building and testing
# METADATA directory for metadata from previous builds
# OT_RECIPIENT mail address for failure messages
# ECLIPSE_SDK_TGZ archive file of the base eclipse SDK build (full path)
# ECLIPSE_TESTLIB_ZIP archive file of the eclipse test framework (full path)
# PUBLISHED_UPDATES directory of previously published plugins&features
# ANT_PROFILE configure the ant process
# X11 XVFB, XVNC or X11
# NICE niceness value for nice -n ${NICE}
# =============================================================================
# OUTPUT: Variables passed to the toplevel ant script
# -----------------------------------------------------------------------------
## As Environment Variables:
## ANT_OPTS configure Ant
## As Ant Arguments (from ANT_PROFILE):
## -verbose configure Ant
## As Java Properties:
## -Declipse-app.tgz path of eclipse SDK
## -Declipse.tests.zip path of eclipse test framework
## -Dpublished.updates path to previously published things
## -Ddo.build.all true|false: should OTDT and tests be built?
## -Ddo.run.tests true|false: should test be run?
# =============================================================================
usage()
{
echo "Usage:"
echo "$0 [-b|-nobuild]"
echo " -b: build OTDT only, no testing."
echo " -nobuild: don't build OTDT, directly invoke testing."
}
notifyTestRunFailure()
{
echo "Running the test-cases failed!";
local subject="OT Testsuite: Failure!"
local message="See the attached log to fix the problems."
local cmdLogfiles="-a ${OT_SUITE_LOG}-tail.gz"
grep -q "\[java\] BUILD FAILED" "$OT_SUITE_LOG" && { subject="OT Testsuite: Compile/Build Failure!"; }
tail -1000 "$OT_SUITE_LOG" | gzip -f - > "${OT_SUITE_LOG}-tail.gz"
echo -e "$message" | mutt -s "$subject" $cmdLogfiles $OT_RECIPIENT
cleanup
exit 1;
}
cleanup()
{
if test $X11 = "XVNC"; then
vncserver -kill $VNC_DISPLAY
fi
}
_prefix=`dirname $0`
_prefix=`readlink -f $_prefix`
. "${_prefix}/otdt_prerequisites.sh"
#LOCAL: log file:
OT_SUITE_LOG=$TMPDIR/ot-testsuite.log
# LOCAL: the initial ant build file:
BUILDFILE="${_prefix}/run.xml"
#LOCAL: main ant target:
MAIN_TARGET=${MAIN_TARGET:="ot-junit-all"}
#LOCAL: should OTDT and tests be built?
DO_BUILD="true"
#LOCAL: should the tests be run?
DO_RUN="true"
#LOCAL: Display to be used by VNC:
VNC_DISPLAY=:23
while test $# -gt 0; do
case "$1" in
-b)
MAIN_TARGET="ot-junit-build"
DO_RUN="false"
shift
;;
-nobuild)
DO_BUILD="false"
shift
;;
-x11)
X11=X11
shift
;;
*)
echo "Unknown argument: $1"
usage
exit 1
esac
done
# start working:
test -d "$TMPDIR" || mkdir -p "$TMPDIR"
test -d "$OT_TESTSUITE_DIR" || mkdir -p "$OT_TESTSUITE_DIR"
cd "$OT_TESTSUITE_DIR"
# cleanup previous:
if [ "$DO_BUILD" == "true" ]
then
rm -rf build-root
rm -rf test-root
rm -rf updateSite
rm -rf updateSiteTests
rm -rf metadata
fi
# preload metadata for appending:
if [ -f "${METADATA}/content.xml" ]
then
mkdir -p metadata
cp ${METADATA}/*.xml metadata
fi
trap "echo Aborting by SIGTERM; cleanup; exit 130" INT
# Assemble the Ant call:
ANT_OPTIONS="${ANT_PROFILE} \
-Declipse-app.tgz=${ECLIPSE_SDK_TGZ} \
-Declipse.tests.zip=${ECLIPSE_TESTLIB_ZIP} \
-Dpublished.updates=${PUBLISHED_UPDATES} \
-Ddo.run.tests=${DO_RUN} \
-Ddo.build.all=${DO_BUILD}"
ANT_OPTS="-Xmx1024m"
export ANT_OPTS
CMD="nice -n ${NICE} ant -f ${BUILDFILE} ${ANT_OPTIONS} ${MAIN_TARGET}"
if test "$X11" = "XVFB" && test `which xvfb-run` > /dev/null; then
echo "Running xvfb-run $CMD"
# make sure that xauth can be found
export PATH="$PATH:/usr/bin/X11"
# try to start with DISPLAY=10 instead of default 99 -- seems to not work everywhere
exec xvfb-run -n 10 -e xvfb.log --auto-servernum $CMD < /dev/null > ${OT_SUITE_LOG} 2>&1 || { notifyTestRunFailure; }
elif test "$X11" = "XVNC"; then
echo "starting vncserver $VNC_DISPLAY"
vncserver $VNC_DISPLAY
DISPLAY=$VNC_DISPLAY
export DISPLAY
exec $CMD < /dev/null > ${OT_SUITE_LOG} 2>&1 && { cleanup; } || { notifyTestRunFailure; }
echo "Cleaning up after successful run..."
/bin/rm -rf ${OT_TESTSUITE_DIR}/build-root/eclipse
else
echo "##### You don't have xvfb nor vnc, the GUI tests will appear on your display... ####"
echo "Running $CMD"
eval "$CMD" < /dev/null
fi
trap - INT
|