Clean-up temporary files after testing.
[SXSI/xpathcomp.git] / tests / non_regression_tests / test.sh
index f4a9106..380bea4 100755 (executable)
-#!/bin/bash
-I=1
+#!/bin/sh
 
-function cecho() {
-  case "$1" in
-      green)
-         START="\033[0;32m"
-         END="\033[0m"
-         ;;
-      yellow)
-         START="\033[1;33m"
-         END="\033[0m"
-         ;;
-      red)
-         START="\033[0;31m"
-         END="\033[0m"
-         ;;
-      *)
-         START=""
-         END=""
-         ;;
-  esac
-  echo -n -e "${START}${2}${END}"
-}
-
-function lessthan() {
-    echo '5k 1 st 0 sf' "$2" "$1" '<t ' "$2" "$1" '!<f p' | dc
-}
-
-
-if [ "$1" = "fast" ]
-then
-    repeat_monet=1
-    repeat_sxsi=1
-else
-    repeat_monet=5
-    repeat_sxsi=3
-fi
-
-
-for TESTDOC in "medline.xml" #"xmark_01.04.xml" "xmark_10.xml" 
-do
-echo
-echo "$TESTDOC"
-echo
-
-MLOG="$TESTDOC"_monet.log
-SLOG="$TESTDOC"_sxsi.log
-QLOG="$TESTDOC"_qizx.log
-rm -f "$MLOG" "$SLOG" "$QLOG"
-cat "$TESTDOC".queries | grep -v '^#' | while read line
+MAIN=../../main.native
+for i in *.xp
 do
-    query=`echo "$line" | cut -f 1 -d "%"`
-    query_qizx=`echo "$line" | cut -f 2 -d "%"`
-    echo Test $I "... "
-    echo "$query" | sed -e 's|/descendant::|//|g' | sed -e 's|child::||g'
-    echo -n Running SXSI
-    {
-       read sxsi_count_time
-       read sxsi_mat_time
-       read sxsi_print_time
-       read sxsi_count
-    } < <(`pwd`/sxsi.sh "$query" "$TESTDOC" "$repeat_sxsi")
-
-    echo " ok"
-    echo -n Running MonetBD/XQuery
-    
-    if [ "$query" = '/descendant::people[ descendant::person[not(child::address)] and descendant::person[not(child::watches)]]/child::person[child::watches]' ]
+    echo -n Test "$i" "..."
+    ref=`basename "$i" .xp`.output
+    doc=$(cat "$i" | cut -f 1 -d ',')
+    options=$(cat "$i" | cut -f 2 -d ',')
+    query=$(cat "$i" | cut -f 3 -d ',')
+    rm -f tmp
+    if [ -f "../docs/$doc".srx ]
     then
-       #Quick work around since MonetBD fails on q11
-       monet_count_time=1000000
-       monet_mat_time=1000000
-       monet_print_time=1000000
-       monet_count="$sxsi_count"
+        input="../docs/$doc".srx
     else
-    {
-       read monet_count_time
-       read monet_mat_time
-       read monet_print_time
-       read monet_count
-    } < <(`pwd`/monet.sh "$query" "$TESTDOC" "$repeat_monet")
-
+        input="../docs/$doc".xml
     fi
-    echo " ok"
-
-    echo -n Running Qizx/XQuery
-    {
-       read qizx_count_time
-       read qizx_mat_time
-       read qizx_print_time
-       read qizx_count
-    } < <(`pwd`/qizx.sh "$query_qizx" "$TESTDOC")
-
-    echo " ok"
-
-    if [ "$monet_count" = "" ]
+    $MAIN $options "$input" "$query" tmp 2>/dev/null
+    if diff -q -w -B tmp "$ref"
     then
-       monet_count="$sxsi_count"
-    fi
-    if [ "$sxsi_count" = "" ]
-    then
-       sxsi_count="$monet_count"
-    fi
-    for v in sxsi_count_time sxsi_mat_time sxsi_print_time \
-       monet_count_time monet_mat_time monet_print_time \
-       qizx_count_time qizx_mat_time qizx_print_time
-    do
-       if [ "${!v}" = "" ]
-       then
-           { read "$v"; } < <( echo 7200000 )
-       fi
-    done
-       
-
-
-    echo "$I,$sxsi_count,$sxsi_count_time,$sxsi_mat_time,$sxsi_print_time" >> "$SLOG"
-    echo "$I,$monet_count,$monet_count_time,$monet_mat_time,$monet_print_time" >>"$MLOG"
-    echo "$I,$qizx_count,$qizx_count_time,$qizx_mat_time,$qizx_print_time" >>"$QLOG"
-    echo -n "Correctness: "
-    if [ "$monet_count" = "$sxsi_count" ]
-    then
-       cecho green "count ok ($monet_count) "
+        echo " ok"
     else
-       cecho red "count error (monetdb: $monet_count, sxsi: $sxsi_count) "
+        echo failure
+        echo -----------------------
+        echo Difference:
+        diff -w -B tmp "$ref"
+        echo -----------------------
+        echo
     fi
-    echo
-    echo -n "Timing: "
-    CTIME="SXSI: $sxsi_count_time
-MONET: $monet_count_time
-QIZX: $qizx_count_time"
-    SORTED_CTIME=`echo "$CTIME" | sort --key=2 -g`
-    STR_CTIME=`echo "$SORTED_CTIME" | xargs echo -n`
-    first=`echo "$STR_CTIME" | cut -f1 -d':'`
-    if [ "$first" = "SXSI" ]
-    then
-       cecho green "$STR_CTIME"
-    else
-       cecho yellow "$STR_CTIME"
-    fi
-    I=$(( $I + 1))
-    echo
-done
+
 done
+rm -f tmp
\ No newline at end of file