📄 qareporterdb
字号:
#!/bin/bash## qareporterDB - Simple automated testing script# # Version 1.0, Mar 27, 2002 by Francis Lee (francis@treshna.com)CURRENT_TEST_DIR=`pwd`BONDDB_DIR=${CURRENT_TEST_DIR%/*}HTML=1# Message to be mailedMSGFILE=${CURRENT_TEST_DIR}/qa_test_errors.txtWARNFILE=${CURRENT_TEST_DIR}/qa_compiler_warnings.txtBESTTIMEFILE=${CURRENT_TEST_DIR}/qa_besttime.txtREPORTFILE=${CURRENT_TEST_DIR}/qa_bigreport.txtCONFFILE=$BONDDB_DIR/src/bond.confCONFFILETMP=${CURRENT_TEST_DIR}/bond.conf.backupCREATE_TEST_DB_SQL=${BONDDB_DIR}/createtestdb.sql####################################################################### CONFIGURATION STUFFDBADMIN=andru# Set test database informationTESTDB_DBNAME=pooheadTESTDB_HOST=lokiTESTDB_USER=andruADDR='andru@treshna.com'#ADDR='francis@treshna.com'QATESTPROG='qabondDB'#######################################################################case "$1" in '-h') echo "Usage: $0 [createdb|dropdb]" exit 0 ;; createdb) dropdb -h $TESTDB_HOST $TESTDB_DBNAME createdb -h $TESTDB_HOST $TESTDB_DBNAME psql -f $CREATE_TEST_DB_SQL -h $TESTDB_HOST -d $TESTDB_DBNAME -U $TESTDB_USER exit 0 ;; dropdb) dropdb -h $TESTDB_HOST $TESTDB_DBNAME exit 0 ;; restoreconf) if [[ -f $CONFFILETMP ]]; then cp $CONFFILETMP $CONFFILE exit 0 else echo "No backup file." >/dev/stderr exit 1 fi ;; *) ;;esaccd $BONDDB_DIRcvs updatecd $CURRENT_TEST_DIR####################################################################### Dependency checkingif [[ ! -f "./changeconf.pl" ]]; then echo "This program requires 'changeconf.pl' in $CURRENT_TEST_DIR " \ >/dev/stderr exit 1;elif [[ ! -f $QATESTPROG ]]; then echo "This program requires '$QATESTPROG' in $CURRENT_TEST_DIR" \ >/dev/stderr exit 1;elif [[ ! -f "$BONDDB_DIR/configure" ]]; then echo "This program requires 'configure' in $BONDDB_DIR" \ >/dev/stderr echo "Automatically generating..." >/dev/stderr cd ${BONDDB_DIR} ${BONDDB_DIR}/autogen.sh cd testfi####################################################################### Variable checkingif [[ -z $TESTDB_DBNAME ]]; then echo "Make sure to set TESTDB_DBNAME." >/dev/stderr exit 1elif [[ -z $TESTDB_HOST ]]; then echo "Make sure to set TESTDB_HOST." >/dev/stderr exit 1elif [[ -z $TESTDB_USER ]]; then echo "Make sure to set TESTDB_USER." >/dev/stderr exit 1#elif [[ $USER != $TESTDB_USER ]]; then# echo "You are '$USER' but it does not match with '$TESTDB_USER'!" >/dev/stderr# exit 1elif [[ ! -f $CREATE_TEST_DB_SQL ]]; then echo "File $CREATE_TEST_DB_SQL does not exists." \ >/dev/stderrfi# Check if we can createdb properlydropdb $TESTDB_DBNAME &>/dev/nullcreatedb $TESTDB_DBNAME &>/dev/nullif [[ ! $? ]]; then echo "Failed to create database $TESTDB_DBNAME." >/dev/stderr echo "Please check if you have permission to create a DB." >/dev/stderr exit;fipsql -f $CREATE_TEST_DB_SQL $TESTDB_DBNAME &>/dev/null####################################################################### Check configuration file because often this program destorys it!!!if [[ ! -f $CONFFILE || ! -s $CONFFILE ]]; then echo -n "Please check if '$CONFFILE' is OK because often this script " echo "destroys the file." exit 1;fi####################################################################### Change test database informationcp $CONFFILE $CONFFILETMPif [[ -n $TESTDB_DBNAME && -n $TESTDB_HOST && -n $TESTDB_USER ]]; then echo "Changing test database..." ./changeconf.pl $TESTDB_DBNAME $TESTDB_HOST $TESTDB_USER < $CONFFILETMP > $CONFFILEfiif [[ ! -s $CONFFILE ]]; then echo "Failed to make a new configuration file" >/dev/stderr exit 1fi####################################################################### Give some informationecho "QA Error File : $MSGFILE"echo "QA Compiler Warning File : $WARNFILE"echo "QA Best Time of Test Run File : $BESTTIMEFILE"echo "----------------------------------------"echo "Test DB dbname=$TESTDB_DBNAME"echo "Test DB host=$TESTDB_HOST"echo "Test DB user=$TESTDB_USER"echo "Report email address: $ADDR"echo "----------------------------------------"####################################################################### Mail compiler warnings# Go to bond directory and make bondcd $BONDDB_DIRmake clean > /dev/null####################################################################### Print the content of bond.confecho "----------------------------------------"echo " Content of bond.conf"echo "----------------------------------------"cat $CONFFILEecho "----------------------------------------"# Time how long takes to buildecho "Compiling..."make > /dev/null 2>$WARNFILEMAKE_RESULT=$?cp $CONFFILETMP $CONFFILE# Uh-ohif (( $MAKE_RESULT > 0 )); then mail -s "QA ($QATESTPROG): Failed to build. 'make' was unsuccessful" \ $ADDR <$WARNFILE exit 1fiif (( $HTML == 1)); then echo "<HTML>" >$REPORTFILE echo "<BODY>" >>$REPORTFILEfi# Only mail if any compiler warnings were found.if [ -s $WARNFILE ]; then echo "Sending Compiler Warning Report..." if (( $HTML == 1 )); then echo "<HR>" >>$REPORTFILE echo '<DIV ALIGN="CENTER"><H1>Compiler Warning Report</H1></DIV>' >>$REPORTFILE echo "<HR>" >>$REPORTFILE #echo "<PRE>" >>$REPORTFILE sed 's/$/<BR>/' $WARNFILE >>$REPORTFILE #cat $WARNFILE >>$REPORTFILE #echo "</PRE>" >>$REPORTFILE else mail -s "QA ($QATESTPROG): Compiler Warning Report" $ADDR <$WARNFILE fificd test####################################################################### Time how long takes to test all## Unfortunately I don't know how to keep the value of time without using# utility called 'gnutime'TIMESTAMP=`date +%s`./${QATESTPROG} testall 2> $MSGFILE# Only mail if an error was found.if [ -s $MSGFILE ]; then echo "Sending Test Error Report..." if (( $HTML == 1 )); then echo "<HR>" >>$REPORTFILE echo '<DIV ALIGN="CENTER"><H1>Test Error Report</H1></DIV>' >>$REPORTFILE echo "<HR>" >>$REPORTFILE echo "<PRE>" >>$REPORTFILE cat $MSGFILE >>$REPORTFILE echo "</PRE>" >>$REPORTFILE else mail -s "QA ($QATESTPROG): Test Error Report" $ADDR <$MSGFILE fifiTIMESPENT=$(( `date +%s` - $TIMESTAMP ))echo "$TIMESPENT seconds in real time."if [ ! -f $BESTTIMEFILE ]; then touch $BESTTIMEFILE echo "3600" > $BESTTIMEFILEfiread KNOWNBEST < $BESTTIMEFILE# echo $KNOWNBEST $TIMESPENTif (( $KNOWNBEST > $TIMESPENT )); then # Update new best time record echo $TIMESPENT > $BESTTIMEFILE if (( $HTML == 1 )); then# echo "<HR>" >>$REPORTFILE# echo '<DIV ALIGN="CENTER"><H1>Time Report</H1></DIV>' >>$REPORTFILE# echo "<HR>" >>$REPORTFILE# echo "<PRE>" >>$REPORTFILE $TIMEREP="New best time so far:$TIMESPENT (sec)"# echo "</PRE>" >>$REPORTFILE else echo -e "New best time so far:$TIMESPENT (sec)\n" \ | mail -s "QA ($QATESTPROG): New Best Time Report" $ADDR fielse if (( $HTML == 1 )); then# echo "<HR>" >>$REPORTFILE# echo '<DIV ALIGN="CENTER"><H1>Best/Current Time Report</H1></DIV>' >>$REPORTFILE# echo "<HR>" >>$REPORTFILE TIMEREP=" - (Best/Current time: $KNOWNBEST/$TIMESPENT (sec))" else echo -e "Best time so far:$KNOWNBEST (sec)\nCurrent time: $TIMESPENT (sec)" | mail -s "QA ($QATESTPROG): Best/Current Time Report" $ADDR fifiif (( $HTML == 1 )); then echo "</BODY></HTML>" >>$REPORTFILE ./mail2.pl $ADDR "BONDDB Report $TIMEREP" <$REPORTFILEfi####################################################################### Dont forget to drop tabledropdb $TESTDB_DBNAME &>/dev/nullcreatedb $TESTDB_DBNAME &>/dev/nullpsql -f $CREATE_TEST_DB_SQL $TESTDB_DBNAME &>/dev/nullrm -f $MSGFILE $WARNFILE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -