testing: disable APDU logging for yaz-ztest
[pazpar2-moved-to-github.git] / test / run_pazpar2.sh
index b24f59b..f2e3de5 100755 (executable)
@@ -17,6 +17,10 @@ kill_pazpar2()
     if test -n "$PP2PID"; then
        kill $PP2PID
     fi
+    if test -f ztest.pid; then
+       kill `cat ztest.pid`
+       rm -f ztest.pid
+    fi
     if test -n "$SLEEP_PID"; then
        kill $SLEEP_PID
        SLEEP_PID=""
@@ -66,26 +70,53 @@ done
 IFS=$oIFS
 
 if test -z $curl; then
-    echo "curl not found. $PREFIX can not be tested"
+    echo "$PREFIX: curl not found"
     exit 1
 fi
 
+if test "$icu" = "true"; then
+    if ../src/pazpar2 -V |grep icu:enabled >/dev/null; then
+       :
+    else
+       echo "Skipping ${PREFIX}: ICU support unavailable"
+       exit 0
+    fi
+fi
+
 if test "$ztest" = "true" ; then
+    YAZ_ZTEST_XML_FETCH=${srcdir}/${PREFIX}.
+    export YAZ_ZTEST_XML_FETCH
+
     oIFS=$IFS
     IFS=:
     F=''
     for p in $PATH; do
        if test -x $p/yaz-ztest -a -x $p/yaz-client; then
-           VERSION=`$p/yaz-client -V|awk '{print $3;}'|awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-            if test $VERSION -ge 4002052; then
-               F=$p/yaz-ztest
-               break
-            fi
+           VERSION=`$p/yaz-client -V 2>/dev/null|awk '{print $3;}'|awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+           if test -n "$VERSION"; then
+               if test $VERSION -ge 4002052; then
+                   F=$p/yaz-ztest
+                   break
+               fi
+           fi
        fi
     done
+    if test -z "$F"; then
+       for p in ${srcdir}/../../yaz ${srcdir}/../../yaz-*; do
+           if test -x $p/ztest/yaz-ztest; then
+               VERSION=`$p/ztest/yaz-ztest -V 2>/dev/null|awk '{print $3;}'|awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
+               if test -n "$VERSION"; then
+                   if test "$VERSION" -ge 4002052; then
+                       F=$p/ztest/yaz-ztest
+                       break
+                   fi
+               fi
+           fi
+       done
+    fi
     IFS=$oIFS
     if test -z "$F"; then
-       echo "yaz-ztest not found"
+       echo "Skipping ${PREFIX}: recent yaz-ztest not found"
        exit 0
     fi
     rm -f ztest.pid
@@ -98,17 +129,6 @@ if test "$ztest" = "true" ; then
     fi
 fi
 
-GET='$curl --silent --output $OUT2 "$f"'
-POST='$curl --silent --header "Content-Type: text/xml" --data-binary "@$postfile" --output $OUT2  "$f"'
-
-if test "$icu" = "true"; then
-    if ../src/pazpar2 -V |grep icu:enabled >/dev/null; then
-       :
-    else
-       SKIP_PAZPAR2=true
-    fi
-fi
-
 # remove log if starting pazpar2
 if [ -z "$SKIP_PAZPAR2" ] ; then
     rm -f ${PREFIX}_pazpar2.log
@@ -130,8 +150,9 @@ if test -n "$PAZPAR2_USE_VALGRIND"; then
     valgrind --num-callers=30 --show-reachable=yes --leak-check=full --log-file=$VALGRINDLOG ../src/pazpar2 -v $LEVELS -X -l ${PREFIX}_pazpar2.log -f ${CFG} >${PREFIX}_extra_pazpar2.log 2>&1 &
     PP2PID=$!
     sleep 6
+    WAIT=400
 elif test -n "$SKIP_PAZPAR2"; then
-    echo "Skipping pazpar2. Must already be running with correct config!!! "
+    echo "${PREFIX}: not starting Pazpar2 (should be running already)"
 else
     ../src/pazpar2 -v $LEVELS -d -X -l ${PREFIX}_pazpar2.log -f ${srcdir}/${CFG} >${PREFIX}_extra_pazpar2.log 2>&1 &
     PP2PID=$!
@@ -145,15 +166,18 @@ if [ -z "$SKIP_PAZPAR2" -a -z "$WAIT_PAZPAR2" ] ; then
        trap kill_pazpar2 INT
        trap kill_pazpar2 HUP
     else
-       echo "pazpar2 failed to start"
+       echo "${PREFIX}: pazpar2 failed to start"
        if test -f ztest.pid; then
            kill `cat ztest.pid`
-           rm ztest.pid
+           rm -f ztest.pid
        fi
        exit 1
     fi
 fi
 
+GET='$curl --silent --output $OUT2 "$f"'
+POST='$curl --silent --header "Content-Type: text/xml" --data-binary "@$postfile" --output $OUT2  "$f"'
+
 # Set to success by default.. Will be set to non-zero in case of failure
 code=0
 
@@ -180,20 +204,20 @@ for f in `cat ${srcdir}/${URLS}`; do
            fi
            rounds=`expr $rounds - 1`
            if test -f $OUT1 -a -z "$PAZPAR2_OVERRIDE_TEST"; then
-               if diff $OUT1 $OUT2 >$DIFF; then
+               if diff $OUT1 $OUT2 >$DIFF 2>/dev/null; then
                    rm $DIFF
                    rm $OUT2
                    rounds=0
                else
                    if test $rounds -eq 0; then
-                       echo "Test $testno: Failed. See $OUT1, $OUT2 and $DIFF"
+                       echo "${PREFIX} $testno: Failed. See $OUT1, $OUT2 and $DIFF"
                        echo "URL: $f"
                        code=1
                    fi
                fi
            else
                if test $rounds -eq 0; then
-                   echo "Test $testno: Making for the first time"
+                   echo "${PREFIX} $testno: Making for the first time"
                    mv $OUT2 $OUT1
                    code=1
                fi
@@ -221,9 +245,9 @@ for f in `cat ${srcdir}/${URLS}`; do
        else
            IFS="$oIFS"
            if test -n "$SLEEP_PID"; then
-               echo "Test $testno: pazpar2 terminated (timeout, probably)"
+               echo "${PREFIX} $testno: pazpar2 terminated (timeout, probably)"
            else
-               echo "Test $testno: pazpar2 died"
+               echo "${PREFIX} $testno: pazpar2 died"
            fi
            exit 1
        fi
@@ -242,7 +266,7 @@ fi
 # Kill programs
 if test -f ztest.pid; then
     kill `cat ztest.pid`
-    rm ztest.pid
+    rm -f ztest.pid
 fi
 
 if [ -z "$SKIP_PAZPAR2" ] ; then