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