Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#!/bin/bash

echo -e "\nverifyFrontier 1.4 - 2007, by Pietro M. Picca <Pietro.Picca@cern.ch>\n"
if [ $# -lt 1 ]
then
  echo "Please specify the configuration file name on the command line."
  echo -e "Syntax: ${0} filename.cfg\n"
  exit 1
fi
export FRONTIER_LOG_LEVEL=debug
export FRONTIER_LOG_FILE=${1%%.cfg}.log
export FRONTIER_LOG_FILE=./${FRONTIER_LOG_FILE##*/}
if [ ! -r ${1} ]
then
  echo -e "The file ${1} does not exist.\n"
  exit 2
fi
rm ${FRONTIER_LOG_FILE} >& /dev/null
echo "Please wait while processing ${1} file. It could take several minutes..."
eval `scramv1 runtime -sh`
cmsRun ${1} >& /dev/null
if [ -s ${FRONTIER_LOG_FILE} ]
then
  echo "List of Frontier databases, accounts and payloads involved while processing ${1} file:" >& ${FRONTIER_LOG_FILE%%.log}.sum
  gawk 'BEGIN {
          sep = " - "
          maxl = 0
          nqueries = 0
        }
        /GET/ {
          dbname = gensub(/.*:8000\/([^/]+)\/.*/, "\\1", "g")
        }
        /SELECT \"TOKEN\"/ {
          leaf = "Database name: " dbname sep gensub(/.*FROM \"([^"]+)\".* = .(.*).$/, "Account: \\1" sep "Payload: \\2", "g")
          leaves[leaf] = leaf
          l = length(gensub(/.* - (.*) - .*$/, "\\1", "g", leaf))
          if (l > maxl) maxl = l
        }
        /encoding request/ {
          nqueries++
        }
        END {
          prev = ""
          for (i = 1; i <= asort(leaves); i++) {
            split(leaves[i], items, sep)
            if (prev != items[1]) {
              print "\n" items[1]
              prev = items[1]
            }
            printf "%-" maxl "s      %s\n", items[2], items[3]
          }
          print "\nTotal number of queries: " nqueries
        }' ${FRONTIER_LOG_FILE} >> ${FRONTIER_LOG_FILE%%.log}.sum
  gawk -v i=0 '{ if (i++ > 0) print }' ${FRONTIER_LOG_FILE%%.log}.sum
  echo
else
  echo -e "The file ${1} is not set to use Frontier.\n"
  exit 3
fi
rm ${FRONTIER_LOG_FILE} >& /dev/null