Merge 313_5 -> 313_6
authorZdeněk Šustr <sustr4@cesnet.cz>
Wed, 1 Apr 2009 14:11:03 +0000 (14:11 +0000)
committerZdeněk Šustr <sustr4@cesnet.cz>
Wed, 1 Apr 2009 14:11:03 +0000 (14:11 +0000)
org.glite.lb.ws-test/examples/ws_status_history_test.sh [new file with mode: 0755]

diff --git a/org.glite.lb.ws-test/examples/ws_status_history_test.sh b/org.glite.lb.ws-test/examples/ws_status_history_test.sh
new file mode 100755 (executable)
index 0000000..1e6f312
--- /dev/null
@@ -0,0 +1,85 @@
+#! /bin/bash
+
+#
+# bug #29165: Times in job status history downloaded from LB are schifted
+#
+# description: 
+#   Test compares returned history from:
+#    - official job status example (C API)
+#    - WS call (gsoap)
+#    - WS XML response message (gsoap)
+#
+# requirements:
+#   - stage area, default `pwd`
+#   - built WS LB server examples
+#   - gsoap-plugin in stage built with 'make DEBUG="-DDEBUG"'
+#   - running LB server, LB locallogger, and LB interlogger
+#   - proxy certificate for logging and querying
+#
+
+STAGE_LOCATION=${STAGE_LOCATION:-`pwd`}
+WS_EXAMPLES_LOCATION=${WS_EXAMPLES_LOCATION:-$STAGE_LOCATION/../org.glite.lb.server/build}
+LBSERVER=${LBSERVER:-`hostname -f`:9000}
+LBLOGGER=${LBLOGGER:-`hostname -f`:9002}
+
+script=$(EDG_WL_LOG_DESTINATION=$LBLOGGER $STAGE_LOCATION/examples/glite-lb-submitted.sh -m $LBSERVER 2>log | tail -n 1)
+eval $script
+test -z "$EDG_JOBID" && exit 2
+
+echo "jobid: $EDG_JOBID"
+EDG_WL_LOG_DESTINATION=$LBLOGGER $STAGE_LOCATION/examples/glite-lb-waiting.sh -j $EDG_JOBID 2>>log|| exit 3
+sleep 1
+EDG_WL_LOG_DESTINATION=$LBLOGGER $STAGE_LOCATION/examples/glite-lb-ready.sh -j $EDG_JOBID 2>>log|| exit 4
+sleep 1
+EDG_WL_LOG_DESTINATION=$LBLOGGER $STAGE_LOCATION/examples/glite-lb-done.sh -j $EDG_JOBID 2>>log|| exit 5
+sleep 1
+EDG_WL_LOG_DESTINATION=$LBLOGGER $STAGE_LOCATION/examples/glite-lb-cleared.sh -j $EDG_JOBID 2>>log|| exit 6
+sleep 1
+rm -f log
+
+# C API
+status="`TZ=C $STAGE_LOCATION/examples/glite-lb-job_status $EDG_JOBID`"
+if test x$(echo "$status" | grep '^state[ :]' | sed -e 's/^.*:[ ]*\(.*\)/\1/') != xCleared; then
+       echo "ERROR: Expected Cleared status of $EDG_JOBID"
+       exit 7
+fi
+echo "$status" | grep '^stateEnterTimes[ :]' -A 12 > hist-c.txt
+
+# WS call result
+rm -f RECV.log SENT.log TEST.log
+TZ=C $WS_EXAMPLES_LOCATION/ws_jobstat -j $EDG_JOBID | grep stateEnterTimes -A 12 > hist-ws.txt
+diff -u hist-c.txt hist-ws.txt
+ret1=$?
+if [ "$ret1" != "0" ]; then
+       echo "FAILED: WS and C API results differs"
+fi
+
+# WS XML message
+if [ ! -s "RECV.log" ]; then
+       echo "WARNING: RECV.log not found, WS/XML not compared"
+       exit $ret1
+fi
+echo "stateEnterTimes : " > hist-ws-recv.txt
+echo "     Undefined      - not available -" >> hist-ws-recv.txt
+grep '^[ \t]*<' RECV.log | xmllint --format - | grep -A3 '<stateEnterTimes>' | grep '<state>\|<time\>' | tr '\n' ' ' | sed -e 's/<\/time>/<\/time>\n/g' | while read statexml timexml; do
+       state=`echo $statexml | tr '\n' ' ' | sed -e 's/.*<state>\(.*\)<\/state>.*/\1/'`
+       time=`echo $timexml | tr '\n' ' ' | sed -e 's/.*<time>\(.*\)<\/time>.*/\1/'`
+       if [ x"$time" = x"1970-01-01T00:00:00Z" ]; then
+               timetxt="    - not available -"
+       else
+               timetxt=`TZ=C perl -e 'use POSIX; $ARGV[0] =~ /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z$/; print ctime(mktime($6, $5, $4, $3, $2 - 1, $1 - 1900, 0, 0, 0));' $time`
+       fi
+       printf "%14s  " $state; printf "$timetxt\n";
+done >> hist-ws-recv.txt
+diff -iu hist-c.txt hist-ws-recv.txt
+ret2=$?
+if [ "$ret2" != "0" ]; then
+       echo "FAILED: XML and C API results differs"
+fi
+
+if [ x"$ret1" = x"0" -a x"$ret2" = x"0" ]; then
+       echo "PASSED"
+       exit 0
+else
+       exit 1
+fi