mirror of
https://github.com/berkeleydb/je.git
synced 2024-11-15 01:46:24 +00:00
180 lines
6.1 KiB
Bash
180 lines
6.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# The arguments that are passed by Jenkins system
|
||
|
TEST_ARG=""
|
||
|
JDK_VERSION="8"
|
||
|
TASK_NAME=""
|
||
|
LOG_LEVEL=""
|
||
|
BRANCH="default"
|
||
|
JEREPO=""
|
||
|
JEREVISION=0
|
||
|
JEREVISIONARG=""
|
||
|
HGPATH=""
|
||
|
|
||
|
# Jenkins VM and Test VM
|
||
|
JENKINSVMIP="slc04ark"
|
||
|
JENKINSVMUSERNAME="jenkins"
|
||
|
JENKINSVM="${JENKINSVMUSERNAME}@${JENKINSVMIP}"
|
||
|
TESTVM=`hostname -s`
|
||
|
TESTVMUSERNAME="tests"
|
||
|
TESTVMUSERPASSWORD="123456"
|
||
|
|
||
|
# The user name used to get the je repository
|
||
|
JEREPUSER="adqian"
|
||
|
|
||
|
# Some basic direcotory/path/filename
|
||
|
BASEDIR="/scratch/tests"
|
||
|
JENKINSBASEDIR="/scratch/jenkins/jobs"
|
||
|
JENKINSBINDIR="/scratch/jenkins/bin"
|
||
|
CLOVERDIR="clover_for_je"
|
||
|
CHANGESETFILE="jenkins_changeset.txt"
|
||
|
ENVINFOFILE="location_of_environment_and_log.txt"
|
||
|
|
||
|
while getopts "O:j:t:R:b:r:l:h:" OPTION
|
||
|
do
|
||
|
case $OPTION in
|
||
|
O)
|
||
|
TEST_ARG=$OPTARG
|
||
|
;;
|
||
|
j)
|
||
|
JDK_VERSION=$OPTARG
|
||
|
;;
|
||
|
t)
|
||
|
TASK_NAME=$OPTARG
|
||
|
;;
|
||
|
R)
|
||
|
JEREPO=$OPTARG
|
||
|
;;
|
||
|
b)
|
||
|
BRANCH=$OPTARG
|
||
|
;;
|
||
|
r)
|
||
|
JEREVISION=$OPTARG
|
||
|
;;
|
||
|
l)
|
||
|
LOG_LEVEL=$OPTARG
|
||
|
;;
|
||
|
h)
|
||
|
HGPATH=$OPTARG
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
if [ "${JEREPO}" == "" ]; then
|
||
|
echo "JE repository must be specified"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ "${JEREVISION}" != "0" ]; then
|
||
|
JEREVISIONARG=" -u ${JEREVISION}"
|
||
|
fi
|
||
|
|
||
|
if [ "${HGPATH}" != "" ]; then
|
||
|
HGPATH="${HGPATH}/"
|
||
|
fi
|
||
|
|
||
|
echo "Task name: $TASK_NAME"
|
||
|
echo "Test args: $TEST_ARG"
|
||
|
echo "JE repo: ssh://${JEREPUSER}@${JEREPO}"
|
||
|
echo "JE branch: $BRANCH"
|
||
|
echo "JE revision(0 means the top): $JEREVISION"
|
||
|
|
||
|
# hg clone je
|
||
|
rm -rf ${BASEDIR}/${TASK_NAME} && mkdir -p ${BASEDIR}/${TASK_NAME}
|
||
|
echo "hg clone -b ${BRANCH} ${JEREVISIONARG} ssh://${JEREPUSER}@${JEREPO}"
|
||
|
cd ${BASEDIR}/${TASK_NAME} && ${HGPATH}hg clone -b ${BRANCH} ${JEREVISIONARG} ssh://${JEREPUSER}@${JEREPO} ./je
|
||
|
cd je && ${HGPATH}hg log -l 1 -v > ./${CHANGESETFILE} && cd ..
|
||
|
BUILD_VER=`cd ${BASEDIR}/${TASK_NAME}/je && ${HGPATH}hg parent`
|
||
|
|
||
|
if [ X$JDK_VERSION == X"8" ] ; then
|
||
|
export JAVA_HOME=${BASEDIR}/app/Java_8
|
||
|
elif [ X$JDK_VERSION == X"7" ] ; then
|
||
|
export JAVA_HOME=${BASEDIR}/app/Java_7
|
||
|
elif [ X$JDK_VERSION == X"6" ] ; then
|
||
|
export JAVA_HOME=${BASEDIR}/app/Java_6
|
||
|
elif [ X$JDK_VERSION == X"AIX" ] ; then
|
||
|
export JAVA_HOME=${BASEDIR}/app/ibm-java-ppc64-80
|
||
|
else
|
||
|
export JAVA_HOME=${BASEDIR}/app/Java_5
|
||
|
fi
|
||
|
|
||
|
export ANT_HOME=${BASEDIR}/app/ant
|
||
|
export PATH=$ANT_HOME/bin:$JAVA_HOME/bin:$PATH
|
||
|
export CLASSPATH=${BASEDIR}/app/ant/lib/junit-4.10.jar:$CLASSPATH
|
||
|
|
||
|
ROOT_DIR=${BASEDIR}/${TASK_NAME}
|
||
|
|
||
|
ANT_VERN=`ant -version`
|
||
|
|
||
|
echo " "
|
||
|
echo "========================================================="
|
||
|
echo " "
|
||
|
java -version
|
||
|
ant -version
|
||
|
echo "JAVA_HOME=$JAVA_HOME "
|
||
|
echo "ANT_HOME=$ANT_HOME "
|
||
|
echo "Code branch: $BRANCH $BUILD_VER "
|
||
|
echo " "
|
||
|
echo "========================================================="
|
||
|
echo " "
|
||
|
|
||
|
if [ X$LOG_LEVEL == X"INFO" ] ; then
|
||
|
echo "com.sleepycat.je.util.ConsoleHandler.level=INFO" > ${ROOT_DIR}/je/logging.properties
|
||
|
fi
|
||
|
|
||
|
# In previous method,we will use a diff file to change the interanl.xml
|
||
|
# and build.xml to be suitable for je cover test. But this method has a
|
||
|
# disadvantage, i.e. every time we change this two files, we need to
|
||
|
# generate the new diff file, other the diff file can not apply for the
|
||
|
# new je version. The diff file generation is very complicate.
|
||
|
# scp ${JENKINSVM}:~/bin/je_cover.diff ${ROOT_DIR}/je/
|
||
|
# cd ${ROOT_DIR}/je && ${HGPATH}hg import --no-commit ./je_cover.diff
|
||
|
# In current method, we know which place need to be modified.
|
||
|
# So we directly substitute these places.
|
||
|
scp ${JENKINSVM}:${JENKINSBINDIR}/${CLOVERDIR}/clover*.* ${BASEDIR}/app/ant/lib
|
||
|
cd ${ROOT_DIR}/je
|
||
|
sed -i 's/inheritall=\"false\"/inheritall=\"true\"/g' ./ant/internal.xml
|
||
|
sed -i 's/name=\"clover.tmpdir\" value=\"${builddir}\/tmp\"/name=\"clover.tmpdir\" value=\"${builddir}\/clover_tmp\"/g' ./build.xml
|
||
|
sed -i 's/name=\"clover.libdir\" value=\"\/clover\/lib\"/name=\"clover.libdir\" value=\"\/scratch\/tests\/app\/ant\/lib\"/g' ./build.xml
|
||
|
sed -i 's/inheritall=\"false\"/inheritall=\"true\"/g' ./build.xml
|
||
|
sed -i 's/format=\"frames\"/format=\"noframes\"/g' ./build.xml
|
||
|
sed -i 's/resource=\"clovertasks\"/resource=\"cloverlib.xml\" classpathref=\"clover.classpath\"/g' ./build.xml
|
||
|
|
||
|
ant -lib junit-4.10.jar clean clover.alltestsdone -Dclover.ignorefailure=true
|
||
|
|
||
|
|
||
|
# Back up the result of this time test run
|
||
|
BUILDID=`ssh -l ${JENKINSVMUSERNAME} ${JENKINSVMIP} "cat ${JENKINSBASEDIR}/${TASK_NAME}/nextBuildNumber"`
|
||
|
BUILDID=`expr $BUILDID - 1`
|
||
|
|
||
|
LOGLOCATION=${BASEDIR}/log_archive/${TASK_NAME}/$BUILDID
|
||
|
mkdir -p $LOGLOCATION
|
||
|
cd $LOGLOCATION
|
||
|
cp -r ${ROOT_DIR}/je $LOGLOCATION
|
||
|
|
||
|
# Generate the test environment information
|
||
|
echo "Host: ${TESTVM}.us.oracle.com" >> ${ROOT_DIR}/je/${ENVINFOFILE}
|
||
|
echo "Directory: `pwd`" >> ${ROOT_DIR}/je/${ENVINFOFILE}
|
||
|
echo "Username: ${TESTVMUSERNAME}" >> ${ROOT_DIR}/je/${ENVINFOFILE}
|
||
|
echo "Password: ${TESTVMUSERPASSWORD}" >> ${ROOT_DIR}/je/${ENVINFOFILE}
|
||
|
|
||
|
ssh -l ${JENKINSVMUSERNAME} ${JENKINSVMIP} "rm -rf ${JENKINSBASEDIR}/${TASK_NAME}/workspace/*"
|
||
|
cd ${ROOT_DIR}/je && scp ./${CHANGESETFILE} ./${ENVINFOFILE} cloverage.xml ${JENKINSVM}:${JENKINSBASEDIR}/${TASK_NAME}/workspace/
|
||
|
cd ${ROOT_DIR}/je && scp -r clover_html build/test/data/ ${JENKINSVM}:${JENKINSBASEDIR}/${TASK_NAME}/workspace/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clean $TEST_ARG1
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar init-clover $TEST_ARG1
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clean-clover $TEST_ARG1
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clover.setup $TEST_ARG1
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clover.runtest
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clean clover.singletestdone -Dtestcase=com.sleepycat.persist.test.EvolveProxyClassTest
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clover.alltestsrun $TEST_ARG1
|
||
|
#cd ${ROOT_DIR}/je && ant -lib junit-4.10.jar clover.alltestsdone $TEST_ARG1
|
||
|
|
||
|
# log files
|
||
|
#cd ${ROOT_DIR}/je && tar czf ${TASK_NAME}.tar.gz ./build ./build.xml ./jenkins_changeset.txt ./cloverage.xml ./clover_html
|
||
|
#cd ${ROOT_DIR}/je && scp ${TASK_NAME}.tar.gz jenkins@slc04ark:~/jobs/${TASK_NAME}/workspace/
|