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=" " 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