blob: 29f34e9925c551d7b629f58c78dc5781f627c4d6 [file] [log] [blame]
#!/bin/bash -ex
#
# Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#
archive_cts(){
cp ${TS_HOME}/bin/xml/config_vi.log ${WORKSPACE}/results
cp ${TS_HOME}/bin/xml/smoke.log ${WORKSPACE}/results
cp ${S1AS_HOME}/domains/domain1/logs/server.log* ${WORKSPACE}/results
cp ${TS_HOME}/bin/ts.jte ${WORKSPACE}/results
echo ${BUILD_ID} > ${WORKSPACE}/results/count.txt
${GREP} "Number of Tests Passed" ${WORKSPACE}/results/smoke.log >> ${WORKSPACE}/results/count.txt
${GREP} "Number of Tests Failed" ${WORKSPACE}/results/smoke.log >> ${WORKSPACE}/results/count.txt
${GREP} "Number of Tests with Errors" ${WORKSPACE}/results/smoke.log >> ${WORKSPACE}/results/count.txt
cat ${WORKSPACE}/results/count.txt | ${SED} -e 's/\[javatest.batch\] Number/Number/g' > ${WORKSPACE}/results/CTS-GP-count.txt
rm ${WORKSPACE}/results/count.txt
tar -cvf ${WORKSPACE}/${TEST_ID}-results.tar.gz -C ${WORKSPACE}/results .
}
test_run_cts_smoke(){
TS_HOME=${WORKSPACE}/javaee-smoke
if [[ -z ${CTS_SMOKE_URL} ]]; then
echo "error: CTS_SMOKE_URL is not set"
exit 1
fi
CTS_SMOKE_BUNDLE=javaee-smoke-8.0_latest.zip
CTS_EXCLUDE_LIST=ts.jtx
pwd
uname -a
java -version
rm -rf /tmp/JTreport /tmp/JTwork /disk1/java_re/.javatest || true
wget ${CTS_SMOKE_URL}/${CTS_SMOKE_BUNDLE}
unzip -q ${CTS_SMOKE_BUNDLE}
cd ${TS_HOME}/bin
#cp $CTS_SMOKE/$CTS_EXCLUDE_LIST .
cp ts.jte ts.jte.orig
${SED} \
-e "s@javaee.home=@javaee\.home=${S1AS_HOME}@g" \
-e "s@javaee.home.ri=@javaee\.home\.ri=${S1AS_HOME}@g" \
-e "s/^orb\.host=/orb\.host=localhost/g" \
-e "s/^mailHost=/mailHost=localhost/g" \
-e "s/^mailuser1=/mailuser1=${USER:-root}@localhost/g" \
-e "s/^mailFrom=.*/mailFrom=${USER:-root}@localhost/g" \
-e "s/orb.host.ri=/orb.host.ri=localhost/g" \
-e "s/^work\.dir=\/files/work\.dir=\/tmp/g" \
-e "s/^report\.dir=\/files/report\.dir=\/tmp/g" \
-e "s/^tz=.*/tz=US\/Pacific/g" \
-e "s/modules\/gf-client.jar/lib\/gf-client.jar/g" \
-e "s/\${pathsep}\${ri\.modules}\/javax\.jms\.jar/\${pathsep}\${ri\.modules}\/javax\.jms-api\.jar\${pathsep}\$\{ri\.modules}\/javax\.jms\.jar/g" \
-e "s/\${pathsep}\${s1as\.modules}\/javax\.jms\.jar/\${pathsep}\${s1as\.modules}\/javax\.jms-api\.jar\${pathsep}\$\{s1as\.modules}\/javax\.jms\.jar/g" \
-e "s/implementation\.classes\.ri=/implementation\.classes\.ri=\${ri\.modules}\/cdi-api\.jar\${pathsep}\${ri\.modules}\/cdi-api-fragment\.jar\${pathsep}/g" \
-e "s/implementation\.classes=/implementation\.classes=\${s1as\.modules}\/cdi-api\.jar\${pathsep}\${s1as\.modules}\/cdi-api-fragment\.jar\${pathsep}/g" \
-e "s/tyrus-container-grizzly\.jar/tyrus-container-grizzly-client\.jar/g" \
-e "s/javamail\.password=/javamail\.password\=cts1/g" \
ts.jte > ts.jte.new
mv ts.jte.new ts.jte
cd ${TS_HOME}/bin/xml
export ANT_HOME=${TS_HOME}/tools/ant
export PATH=${ANT_HOME}/bin:${PATH}
# SECURITY MANAGER ON
${S1AS_HOME}/bin/asadmin start-domain
${S1AS_HOME}/bin/asadmin create-jvm-options "-Djava.security.manager"
${S1AS_HOME}/bin/asadmin stop-domain
if [[ -n ${1} ]]; then
${TS_HOME}/tools/ant/bin/ant \
-Dgroups.count=5 \
-Dgroup.id=${1} \
-Dgroups.work.dir=/tmp \
-f ${TS_HOME}/bin/xml/impl/glassfish/smoke-groups.xml \
smoke.split.groups
cat /tmp/javaee-smoke-group${1}.properties
${TS_HOME}/tools/ant/bin/ant \
-Dreport.dir=${WORKSPACE}/${BUILD_NUMBER}/JTReport \
-Dwork.dir=${WORKSPACE}/${BUILD_NUMBER}/JTWork \
-propertyfile /tmp/javaee-smoke-group${1}.properties \
-f smoke.xml \
smoke
else
${TS_HOME}/tools/ant/bin/ant \
-Dreport.dir=${WORKSPACE}/${BUILD_NUMBER}/JTReport \
-Dwork.dir=${WORKSPACE}/${BUILD_NUMBER}/JTWork \
-f smoke.xml \
smoke
fi
kill_process
archive_cts
}
archive_servlet_tck(){
cp ${S1AS_HOME}/domains/domain1/logs/server.log* ${WORKSPACE}/results
cp ${WORKSPACE}/tests.log ${WORKSPACE}/results
cp -r ${TS_HOME}/report/ ${WORKSPACE}/results
tar -cvf ${WORKSPACE}/${TEST_ID}-results.tar.gz ${WORKSPACE}/results
}
test_run_servlet_tck(){
export TS_HOME=${WORKSPACE}/servlettck
if [[ -z ${CTS_SMOKE_URL} ]]; then
echo "error: CTS_SMOKE_URL is not set"
exit 1
fi
pwd
uname -a
java -version
rm -rf /tmp/JTreport /tmp/JTwork /disk1/java_re/.javatest || true
wget ${CTS_SMOKE_URL}/servlettck-4.0_Latest.zip -O servlettck.zip
unzip -q servlettck.zip
if [[ -n ${1} ]]; then
TESTDIR=${WORKSPACE}/servlettck/src/com/sun/ts/tests
for i in `ls ${TESTDIR}`
do
if [[ (-d ${TESTDIR}/$i) && ( ${i} != "jsp" && ${i} != "common" && ${i} != "signaturetest") ]]; then
if [[ -z $(grep ${i} `dirname ${0}`/test_dir.properties) ]]; then
echo "A new folder ${i} is added in the test source which has no entry in the properties file"
exit 1
fi
fi
done
fi
cd ${TS_HOME}/bin
cp ts.jte ts.jte.orig
cat ts.jte.orig | ${SED} \
-e "s@webServerHost=@webServerHost=localhost@g" \
-e "s@webServerPort=@webServerPort=8080@g" \
-e "s@securedWebServicePort=@securedWebServicePort=8181@g" \
-e "s@web.home=@web\.home=${S1AS_HOME}@g" \
-e "s@javaee\.home\.ri=@javaee\.home\.ri=${S1AS_HOME}@g" \
-e "s/^orb\.host=/orb\.host=localhost/g" \
-e "s/^mailHost=/mailHost=localhost/g" \
-e "s/^mailuser1=/mailuser1=${USER:-root}@localhost/g" \
-e "s/^mailFrom=.*/mailFrom=${USER:-root}@localhost/g" \
-e "s/orb.host.ri=/orb.host.ri=localhost/g" \
-e "s/^work\.dir=\/files/work\.dir=\/tmp/g" -e "s/^report\.dir=\/files/report\.dir=\/tmp/g" \
-e "s/^tz=.*/tz=US\/Pacific/g" -e "s/modules\/gf-client.jar/lib\/gf-client.jar/g" \
-e "s/\${pathsep}\${ri\.modules}\/javax\.jms\.jar/\${pathsep}\${ri\.modules}\/javax\.jms-api\.jar\${pathsep}\$\{ri\.modules}\/javax\.jms\.jar/g" \
-e "s/\${pathsep}\${s1as\.modules}\/javax\.jms\.jar/\${pathsep}\${s1as\.modules}\/javax\.jms-api\.jar\${pathsep}\$\{s1as\.modules}\/javax\.jms\.jar/g" \
-e "s/implementation\.classes\.ri=/implementation\.classes\.ri=\${ri\.modules}\/cdi-api\.jar\${pathsep}\${ri\.modules}\/cdi-api-fragment\.jar\${pathsep}/g" \
-e "s/implementation\.classes=/implementation\.classes=\${s1as\.modules}\/cdi-api\.jar\${pathsep}\${s1as\.modules}\/cdi-api-fragment\.jar\${pathsep}/g" \
-e "s/implementation\.classes\.ri=/implementation\.classes\.ri=\${ri\.modules}\/tyrus-container-grizzly-client\.jar\${pathsep}/g" \
-e "s/implementation\.classes=/implementation\.classes=\${s1as\.modules}\/tyrus-container-grizzly-client\.jar\${pathsep}/g" \
-e "s/tyrus-container-grizzly\.jar/tyrus-container-grizzly-client\.jar/g" \
-e "s/impl\.vi=/impl\.vi\=glassfish/g" \
> ts.jte
echo "# Disabling signature tests for CI build pipeline" >> ts.jtx
echo "com/sun/ts/tests/signaturetest/servlet/ServletSigTest.java#signatureTest" >> ts.jtx
cd ${S1AS_HOME}
bin/asadmin start-domain
cd ${TS_HOME}/bin
ant config.security
ant deploy.all
if [ -n ${1} ]; then
cd ${TS_HOME}/src/com/sun/ts/tests/${1}
else
cd ${TS_HOME}/src/com/sun/ts/tests/
fi
export JAVA_OPTIONS="-Xbootclasspath/p:${TS_HOME}/lib/flow.jar"
(ant runclient -Dreport.dir=${WORKSPACE}/servlettck/report | tee ${WORKSPACE}/tests.log) || true
cd ${S1AS_HOME}
bin/asadmin stop-domain
kill_process
archive_servlet_tck
}
run_test_id(){
source `dirname $0`/../common_test.sh
kill_process
delete_workspace
unzip_test_resources ${WORKSPACE}/bundles/glassfish.zip
test_init
if [[ ${1} = "cts_smoke_all" ]]; then
test_run_cts_smoke
result=${WORKSPACE}/results/smoke.log
elif [[ ${1} = "cts_smoke_group-"* ]]; then
GROUP_ID=(`echo ${1} | sed 's/cts_smoke_group-//'`)
test_run_cts_smoke ${GROUP_ID}
result=${WORKSPACE}/results/smoke.log
elif [[ ${1} = "servlet_tck_"* ]]; then
TEST_DIR_PROPERTIES=`dirname ${0}`/test_dir.properties
TEST_DIR_PROP_KEY=(`echo ${1} | sed 's/servlet_tck_//'`)
TEST_DIR=(`cat ${TEST_DIR_PROPERTIES} | grep ${TEST_DIR_PROP_KEY} | cut -d'=' -f2`)
test_run_servlet_tck ${TEST_DIR}
result=${WORKSPACE}/results/tests.log
else
echo "Invalid Test ID"
exit 1
fi
cts_to_junit ${result} ${WORKSPACE}/results/junitreports/test_results_junit.xml ${1}
}
post_test_run(){
: # empty block not allowed in Bash
}
list_test_ids(){
echo cts_smoke_all servlet_tck_all servlet_tck_servlet-api-servlet servlet_tck_servlet-api-servlet-http servlet_tck_servlet-compat servlet_tck_servlet-pluggability servlet_tck_servlet-spec cts_smoke_group-1 cts_smoke_group-2 cts_smoke_group-3 cts_smoke_group-4 cts_smoke_group-5
}
cts_to_junit(){
junitCategory=${3}
cd ${WORKSPACE}/results
rm -rf ${2}
cat ${1} | ${GREP} -a "\[javatest.batch\] Finished Test" > results.txt
tail $((`${GREP} -n "Completed running" results.txt | ${AWK} '{print $1}' | cut -d ':' -f1`-`cat results.txt | wc -l`)) results.txt > summary.txt
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" >> ${2}
echo "<testsuites>" >> ${2}
echo " <testsuite>" >> ${2}
for i in `${GREP} "\.\.\.\.\.\.\.\." summary.txt | ${AWK} '{print $4}'`
do
line=`echo ${i} | ${SED} s@"\.\.\.\.\.\.\.\."@" "@g`
status=`echo ${line} | ${AWK} '{print $1}'`
id=`echo ${line} | ${AWK} '{print $2}'`
classname=`echo ${id} | cut -d '#' -f1 | ${SED} s@"\/"@"_"@g | ${SED} s@".java"@@g`
name=`echo ${id} | cut -d '#' -f2`
echo " <testcase classname=\"${junitCategory}.${classname}\" name=\"${name}\">" >> ${2}
if [ "${status}" = "FAILED" ]
then
echo " <failure type=\"CtsFailure\"> n/a </failure>" >> ${2}
fi
echo " </testcase>" >> ${2}
done
echo " </testsuite>" >> ${2}
echo "</testsuites>" >> ${2}
}
delete_workspace(){
printf "\n%s \n\n" "===== DELETE WORKSPACE ====="
rm -rf ${WORKSPACE}/glassfish6 > /dev/null || true
rm -rf ${WORKSPACE}/servlettck > /dev/null || true
rm ${WORKSPACE}/servlettck.zip > /dev/null || true
rm -rf ${WORKSPACE}/javaee-smoke > /dev/null || true
rm ${WORKSPACE}/javaee-smoke-7.0_latest.zip > /dev/null || true
}
OPT=${1}
TEST_ID=${2}
case ${OPT} in
list_test_ids )
list_test_ids;;
run_test_id )
trap post_test_run EXIT
run_test_id ${TEST_ID} ;;
esac