1*b1cdbd2cSJim Jagielski#!/bin/ksh
2*b1cdbd2cSJim Jagielski#**************************************************************
3*b1cdbd2cSJim Jagielski#
4*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
5*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
6*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
7*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
8*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
9*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
10*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
11*b1cdbd2cSJim Jagielski#
12*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
13*b1cdbd2cSJim Jagielski#
14*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
15*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
16*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
18*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
19*b1cdbd2cSJim Jagielski#  under the License.
20*b1cdbd2cSJim Jagielski#
21*b1cdbd2cSJim Jagielski#**************************************************************
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#set -x
24*b1cdbd2cSJim Jagielskiumask 0
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielskiinteger TOTAL_PASS=0
27*b1cdbd2cSJim Jagielskiinteger TOTAL_FAIL=0
28*b1cdbd2cSJim Jagielskiinteger TOTAL_RUN=0
29*b1cdbd2cSJim Jagielskiinteger MAX_RETRIES=5
30*b1cdbd2cSJim Jagielskitypeset RUNNAME=`date +%Y%m%d%H%M%S`
31*b1cdbd2cSJim Jagielskitypeset PRINTDATE=`date`
32*b1cdbd2cSJim Jagielskitypeset PDB_INFILE_DIR
33*b1cdbd2cSJim Jagielskitypeset PDB_OUTFILE_DIR
34*b1cdbd2cSJim Jagielskitypeset XML_OUTFILE_DIR
35*b1cdbd2cSJim Jagielskitypeset REPORT
36*b1cdbd2cSJim Jagielskitypeset RESDIR
37*b1cdbd2cSJim Jagielskitypeset LOGFILE
38*b1cdbd2cSJim Jagielskitypeset COMPLOG
39*b1cdbd2cSJim Jagielskitypeset TEST_COMMENTS
40*b1cdbd2cSJim Jagielskitypeset BGCOLOR
41*b1cdbd2cSJim Jagielskitypeset ODD_BGCOLOR='#BBBBBB'
42*b1cdbd2cSJim Jagielskitypeset EVEN_BGCOLOR='#DCDCDC'
43*b1cdbd2cSJim Jagielskitypeset PASS_COLOR='#00ff00'
44*b1cdbd2cSJim Jagielskitypeset FAIL_COLOR='#ff4040'
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielskitypeset ENVFILE=""
47*b1cdbd2cSJim Jagielski# The following variables should be set in the env file
48*b1cdbd2cSJim Jagielskitypeset MASTERLIST=""
49*b1cdbd2cSJim Jagielskitypeset TESTCASEDIR=""
50*b1cdbd2cSJim Jagielskitypeset RESULTSBASE=""
51*b1cdbd2cSJim Jagielskitypeset XMERGE_JAR=""
52*b1cdbd2cSJim Jagielskitypeset APORTIS_JAR=""
53*b1cdbd2cSJim Jagielskitypeset WORDSMITH_JAR=""
54*b1cdbd2cSJim Jagielskitypeset MINICALC_JAR=""
55*b1cdbd2cSJim Jagielskitypeset PERL5LIB=""
56*b1cdbd2cSJim Jagielskitypeset POSE_EXE=""
57*b1cdbd2cSJim Jagielskitypeset POSE_PRC=""
58*b1cdbd2cSJim Jagielskitypeset TEST_DRIVER_PL=""
59*b1cdbd2cSJim Jagielskitypeset COMPARATOR_PL=""
60*b1cdbd2cSJim Jagielskitypeset COMPLIST=""
61*b1cdbd2cSJim Jagielskitypeset XML_INFILE_DIR=""
62*b1cdbd2cSJim Jagielskitypeset PDB_BASELINE_DIR=""
63*b1cdbd2cSJim Jagielskitypeset XML_BASELINE_DIR=""
64*b1cdbd2cSJim Jagielskitypeset EM_SCRIPT_HOME=""
65*b1cdbd2cSJim Jagielskitypeset QAWRAPPER_SCRIPT_HOME=""
66*b1cdbd2cSJim Jagielskitypeset EM_ROM_FILE=""
67*b1cdbd2cSJim Jagielskitypeset EM_SESSION_FILE=""
68*b1cdbd2cSJim Jagielskitypeset QA_LIB_HOME=""
69*b1cdbd2cSJim Jagielskitypeset QA_COMPARATOR_HOME=""
70*b1cdbd2cSJim Jagielskitypeset CLASSES_DIR=""
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski################################################################################
75*b1cdbd2cSJim JagielskiUsage() {
76*b1cdbd2cSJim Jagielski	echo "Usage: run-convtest -env <ENVFILE> [-name RUNNAME]"
77*b1cdbd2cSJim Jagielski	exit 1
78*b1cdbd2cSJim Jagielski}
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski################################################################################
82*b1cdbd2cSJim JagielskiStartReportFile() {
83*b1cdbd2cSJim Jagielski	typeset line=`date`
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski	ReportLine "<HTML>"
86*b1cdbd2cSJim Jagielski	ReportLine "<HEAD>"
87*b1cdbd2cSJim Jagielski	ReportLine "<TITLE>XMerge Converters Test Results - ${RUNNAME}</TITLE>"
88*b1cdbd2cSJim Jagielski	ReportLine "</HEAD>"
89*b1cdbd2cSJim Jagielski	ReportLine "<BODY BGCOLOR=#ffffff>"
90*b1cdbd2cSJim Jagielski	ReportLine "<H1 align=center>XMerge Converters Test Results - ${RUNNAME}</H1>"
91*b1cdbd2cSJim Jagielski	ReportLine "<P>"
92*b1cdbd2cSJim Jagielski	ReportLine "Test run on: ${PRINTDATE}"
93*b1cdbd2cSJim Jagielski	ReportLine "<P>"
94*b1cdbd2cSJim Jagielski	ReportLine "<CENTER>"
95*b1cdbd2cSJim Jagielski	ReportLine "<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=2>"
96*b1cdbd2cSJim Jagielski	ReportLine "<TR BGCOLOR='#9999CC'>"
97*b1cdbd2cSJim Jagielski	ReportLine "<TH>Test Name</TH>"
98*b1cdbd2cSJim Jagielski	ReportLine "<TH>Test File</TH>"
99*b1cdbd2cSJim Jagielski	ReportLine "<TH>.ext</TH>"
100*b1cdbd2cSJim Jagielski	ReportLine "<TH>Result</TH>"
101*b1cdbd2cSJim Jagielski	ReportLine "<TH>Comments</TH>"
102*b1cdbd2cSJim Jagielski	ReportLine "</TR>"
103*b1cdbd2cSJim Jagielski}
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski################################################################################
107*b1cdbd2cSJim JagielskiEndReportFile() {
108*b1cdbd2cSJim Jagielski	# remove full path from LOGFILE (link will be to current dir)
109*b1cdbd2cSJim Jagielski	typeset loglink=${LOGFILE##*/}
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski	ReportLine "<P>"
112*b1cdbd2cSJim Jagielski	ReportLine "<CENTER>"
113*b1cdbd2cSJim Jagielski	ReportLine "<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=2>"
114*b1cdbd2cSJim Jagielski	ReportLine "<TR>"
115*b1cdbd2cSJim Jagielski	ReportLine "<TH>Total Tests PASSED</TH>"
116*b1cdbd2cSJim Jagielski	ReportLine "<TH>${TOTAL_PASS}</TH>"
117*b1cdbd2cSJim Jagielski	ReportLine "</TR>"
118*b1cdbd2cSJim Jagielski	ReportLine "<TR>"
119*b1cdbd2cSJim Jagielski	ReportLine "<TH>Total Tests FAILED</TH>"
120*b1cdbd2cSJim Jagielski	ReportLine "<TH>${TOTAL_FAIL}</TH>"
121*b1cdbd2cSJim Jagielski	ReportLine "</TR>"
122*b1cdbd2cSJim Jagielski	ReportLine "<TR>"
123*b1cdbd2cSJim Jagielski	ReportLine "<TH>Total Tests Run</TH>"
124*b1cdbd2cSJim Jagielski	ReportLine "<TH>${TOTAL_RUN}</TH>"
125*b1cdbd2cSJim Jagielski	ReportLine "</TR>"
126*b1cdbd2cSJim Jagielski	ReportLine "</TABLE>"
127*b1cdbd2cSJim Jagielski	ReportLine "</CENTER>"
128*b1cdbd2cSJim Jagielski	ReportLine "<P>"
129*b1cdbd2cSJim Jagielski	ReportLine "<A HREF=${loglink}>Full logfile for test run</A>"
130*b1cdbd2cSJim Jagielski	ReportLine "<P>"
131*b1cdbd2cSJim Jagielski	ReportLine "<CENTER>"
132*b1cdbd2cSJim Jagielski	ReportLine "</BODY>"
133*b1cdbd2cSJim Jagielski	ReportLine "</HTML>"
134*b1cdbd2cSJim Jagielski}
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski################################################################################
137*b1cdbd2cSJim JagielskiReportLine() {
138*b1cdbd2cSJim Jagielski	echo $1 >> $REPORT
139*b1cdbd2cSJim Jagielski}
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski################################################################################
142*b1cdbd2cSJim JagielskiLogLine() {
143*b1cdbd2cSJim Jagielski	echo $1 >> $LOGFILE
144*b1cdbd2cSJim Jagielski}
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski################################################################################
147*b1cdbd2cSJim JagielskiReportTestComments() {
148*b1cdbd2cSJim Jagielski	if [[ $TEST_COMMENTS == "" ]] ; then
149*b1cdbd2cSJim Jagielski		TEST_COMMENTS="&nbsp;"
150*b1cdbd2cSJim Jagielski	fi
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski	ReportLine "<TD>${TEST_COMMENTS}</TD>"
153*b1cdbd2cSJim Jagielski}
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski################################################################################
156*b1cdbd2cSJim JagielskiGetParams() {
157*b1cdbd2cSJim Jagielski	integer argc=$#
158*b1cdbd2cSJim Jagielski	integer i=0
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski	if [[ $argc -lt 1 ]] ; then
161*b1cdbd2cSJim Jagielski		Usage
162*b1cdbd2cSJim Jagielski	fi
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski	while (($i < $argc)) ; do
165*b1cdbd2cSJim Jagielski		arg=$1
166*b1cdbd2cSJim Jagielski		shift
167*b1cdbd2cSJim Jagielski    		i=i+1
168*b1cdbd2cSJim Jagielski
169*b1cdbd2cSJim Jagielski		if [[ $arg == '-name' ]] ; then
170*b1cdbd2cSJim Jagielski			if (( $i < $argc )) ; then
171*b1cdbd2cSJim Jagielski				RUNNAME=$1
172*b1cdbd2cSJim Jagielski				echo "RUNNAME=[$RUNNAME]"
173*b1cdbd2cSJim Jagielski				shift
174*b1cdbd2cSJim Jagielski				i=i+1
175*b1cdbd2cSJim Jagielski			else
176*b1cdbd2cSJim Jagielski				Usage
177*b1cdbd2cSJim Jagielski			fi
178*b1cdbd2cSJim Jagielski		elif [[ $arg == '-env' ]] ; then
179*b1cdbd2cSJim Jagielski			if (( $i < $argc )) ; then
180*b1cdbd2cSJim Jagielski				ENVFILE=$1
181*b1cdbd2cSJim Jagielski				shift
182*b1cdbd2cSJim Jagielski				i=i+1
183*b1cdbd2cSJim Jagielski			else
184*b1cdbd2cSJim Jagielski				Usage
185*b1cdbd2cSJim Jagielski			fi
186*b1cdbd2cSJim Jagielski		else
187*b1cdbd2cSJim Jagielski			Usage
188*b1cdbd2cSJim Jagielski		fi
189*b1cdbd2cSJim Jagielski	done
190*b1cdbd2cSJim Jagielski
191*b1cdbd2cSJim Jagielski	if [[ $ENVFILE == "" ]] ; then
192*b1cdbd2cSJim Jagielski		Usage
193*b1cdbd2cSJim Jagielski	fi
194*b1cdbd2cSJim Jagielski}
195*b1cdbd2cSJim Jagielski
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski################################################################################
198*b1cdbd2cSJim JagielskiReadEnvFile() {
199*b1cdbd2cSJim Jagielski	. $ENVFILE
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski
202*b1cdbd2cSJim Jagielski	echo ""
203*b1cdbd2cSJim Jagielski	echo "The following values have been set from $ENVFILE:"
204*b1cdbd2cSJim Jagielski	echo "MASTERLIST=$MASTERLIST"
205*b1cdbd2cSJim Jagielski	echo "TESTCASEDIR=$TESTCASEDIR"
206*b1cdbd2cSJim Jagielski	echo "XMERGE_JAR=$XMERGE_JAR"
207*b1cdbd2cSJim Jagielski	echo "APORTIS_JAR=$APORTIS_JAR"
208*b1cdbd2cSJim Jagielski	echo "WORDSMITH_JAR=$WORDSMITH_JAR"
209*b1cdbd2cSJim Jagielski	echo "MINICALC_JAR=$MINICALC_JAR"
210*b1cdbd2cSJim Jagielski	echo "RESULTSBASE=$RESULTSBASE"
211*b1cdbd2cSJim Jagielski	echo "PERL5LIB=$PERL5LIB"
212*b1cdbd2cSJim Jagielski	echo "POSE_EXE=$POSE_EXE"
213*b1cdbd2cSJim Jagielski	echo "POSE_PRC=$POSE_PRC"
214*b1cdbd2cSJim Jagielski	echo "TEST_DRIVER_PL=$TEST_DRIVER_PL"
215*b1cdbd2cSJim Jagielski	echo "COMPARATOR_PL=$COMPARATOR_PL"
216*b1cdbd2cSJim Jagielski	echo "XML_INFILE_DIR=$XML_INFILE_DIR"
217*b1cdbd2cSJim Jagielski	echo "PDB_BASELINE_DIR=$PDB_BASELINE_DIR"
218*b1cdbd2cSJim Jagielski	echo "XML_BASELINE_DIR=$XML_BASELINE_DIR"
219*b1cdbd2cSJim Jagielski	echo "EM_SCRIPT_HOME=$EM_SCRIPT_HOME"
220*b1cdbd2cSJim Jagielski	echo "QAWRAPPER_SCRIPT_HOME=$QAWRAPPER_SCRIPT_HOME"
221*b1cdbd2cSJim Jagielski	echo "EM_ROM_FILE=$EM_ROM_FILE"
222*b1cdbd2cSJim Jagielski	echo "EM_SESSION_FILE=$EM_SESSION_FILE"
223*b1cdbd2cSJim Jagielski	echo "QA_LIB_HOME=$QA_LIB_HOME"
224*b1cdbd2cSJim Jagielski	echo "QA_COMPARATOR_HOME=$QA_COMPARATOR_HOME"
225*b1cdbd2cSJim Jagielski	echo "CLASSES_DIR=$CLASSES_DIR"
226*b1cdbd2cSJim Jagielski	echo "COMPLIST=$COMPLIST"
227*b1cdbd2cSJim Jagielski}
228*b1cdbd2cSJim Jagielski
229*b1cdbd2cSJim Jagielski################################################################################
230*b1cdbd2cSJim JagielskiPOSESetup() {
231*b1cdbd2cSJim Jagielski	export PERL5LIB
232*b1cdbd2cSJim Jagielski	export EM_SCRIPT_HOME
233*b1cdbd2cSJim Jagielski	export QAWRAPPER_SCRIPT_HOME
234*b1cdbd2cSJim Jagielski	export EM_ROM_FILE
235*b1cdbd2cSJim Jagielski	export EM_SESSION_FILE
236*b1cdbd2cSJim Jagielski	export QA_LIB_HOME
237*b1cdbd2cSJim Jagielski	export QA_COMPARATOR_HOME
238*b1cdbd2cSJim Jagielski   	export CLASSES_DIR
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski}
241*b1cdbd2cSJim Jagielski
242*b1cdbd2cSJim Jagielski################################################################################
243*b1cdbd2cSJim JagielskiTestSetup() {
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski
246*b1cdbd2cSJim Jagielski	POSESetup
247*b1cdbd2cSJim Jagielski
248*b1cdbd2cSJim Jagielski	export ZENDEBUG=1
249*b1cdbd2cSJim Jagielski
250*b1cdbd2cSJim Jagielski	COMPLIST="${COMPLIST}/tempcomp.${RUNNAME}.list"
251*b1cdbd2cSJim Jagielski	# create the directories for the results of this test run
252*b1cdbd2cSJim Jagielski	RESDIR="${RESULTSBASE}/${RUNNAME}"
253*b1cdbd2cSJim Jagielski	\rm -Rf $RESDIR
254*b1cdbd2cSJim Jagielski	mkdir $RESDIR
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski	# Define the directories for the test input files,
257*b1cdbd2cSJim Jagielski	# test output files, working directories and baseline files
258*b1cdbd2cSJim Jagielski	PDB_INFILE_DIR="${RESDIR}/pdb-orig"
259*b1cdbd2cSJim Jagielski	mkdir "${PDB_INFILE_DIR}"
260*b1cdbd2cSJim Jagielski	PDB_OUTFILE_DIR="${RESDIR}/pdb-new"
261*b1cdbd2cSJim Jagielski	mkdir "${PDB_OUTFILE_DIR}"
262*b1cdbd2cSJim Jagielski	XML_OUTFILE_DIR="${RESDIR}/xml-new"
263*b1cdbd2cSJim Jagielski	mkdir "${XML_OUTFILE_DIR}"
264*b1cdbd2cSJim Jagielski
265*b1cdbd2cSJim Jagielski	LOGFILE="${RESDIR}/logfile"
266*b1cdbd2cSJim Jagielski	COMPLOG="${RESDIR}/complog"
267*b1cdbd2cSJim Jagielski	REPORT="${RESDIR}/report.html"
268*b1cdbd2cSJim Jagielski	StartReportFile
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski	echo "Results in: $RESDIR"
271*b1cdbd2cSJim Jagielski	echo "Report file: $REPORT"
272*b1cdbd2cSJim Jagielski}
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielski################################################################################
275*b1cdbd2cSJim JagielskiTestCleanup() {
276*b1cdbd2cSJim Jagielski	EndReportFile
277*b1cdbd2cSJim Jagielski}
278*b1cdbd2cSJim Jagielski
279*b1cdbd2cSJim Jagielski################################################################################
280*b1cdbd2cSJim JagielskiTestCaseSetup() {
281*b1cdbd2cSJim Jagielski	# where to pick up converter classes
282*b1cdbd2cSJim Jagielski	export CLASSPATH=""
283*b1cdbd2cSJim Jagielski	export CLASSPATH=$CLASSPATH:$XMERGE_JAR
284*b1cdbd2cSJim Jagielski	export CLASSPATH=$CLASSPATH:$APORTIS_JAR
285*b1cdbd2cSJim Jagielski	export CLASSPATH=$CLASSPATH:$WORDSMITH_JAR
286*b1cdbd2cSJim Jagielski	export CLASSPATH=$CLASSPATH:$MINICALC_JAR
287*b1cdbd2cSJim Jagielski}
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski################################################################################
290*b1cdbd2cSJim JagielskiTestCaseCleanup() {
291*b1cdbd2cSJim Jagielski	# empty function
292*b1cdbd2cSJim Jagielski	a=42
293*b1cdbd2cSJim Jagielski}
294*b1cdbd2cSJim Jagielski
295*b1cdbd2cSJim Jagielski################################################################################
296*b1cdbd2cSJim JagielskiRunTestCase() {
297*b1cdbd2cSJim Jagielski	testcase=$1
298*b1cdbd2cSJim Jagielski
299*b1cdbd2cSJim Jagielski	LogLine ""
300*b1cdbd2cSJim Jagielski	LogLine "test_driver output:"
301*b1cdbd2cSJim Jagielski
302*b1cdbd2cSJim Jagielski	# run test_driver in foreground
303*b1cdbd2cSJim Jagielski	$TEST_DRIVER_PL\
304*b1cdbd2cSJim Jagielski		-pose-prc=${POSE_PRC}\
305*b1cdbd2cSJim Jagielski		-pose-exe=${POSE_EXE}\
306*b1cdbd2cSJim Jagielski		-xml-orig=${XML_INFILE_DIR}\
307*b1cdbd2cSJim Jagielski		-pdb-orig=${PDB_INFILE_DIR}\
308*b1cdbd2cSJim Jagielski		-pdb-new=${PDB_OUTFILE_DIR}\
309*b1cdbd2cSJim Jagielski		-xml-new=${XML_OUTFILE_DIR}\
310*b1cdbd2cSJim Jagielski		-test=$testcase -merge >> $LOGFILE 2>&1
311*b1cdbd2cSJim Jagielski
312*b1cdbd2cSJim Jagielski	# cleanup in case zombie POSE processes are hanging around
313*b1cdbd2cSJim Jagielski	pkill pose
314*b1cdbd2cSJim Jagielski	pkill -9 pose
315*b1cdbd2cSJim Jagielski}
316*b1cdbd2cSJim Jagielski
317*b1cdbd2cSJim Jagielski
318*b1cdbd2cSJim Jagielski################################################################################
319*b1cdbd2cSJim JagielskiComparisonSetup() {
320*b1cdbd2cSJim Jagielski	typeset file=$1
321*b1cdbd2cSJim Jagielski
322*b1cdbd2cSJim Jagielski
323*b1cdbd2cSJim Jagielski	export CLASSPATH="$CLASSES_DIR/xerces.jar"
324*b1cdbd2cSJim Jagielski
325*b1cdbd2cSJim Jagielski	# create temporary comparator list file for this test case
326*b1cdbd2cSJim Jagielski	echo $file > $COMPLIST
327*b1cdbd2cSJim Jagielski}
328*b1cdbd2cSJim Jagielski
329*b1cdbd2cSJim Jagielski################################################################################
330*b1cdbd2cSJim JagielskiComparisonCleanup() {
331*b1cdbd2cSJim Jagielski	# remove temporary comparator list file used for this test case
332*b1cdbd2cSJim Jagielski	\rm -f $COMPLIST
333*b1cdbd2cSJim Jagielski}
334*b1cdbd2cSJim Jagielski
335*b1cdbd2cSJim Jagielski################################################################################
336*b1cdbd2cSJim JagielskiRunComparison() {
337*b1cdbd2cSJim Jagielski	typeset type=$1
338*b1cdbd2cSJim Jagielski
339*b1cdbd2cSJim Jagielski	LogLine ""
340*b1cdbd2cSJim Jagielski	LogLine "Comparator output:"
341*b1cdbd2cSJim Jagielski	$COMPARATOR_PL\
342*b1cdbd2cSJim Jagielski		-xml-orig=${XML_BASELINE_DIR}\
343*b1cdbd2cSJim Jagielski		-pdb-orig=${PDB_BASELINE_DIR}\
344*b1cdbd2cSJim Jagielski		-pdb-new=${PDB_INFILE_DIR}\
345*b1cdbd2cSJim Jagielski		-xml-new=${XML_OUTFILE_DIR}\
346*b1cdbd2cSJim Jagielski		-list=$COMPLIST -log=$COMPLOG -type=$type >> $LOGFILE 2>&1
347*b1cdbd2cSJim Jagielski#		-list=$COMPLIST -log=$COMPLOG -type=$type | tee -a $LOGFILE 2>&1
348*b1cdbd2cSJim Jagielski
349*b1cdbd2cSJim Jagielski	pass=`grep TRUE $COMPLOG | wc -l`
350*b1cdbd2cSJim Jagielski
351*b1cdbd2cSJim Jagielski	LogLine ""
352*b1cdbd2cSJim Jagielski	LogLine "COMPLIST file:"
353*b1cdbd2cSJim Jagielski	cat $COMPLIST >> $LOGFILE
354*b1cdbd2cSJim Jagielski	LogLine ""
355*b1cdbd2cSJim Jagielski	LogLine "Comparator logfile:"
356*b1cdbd2cSJim Jagielski	cat $COMPLOG >> $LOGFILE
357*b1cdbd2cSJim Jagielski
358*b1cdbd2cSJim Jagielski	if [ $pass -eq 0 ]
359*b1cdbd2cSJim Jagielski	then
360*b1cdbd2cSJim Jagielski		TEST_COMMENTS="${TEST_COMMENTS}$type comparison ERROR<BR>"
361*b1cdbd2cSJim Jagielski		echo "$type comparison ERROR"
362*b1cdbd2cSJim Jagielski		return 0
363*b1cdbd2cSJim Jagielski	fi
364*b1cdbd2cSJim Jagielski
365*b1cdbd2cSJim Jagielski	echo "$type comparison OK"
366*b1cdbd2cSJim Jagielski	return 1
367*b1cdbd2cSJim Jagielski}
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski################################################################################
370*b1cdbd2cSJim JagielskiCheckOutput() {
371*b1cdbd2cSJim Jagielski	typeset xmlfile="${XML_OUTFILE_DIR}/$1"
372*b1cdbd2cSJim Jagielski	typeset pdbfile="${PDB_INFILE_DIR}/$2"
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim Jagielski	if [ ! -f $pdbfile ] ; then
375*b1cdbd2cSJim Jagielski		TEST_COMMENTS="${TEST_COMMENTS}[$pdbfile] does not exist<BR>"
376*b1cdbd2cSJim Jagielski		LogLine "ERROR: $pdbfile does not exist"
377*b1cdbd2cSJim Jagielski		echo "ERROR: $pdbfile does not exist"
378*b1cdbd2cSJim Jagielski		return 0
379*b1cdbd2cSJim Jagielski	fi
380*b1cdbd2cSJim Jagielski
381*b1cdbd2cSJim Jagielski	if [ ! -f $xmlfile ] ; then
382*b1cdbd2cSJim Jagielski		TEST_COMMENTS="${TEST_COMMENTS}[$xmlfile] does not exist<BR>"
383*b1cdbd2cSJim Jagielski		LogLine "ERROR: $xmlfile does not exist"
384*b1cdbd2cSJim Jagielski		echo "ERROR: $xmlfile does not exist"
385*b1cdbd2cSJim Jagielski		return 0
386*b1cdbd2cSJim Jagielski	fi
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim Jagielski	return 1
389*b1cdbd2cSJim Jagielski}
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski################################################################################
392*b1cdbd2cSJim JagielskiRunTest() {
393*b1cdbd2cSJim Jagielski	typeset testcasename
394*b1cdbd2cSJim Jagielski	typeset testcase
395*b1cdbd2cSJim Jagielski	typeset testfile
396*b1cdbd2cSJim Jagielski	typeset pdbfile
397*b1cdbd2cSJim Jagielski	typeset xmlfile
398*b1cdbd2cSJim Jagielski	typeset ext
399*b1cdbd2cSJim Jagielski	integer try
400*b1cdbd2cSJim Jagielski	integer finished_with_test
401*b1cdbd2cSJim Jagielski	integer test_pass
402*b1cdbd2cSJim Jagielski
403*b1cdbd2cSJim Jagielski	TestSetup
404*b1cdbd2cSJim Jagielski
405*b1cdbd2cSJim Jagielski	BGCOLOR=$ODD_BGCOLOR
406*b1cdbd2cSJim Jagielski
407*b1cdbd2cSJim Jagielski	while read line ; do
408*b1cdbd2cSJim Jagielski		# get chars up to 1st space
409*b1cdbd2cSJim Jagielski		testcasename=${line%% *}
410*b1cdbd2cSJim Jagielski		testcase="${TESTCASEDIR}/$testcasename"
411*b1cdbd2cSJim Jagielski
412*b1cdbd2cSJim Jagielski		# get 2nd word
413*b1cdbd2cSJim Jagielski		testfile=${line#* }
414*b1cdbd2cSJim Jagielski		testfile=${testfile%% *}
415*b1cdbd2cSJim Jagielski
416*b1cdbd2cSJim Jagielski		# get last word
417*b1cdbd2cSJim Jagielski		ext=${line##* }
418*b1cdbd2cSJim Jagielski
419*b1cdbd2cSJim Jagielski		LogLine "############################################"
420*b1cdbd2cSJim Jagielski		LogLine "Starting the following testcase"
421*b1cdbd2cSJim Jagielski		LogLine "testcase = $testcase"
422*b1cdbd2cSJim Jagielski		LogLine "testfile = $testfile"
423*b1cdbd2cSJim Jagielski		LogLine "ext = $ext"
424*b1cdbd2cSJim Jagielski
425*b1cdbd2cSJim Jagielski		ReportLine "<TR BGCOLOR='${BGCOLOR}'>"
426*b1cdbd2cSJim Jagielski		ReportLine "<TD valign=top>$testcasename</TD>"
427*b1cdbd2cSJim Jagielski		ReportLine "<TD valign=top>$testfile</TD>"
428*b1cdbd2cSJim Jagielski		ReportLine "<TD valign=top>$ext</TD>"
429*b1cdbd2cSJim Jagielski
430*b1cdbd2cSJim Jagielski		echo ""
431*b1cdbd2cSJim Jagielski		echo "testcase = $testcase"
432*b1cdbd2cSJim Jagielski		echo "testfile = $testfile"
433*b1cdbd2cSJim Jagielski		echo "ext = $ext"
434*b1cdbd2cSJim Jagielski
435*b1cdbd2cSJim Jagielski		try=1
436*b1cdbd2cSJim Jagielski		finished_with_test=0
437*b1cdbd2cSJim Jagielski		TEST_COMMENTS=""
438*b1cdbd2cSJim Jagielski
439*b1cdbd2cSJim Jagielski		while (($finished_with_test == 0)) ; do
440*b1cdbd2cSJim Jagielski
441*b1cdbd2cSJim Jagielski			TestCaseSetup
442*b1cdbd2cSJim Jagielski			RunTestCase $testcase
443*b1cdbd2cSJim Jagielski			TestCaseCleanup
444*b1cdbd2cSJim Jagielski
445*b1cdbd2cSJim Jagielski			xmlfile="${testfile}.${ext}"
446*b1cdbd2cSJim Jagielski
447*b1cdbd2cSJim Jagielski			if [[ $ext == "sxc" ]] ; then
448*b1cdbd2cSJim Jagielski				pdbfile="${testfile}-Sheet1.pdb"
449*b1cdbd2cSJim Jagielski			else
450*b1cdbd2cSJim Jagielski				pdbfile="${testfile}.pdb"
451*b1cdbd2cSJim Jagielski			fi
452*b1cdbd2cSJim Jagielski
453*b1cdbd2cSJim Jagielski			CheckOutput $xmlfile $pdbfile
454*b1cdbd2cSJim Jagielski			res=$?
455*b1cdbd2cSJim Jagielski
456*b1cdbd2cSJim Jagielski			if [[ $res -eq 1 ]] ; then
457*b1cdbd2cSJim Jagielski				ComparisonSetup $pdbfile
458*b1cdbd2cSJim Jagielski				RunComparison pdb
459*b1cdbd2cSJim Jagielski				res=$?
460*b1cdbd2cSJim Jagielski# ignore result until pdb comparator is fixed...
461*b1cdbd2cSJim Jagielskires=1
462*b1cdbd2cSJim Jagielski				ComparisonCleanup
463*b1cdbd2cSJim Jagielski			fi
464*b1cdbd2cSJim Jagielski
465*b1cdbd2cSJim Jagielski			if [[ $res -eq 1 ]] ; then
466*b1cdbd2cSJim Jagielski				ComparisonSetup $xmlfile
467*b1cdbd2cSJim Jagielski				RunComparison xml
468*b1cdbd2cSJim Jagielski				res=$?
469*b1cdbd2cSJim Jagielski				ComparisonCleanup
470*b1cdbd2cSJim Jagielski			fi
471*b1cdbd2cSJim Jagielski
472*b1cdbd2cSJim Jagielski			if [[ $res -eq 1 ]] ; then
473*b1cdbd2cSJim Jagielski				TOTAL_PASS=TOTAL_PASS+1
474*b1cdbd2cSJim Jagielski				ReportLine "<TD valign=top BGCOLOR='${PASS_COLOR}'>PASS</TD>"
475*b1cdbd2cSJim Jagielski				ReportTestComments
476*b1cdbd2cSJim Jagielski				ReportLine "</TR>"
477*b1cdbd2cSJim Jagielski				LogLine "Test PASSED (on try $try)"
478*b1cdbd2cSJim Jagielski				echo "Test PASSED (on try $try)"
479*b1cdbd2cSJim Jagielski				finished_with_test=1
480*b1cdbd2cSJim Jagielski			else
481*b1cdbd2cSJim Jagielski				TEST_COMMENTS="${TEST_COMMENTS}error on try ${try}<BR>"
482*b1cdbd2cSJim Jagielski				LogLine "TEST FAILED (on try $try)"
483*b1cdbd2cSJim Jagielski				echo "TEST FAILED (on try $try)"
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski				if [[ $try -eq $MAX_RETRIES ]] ; then
486*b1cdbd2cSJim Jagielski					TOTAL_FAIL=TOTAL_FAIL+1
487*b1cdbd2cSJim Jagielski					ReportLine "<TD valign=top BGCOLOR='${FAIL_COLOR}'>FAIL</TD>"
488*b1cdbd2cSJim Jagielski					ReportTestComments
489*b1cdbd2cSJim Jagielski					ReportLine "</TR>"
490*b1cdbd2cSJim Jagielski					finished_with_test=1
491*b1cdbd2cSJim Jagielski				fi
492*b1cdbd2cSJim Jagielski			fi
493*b1cdbd2cSJim Jagielski
494*b1cdbd2cSJim Jagielski			try=try+1
495*b1cdbd2cSJim Jagielski		done
496*b1cdbd2cSJim Jagielski
497*b1cdbd2cSJim Jagielski		TOTAL_RUN=TOTAL_RUN+1
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielski		# toggle BGCOLOR for next report line
500*b1cdbd2cSJim Jagielski		if [[ $BGCOLOR == $ODD_BGCOLOR ]] ; then
501*b1cdbd2cSJim Jagielski			BGCOLOR=$EVEN_BGCOLOR
502*b1cdbd2cSJim Jagielski		else
503*b1cdbd2cSJim Jagielski			BGCOLOR=$ODD_BGCOLOR
504*b1cdbd2cSJim Jagielski		fi
505*b1cdbd2cSJim Jagielski
506*b1cdbd2cSJim Jagielski	done < $MASTERLIST
507*b1cdbd2cSJim Jagielski
508*b1cdbd2cSJim Jagielski	ReportLine "</TABLE>"
509*b1cdbd2cSJim Jagielski	ReportLine "</CENTER>"
510*b1cdbd2cSJim Jagielski
511*b1cdbd2cSJim Jagielski	TestCleanup
512*b1cdbd2cSJim Jagielski
513*b1cdbd2cSJim Jagielski	echo "Total Tests PASSED: "${TOTAL_PASS}
514*b1cdbd2cSJim Jagielski	echo "Total Tests FAILED: "${TOTAL_FAIL}
515*b1cdbd2cSJim Jagielski	echo "Total Tests RUN: "${TOTAL_RUN}
516*b1cdbd2cSJim Jagielski	echo "Results in: $RESDIR"
517*b1cdbd2cSJim Jagielski	echo "Report file: $REPORT"
518*b1cdbd2cSJim Jagielski}
519*b1cdbd2cSJim Jagielski
520*b1cdbd2cSJim Jagielski################################################################################
521*b1cdbd2cSJim Jagielski################################################################################
522*b1cdbd2cSJim Jagielski# main
523*b1cdbd2cSJim Jagielski################################################################################
524*b1cdbd2cSJim Jagielski################################################################################
525*b1cdbd2cSJim Jagielski
526*b1cdbd2cSJim JagielskiGetParams $@
527*b1cdbd2cSJim JagielskiReadEnvFile
528*b1cdbd2cSJim JagielskiRunTest
529*b1cdbd2cSJim Jagielski
530*b1cdbd2cSJim Jagielskiexit 0
531