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