blob: e30de9a05a5cb12f6552c2a8f5d53cd38f7aff88 [file] [log] [blame]
#!/bin/bash -ex
#
# Copyright (c) 2017, 2018 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
#
#u
# Usage: appserv-tests/devtests/web/hudson.sh [-d <url for download glassfish>]
# [-d <directory for storing glassfish.zip>] [ -s <job name for skip file>]
#
# Hudson setup:
#
# Source Code Management: Subversion Modules
# Repository URL: https://svn.java.net/svn/glassfish~svn/trunk/v2/appserv-tests/devtests/web
# Local module directory: appserv-tests/devtests/web
# Repository URL: https://svn.java.net/svn/glassfish~svn/trunk/v2/appserv-tests/lib
# Local module directory: appserv-tests/lib
# Repository URL: https://svn.java.net/svn/glassfish~svn/trunk/v2/appserv-tests/config
# Local module directory: appserv-tests/config
# Repository URL: https://svn.java.net/svn/glassfish~svn/trunk/v2/appserv-tests/util
# Local module directory: appserv-tests/util
#
# Build after other projects are build: mirror-glassfish-repository
#
# The following TCP ports are assigned by Hudson to avoid collision
# WEBTIER_ADMIN_PORT
# WEBTIER_JMS_PORT
# WEBTIER_JMX_PORT
# WEBTIER_ORB_PORT
# WEBTIER_HTTP_PORT
# WEBTIER_HTTPS_PORT
# WEBTIER_ALTERNATE_PORT
# WEBTIER_ORB_SSL_PORT
# WEBTIER_ORB_SSL_MUTUALAUTH_PORT
# WEBTIER_INSTANCE_PORT
# WEBTIER_INSTANCE_PORT_2
# WEBTIER_INSTANCE_PORT_3
# WEBTIER_INSTANCE_HTTPS_PORT
#
# If the script is used locally, WORKSPACE need to be defined as the parent of appserv-tests.
# And GlassFish will be installed in $WORKSPACE.
#
# Record finderprints of files to track usage: glassfish-v3-image/glassfish.zip
# Fingerprint all archived artifacts
#
# Archive the artifacts: appserv-tests/test_results*.*,glassfish-v3-image/glassfish5/glassfish/domains/domain1/logs/*
#
# Publish SQE test result report
# SQE report XMLs: appserv-tests/test_resultsValid.xml
#
# E-mail Notification
# Recipients: <....>@oracle.com
# Send e-mail for every unstable build
kill_processes() {
uname=`uname | awk '{print $1}'`
case "$uname" in
CYGWIN*) KILL="taskkill /F /T /PID";;
*) KILL="kill -9";;
esac
(ps -aef | grep java | grep ASMain | grep -v grep | awk '{print $2}' | xargs $KILL > /dev/null 2>&1) || true
(jps | grep Main | grep -v grep | awk '{print $1}' | xargs $KILL > /dev/null 2>&1) || true
(ps -aef | grep derby | grep -v grep | awk '{print $2}' | xargs $KILL > /dev/null 2>&1) || true
}
is_target(){
case "$1" in
"jsp" | \
"taglib" | \
"el" | \
"servlet" | \
"web-container" | \
"security" | \
"http-connector" | \
"comet" | \
"misc" | \
"weblogicDD" | \
"clustering" | \
"ha" | \
"embedded-all" | \
"group-1" | \
"all") echo 1;;
*) echo 0;;
esac
}
get_test_target(){
case $1 in
web_all )
TARGET=all
export TARGET;;
group-1 )
TARGET="init taglib el security http-connector comet misc clustering ha finish-report"
export TARGET;;
* )
TARGET="init $1 finish-report"
export TARGET;;
esac
}
test_run(){
export WEBTIER_ADMIN_PORT=45707
export WEBTIER_JMS_PORT=45708
export WEBTIER_JMX_PORT=45709
export WEBTIER_ORB_PORT=45710
export WEBTIER_HTTP_PORT=45711
export WEBTIER_HTTPS_PORT=45712
export WEBTIER_ALTERNATE_PORT=45713
export WEBTIER_ORB_SSL_PORT=45714
export WEBTIER_ORB_SSL_MUTUALAUTH_PORT=45715
export WEBTIER_INSTANCE_PORT=45716
export WEBTIER_INSTANCE_PORT_2=45717
export WEBTIER_INSTANCE_PORT_3=45718
export WEBTIER_INSTANCE_HTTPS_PORT=45719
while getopts u:s:d:t: flag; do
case $flag in
u)
download=1;
if [ "x$OPTARG" != "x" ]; then
GLASSFISH_DOWNLOAD_URL=$OPTARG;
fi
;;
s)
SKIP_NAME=$OPTARG;
;;
d)
DOWNLOAD_DIR=$OPTARG
;;
t)
TARGET=$OPTARG
if [ `is_target $TARGET` -eq 0 ] ; then
echo "Unknown target"
exit
elif [ "$TARGET" != "all" ] ; then
TARGET="$TARGET finish-report"
fi
;;
\?)
echo "Illegal options"
exit
;;
esac
done
shift $(( OPTIND - 1 ));
if [ "x$download" = "x1" ]; then
cd $DOWNLOAD_DIR
curl -O glassfish.zip $GLASSFISH_DOWNLOAD_URL
fi
export AS_LOGFILE=$S1AS_HOME/cli.log
#export AS_DEBUG=true
#Copy over the modified run.xml for dumping thread stack
#cp ../../run.xml $PWD/appserv-tests/config
rm -rf $S1AS_HOME/domains/domain1
cd $APS_HOME
echo "AS_ADMIN_PASSWORD=" > temppwd
$S1AS_HOME/bin/asadmin --user admin --passwordfile $APS_HOME/config/adminpassword.txt create-domain --adminport ${WEBTIER_ADMIN_PORT} --domainproperties jms.port=${WEBTIER_JMS_PORT}:domain.jmxPort=${WEBTIER_JMX_PORT}:orb.listener.port=${WEBTIER_ORB_PORT}:http.ssl.port=${WEBTIER_HTTPS_PORT}:orb.ssl.port=${WEBTIER_ORB_SSL_PORT}:orb.mutualauth.port=${WEBTIER_ORB_SSL_MUTUALAUTH_PORT} --instanceport ${WEBTIER_HTTP_PORT} domain1
if [ `uname | grep -n 'Linux' | wc -l` -eq 1 ] ; then
HOST="localhost.localdomain"
else
HOST="localhost"
fi
#Create
echo "admin.domain=domain1
admin.domain.dir=\${env.S1AS_HOME}/domains
admin.port=${WEBTIER_ADMIN_PORT}
admin.user=admin
admin.host=$HOST
http.port=${WEBTIER_HTTP_PORT}
https.port=${WEBTIER_HTTPS_PORT}
http.host=$HOST
http.address=127.0.0.1
http.alternate.port=${WEBTIER_ALTERNATE_PORT}
orb.port=${WEBTIER_ORB_PORT}
admin.password=
ssl.password=changeit
master.password=changeit
admin.password.file=\${env.APS_HOME}/config/adminpassword.txt
appserver.instance.name=server
config.dottedname.prefix=server
resources.dottedname.prefix=domain.resources
results.mailhost=$HOST
results.mailer=QLTestsForPEInstallOrDASInEEInstall@sun.com
results.mailee=yourname@sun.com
autodeploy.dir=\${env.S1AS_HOME}/domains/\${admin.domain}/autodeploy
precompilejsp=true
jvm.maxpermsize=192m
ENABLE_REPLICATION=false
appserver.instance.dir=\${admin.domain.dir}/\${admin.domain}
cluster.name=clusterA
instance.name=inst1
instance.name.2=inst2
instance.name.3=inst3
instance.http.port=${WEBTIER_INSTANCE_PORT}
instance.https.port=${WEBTIER_INSTANCE_HTTPS_PORT}
instance.http.port.2=${WEBTIER_INSTANCE_PORT_2}
instance.http.port.3=${WEBTIER_INSTANCE_PORT_3}
nodeagent.name=localhost-domain1
" > config.properties
kill_processes
cd $APS_HOME/devtests/web
cp build.xml build.xml.orig
./exclude-jobs.sh $SKIP_NAME
ant $TARGET |tee $TEST_RUN_LOG
#restore original build.xml
mv build.xml.orig build.xml
kill_processes
(cat web.output | grep FAIL | grep -v "Total FAIL") || true
}
run_test_id(){
source `dirname $0`/../../../common_test.sh
kill_process
delete_gf
download_test_resources glassfish.zip version-info.txt
unzip_test_resources $WORKSPACE/bundles/glassfish.zip
cd `dirname $0`
test_init
TARGET_FROM_INPUT=(`echo $1 | sed 's/web_//'`)
get_test_target $TARGET_FROM_INPUT
test_run -s webtier-dev-tests
check_successful_run
generate_junit_report $TARGET_FROM_INPUT
change_junit_report_class_names
}
list_test_ids(){
echo web_all web_jsp web_servlet web_web-container web_group-1
}
post_test_run(){
copy_test_artifects
upload_test_results
delete_bundle
cd -
}
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