QA validation macro and script
[u/mrichter/AliRoot.git] / test / QA / AnaQA.sh
1 #!/bin/sh
2
3 # AnaQA.sh
4
5 #
6 # Created by schutz on 30/09/08.
7 # Copyright 2008 CERN. All rights reserved.
8 macroname="AnaQA"
9 validateout=`dirname $0`
10 validatetime=`date`
11 validated="0";
12 if [ -z $validateout ]
13 then
14     validateout="."
15 fi
16
17 cd $validateout;
18 validateworkdir=`pwd`;
19
20 echo "*******************************************************" >> stdout;
21 echo "* AliRoot QA Validation Script V1.0                   *" >> stdout;
22 echo "* Time:    $validatetime " >> stdout;
23 echo "* Dir:     $validateout" >> stdout;
24 echo "* Workdir: $validateworkdir" >> stdout;
25 echo "* ----------------------------------------------------*" >> stdout;
26 detectorlist="ITS TPC TRD TOF PHOS HMPID EMCAL FMD ZDC T0 VZERO PMD ACORDE Global"
27 if [ $# -eq 0 ] ; then
28  echo "syntax: AnaQA.sh #runNumber"
29  exit 1
30 fi
31 if [ ! -f  ${macroname}.C ] ; then 
32  echo "* ########## Job not validated - no validation macro (${macroname}.C)  ###" >> stdout;
33  exit 2
34 fi 
35 run=$1
36 logfile=${macroname}_${run}.log
37 if [ -e $logfile ] ; then
38  rm $logfile
39 fi 
40 aliroot -b > $logfile <<EOF
41 .L ${macroname}.C+
42 ${macroname}($run)
43 EOF
44 if [ ! -f  $logfile ] ; then 
45  echo "* ########## Job not validated - no log file ($logfile)  ###" >> stdout;
46  exit 2
47 fi 
48 let error=0
49 declare -a array
50 for pb in `grep -i "Problem signalled" $logfile | awk '{print $1"_"$2"_"$NF}'` ; do
51  for det in detectorlist ; do
52   array[$error]=`echo $pb | awk '{ split($0, a, "_"); print a[1]" "a[3]" in "a[2]}'`
53   ((error++))
54  done 
55 done  
56 if [ "$error" = "0" ] ; then 
57  echo "* ----------------   Job Validated  ------------------*" >> stdout;
58 else 
59  errors=${#array[@]}
60  echo "* ########## Job not validated - number of errors: $errors ###" >> stdout;
61  for (( i=0;i<$errors;i++ )); do
62   echo $i-- ${array[${i}]} >> stdout;
63  done
64 fi
65 echo "* ----------------------------------------------------*" >> stdout;
66 echo "*******************************************************" >> stdout;