364 lines
8.5 KiB
Bash
Executable File
364 lines
8.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# BEGIN_HEADER - DO NOT EDIT
|
|
#
|
|
# The contents of this file are subject to the terms
|
|
# of the Common Development and Distribution License
|
|
# (the "License"). You may not use this file except
|
|
# in compliance with the License.
|
|
#
|
|
# You can obtain a copy of the license at
|
|
# https://open-esb.dev.java.net/public/CDDLv1.0.html.
|
|
# See the License for the specific language governing
|
|
# permissions and limitations under the License.
|
|
#
|
|
# When distributing Covered Code, include this CDDL
|
|
# HEADER in each file and include the License file at
|
|
# https://open-esb.dev.java.net/public/CDDLv1.0.html.
|
|
# If applicable add the following below this CDDL HEADER,
|
|
# with the fields enclosed by brackets "[]" replaced with
|
|
# your own identifying information: Portions Copyright
|
|
# [year] [name of copyright owner]
|
|
#
|
|
|
|
#
|
|
# @(#)integreport.sh - ver 1.1 - 01/04/2006
|
|
#
|
|
# Copyright 2004-2006 Sun Microsystems, Inc. All Rights Reserved.
|
|
#
|
|
# END_HEADER - DO NOT EDIT
|
|
#
|
|
|
|
#
|
|
# integrationReport - retrieve integration data over update interval for named
|
|
# repository.
|
|
#
|
|
# 02-Aug-2002 (russt)
|
|
# Initial revision
|
|
|
|
################################ USAGE ROUTINES ################################
|
|
|
|
usage()
|
|
{
|
|
status=$1
|
|
|
|
cat << EOF
|
|
Usage: $p [-help] [-tools] [-o outfile] [to_gmt]
|
|
|
|
SYNOPSIS
|
|
Retrieve integration data over update interval for named repository.
|
|
output is generated in comma separated format. If the <to_gmt> is given,
|
|
then the report is generated for updates from the last update time
|
|
to the time given, which must be GMT in the form: yyyymmddhhmmss.
|
|
|
|
|
|
OPTIONS
|
|
-help Display this message.
|
|
-tools generate report for tools repository instead of product repository.
|
|
|
|
ENVIRONMENT:
|
|
|
|
\$BLDPARMS Build parameter file for this build. (set by wrapper).
|
|
\$LASTBLDPARMS Build parameter file for last build. (set by wrapper).
|
|
|
|
EOF
|
|
|
|
exit $status
|
|
|
|
}
|
|
|
|
parse_args()
|
|
{
|
|
DOTOOLS=0
|
|
DOOUTPUT=0
|
|
OUTPUTFILE=""
|
|
CALLEDFROMWRAPPER=0
|
|
|
|
while [ $# -gt 0 ]
|
|
do
|
|
arg=$1; shift
|
|
|
|
case $arg in
|
|
-h* )
|
|
usage 0
|
|
;;
|
|
-tools )
|
|
DOTOOLS=1
|
|
;;
|
|
-o )
|
|
DOOUTPUT=1
|
|
if [ $# -gt 0 ]; then
|
|
OUTPUTFILE=$1; shift
|
|
else
|
|
echo "${p}: -o requires the name of an output file."
|
|
usage 1
|
|
fi
|
|
;;
|
|
-calledFromWrapper )
|
|
#true if called from runjbiBuild wrapper:
|
|
CALLEDFROMWRAPPER=1
|
|
;;
|
|
-* )
|
|
echo "${p}: WARNING unknown option, $arg - ignored."
|
|
;;
|
|
* )
|
|
ENDTIME=$arg
|
|
;;
|
|
esac
|
|
done
|
|
|
|
#echo ENDTIME is $ENDTIME
|
|
|
|
}
|
|
|
|
################################ INITIALIZATION ################################
|
|
|
|
check_environment()
|
|
{
|
|
localvarerrs=0
|
|
|
|
if [ "$LASTBLDPARMS" = "" ]; then
|
|
bldmsg -error -p $p LASTBLDPARMS not set.
|
|
localvarerrs=1
|
|
fi
|
|
|
|
if [ "$PRODUCT" = "" ]; then
|
|
bldmsg -error -p $p PRODUCT not set.
|
|
localvarerrs=1
|
|
fi
|
|
|
|
if [ "$CVS_BRANCH_NAME" = "" ]; then
|
|
bldmsg -error -p $p CVS_BRANCH_NAME not set.
|
|
localvarerrs=1
|
|
fi
|
|
|
|
if [ $localvarerrs -ne 0 ]; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
################################# HOUSEKEEPING #################################
|
|
|
|
cleanup()
|
|
{
|
|
rm -f /tmp/${p}*.$$
|
|
}
|
|
|
|
rec_signal()
|
|
{
|
|
cleanup
|
|
bldmsg -error -p $p Interrupted
|
|
exit 2
|
|
}
|
|
|
|
################################### INTERNAL ###################################
|
|
|
|
gen_integration_query()
|
|
#routine to generate an ant script to query for integrations
|
|
{
|
|
|
|
#select max(f.transtime)
|
|
|
|
cat << 'EOF' > $1
|
|
<project name="infquery" default="runquery">
|
|
|
|
<target name="runquery" depends="init">
|
|
|
|
<sql
|
|
driver="${inf_jdbc_driver}"
|
|
url="${inf_jdbc_url}"
|
|
userid="${inf_jdbc_userid}"
|
|
password="${inf_jdbc_password}"
|
|
print="true"
|
|
showheaders="false"
|
|
output="${integration_report}"
|
|
><![CDATA[
|
|
|
|
select
|
|
n.noticeId,
|
|
u.name,
|
|
u.emailAddr,
|
|
r.repos,
|
|
b.name,
|
|
f.transtime,
|
|
f.old_rev,
|
|
f.new_rev,
|
|
f.opt_type,
|
|
f.cvstype,
|
|
f.cvsdir,
|
|
f.cvsfile,
|
|
n.Subject
|
|
from cvs_filelist f, cvs_repos r, branch b, notice n, user_profile u
|
|
where r.reposId = f.reposId
|
|
and r.repos = '${repos}'
|
|
and b.branchId = n.branchId
|
|
and f.noticeId = n.noticeId
|
|
and u.userId = n.userId
|
|
and b.Name = '${branch}'
|
|
and f.transtime >= '${gmt_begtime}'
|
|
and f.transtime <= '${gmt_endtime}'
|
|
;
|
|
]]>
|
|
|
|
</sql>
|
|
|
|
<!--
|
|
<echo message="output is in ${integration_report}" />
|
|
-->
|
|
|
|
</target>
|
|
|
|
<target name="init">
|
|
<!--
|
|
# you must override these properties on the command line
|
|
-->
|
|
<property name="integration_report" value="integrations.txt" />
|
|
<property name="gmt_begtime" value="20030618080000" />
|
|
<property name="gmt_endtime" value="20030618080000" />
|
|
<!-- this is the INF scm value: -->
|
|
<property name="repos" value="/java.net/cvs/open-jbi-components" />
|
|
<property name="branch" value="ojc{trunk}" />
|
|
|
|
<!--
|
|
# read in build database connection properties:
|
|
# inf_jdbc_driver
|
|
# inf_jdbc_url
|
|
# inf_jdbc_userid
|
|
# inf_jdbc_password
|
|
-->
|
|
<property environment="env"/>
|
|
<property name="srcroot" value="${env.JV_SRCROOT}" />
|
|
<property file="${srcroot}/.build_db_properties"/>
|
|
</target>
|
|
|
|
</project>
|
|
EOF
|
|
|
|
return $?
|
|
}
|
|
|
|
##################################### MAIN #####################################
|
|
|
|
p=`basename $0`
|
|
|
|
parse_args "$@"
|
|
|
|
tmpA=/tmp/${p}_A.$$
|
|
tmpB=/tmp/${p}_B.$$
|
|
tmpC=/tmp/${p}_C.$$
|
|
|
|
queryscript="$tmpB"
|
|
errfile="$tmpC"
|
|
|
|
#trap interrupts until initial start message.
|
|
trap rec_signal 2 15
|
|
|
|
check_environment
|
|
if [ $? -ne 0 ]; then
|
|
bldmsg -error -p $p "One or more required environment variables are not set - ABORT."
|
|
exit 3
|
|
fi
|
|
|
|
if [ "$CVS_BRANCH_NAME" = "main" ]; then
|
|
branchname="trunk"
|
|
else
|
|
branchname="$CVS_BRANCH_NAME"
|
|
fi
|
|
|
|
PRODUCT_REPOS="/java.net/cvs/open-jbi-components"
|
|
TOOLS_REPOS=iis/devtools
|
|
|
|
if [ $DOTOOLS -eq 1 ]; then
|
|
theRepos="`basename $TOOLS_REPOS`"
|
|
inf_repos="$TOOLS_REPOS"
|
|
inf_branch="$theRepos{$branchname}"
|
|
else
|
|
inf_repos="$PRODUCT_REPOS"
|
|
inf_branch="ojc{trunk}"
|
|
|
|
#this is used to get the update time:
|
|
if [ $PRODUCT_REPOS = "/java.net/cvs/open-jbi-components" ]; then
|
|
theRepos="jbi"
|
|
fi
|
|
fi
|
|
|
|
#NOTE: shprops returns a var=value pair, which is why the eval.
|
|
if [ "$ENDTIME" = "" ]; then
|
|
#get the current update time in GMT:
|
|
eval `shprops -get $BLDPARMS ${theRepos}_last_update`
|
|
if [ $? -ne 0 ]; then
|
|
bldmsg -error -p $p "problem retrieving repository update times from $LASTBLDPARMS"
|
|
cleanup
|
|
exit 1
|
|
else
|
|
#success - copy the update time into local var:
|
|
#NOTE: this is done in two steps to avoid bug in redhat bash 2.05.
|
|
cmd="echo \$${theRepos}_last_update"
|
|
ENDTIME=`eval $cmd`
|
|
fi
|
|
fi
|
|
|
|
#get last previous build's update times:
|
|
eval `shprops -get $LASTBLDPARMS ${theRepos}_last_update`
|
|
if [ $? -ne 0 ]; then
|
|
bldmsg -warn -p $p "problem retrieving repository update times from $LASTBLDPARMS"
|
|
bldmsg -warn -p $p "Assuming this is the first build."
|
|
BEGTIME=$ENDTIME
|
|
else
|
|
#success - copy the update time into local var.
|
|
#NOTE: this is done in two steps to avoid bug in redhat bash 2.05.
|
|
cmd="echo \$${theRepos}_last_update"
|
|
BEGTIME=`eval $cmd`
|
|
fi
|
|
|
|
#########
|
|
#GENERATE query:
|
|
#########
|
|
|
|
gen_integration_query $queryscript
|
|
if [ $? -ne 0 ]; then
|
|
bldmsg -error -p $p cannot generate query script
|
|
exit 1
|
|
fi
|
|
|
|
####
|
|
#RUN query:
|
|
####
|
|
|
|
cmd="ant -quiet -Dintegration_report=$tmpA -Dgmt_begtime=$BEGTIME -Dgmt_endtime=$ENDTIME -Drepos=$inf_repos -Dbranch=$inf_branch -f $queryscript"
|
|
bldmsg -mark -p $p Running $cmd
|
|
eval $cmd > $errfile 2>&1
|
|
status=$?
|
|
|
|
#######
|
|
#FORMAT query results:
|
|
#######
|
|
|
|
if [ $status -eq 0 ]; then
|
|
if [ $DOOUTPUT -eq 1 ]; then
|
|
rm -f $OUTPUTFILE
|
|
grep -v '^$' $tmpA > $OUTPUTFILE
|
|
status=$?
|
|
if [ $? -ne 0 ]; then
|
|
bldmsg -p $p -error -status $status could not create output file $OUTPUTFILE
|
|
exit 1
|
|
fi
|
|
echo Report for repository $inf_repos, branch $inf_branch from $BEGTIME to $ENDTIME saved to $OUTPUTFILE
|
|
else
|
|
#if output file not specified, then it goes to stdout:
|
|
echo Report for repository $inf_repos, branch $inf_branch from $BEGTIME to $ENDTIME
|
|
cat $tmpA
|
|
fi
|
|
else
|
|
bldmsg -p $p -error -status $status ant sql query failed for repos $inf_repos
|
|
cat $errfile
|
|
cleanup
|
|
exit 2
|
|
fi
|
|
|
|
cleanup
|
|
|
|
exit 0
|