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
#!/bin/bash
RESULTURL="$1"
BASELINEURL="$2"
PRNUMBER=$(date +%s)

fetch() {
  (
    export PATH=/bin/:/usr/bin/
    export PERL5LIB=
    export LD_LIBRARY_PATH=

    cern-get-sso-cookie -o cook --url $1
    for d in $(curl -L -s -k -b cook $1 | grep -oE '"[0-9]+*.[0-9]+_[^"]*"' | tr -d '"'); do
      for f in $(curl -L -s -k -b cook "$1/$d" | grep -oE '"DQM.*.root"' | tr -d '"'); do
        (echo "Fetching $d/$f..."; mkdir -p $d; cd $d; curl -O -L -s -k -b ../cook $1/$d/$f )
      done
    done
  )
}

if [[ -z $RESULTURL || -z $BASELINEURL ]]; then
  echo "Please provide a URL to 'Matrix Test Outputs', like 'https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-a20bd6/3666/runTheMatrix-results/', and a similar URL to use as the baseline, like 'https://cmssdt.cern.ch/SDT/jenkins-artifacts/ib-baseline-tests/CMSSW_11_0_X_2019-11-26-2300/slc7_amd64_gcc820/-GenuineIntel/matrix-results/'"
  echo "Requires cern-get-sso-cookie. This might only work *outside* a cmsenv."
  echo "Requires compareDQMOutput.py. This will only work *inside* a cmsenv."
  echo "You might need to run the script twice (before/after cmsenv) to get results."
  exit 1
fi

echo "Downloading PR files..."
mkdir -p pr
cd pr
fetch "$RESULTURL"
cd ..
echo "Downloading baseline files..."
mkdir -p base
cd base
fetch "$BASELINEURL"
cd ..

compareDQMOutput.py -b base/ -p pr/ -r "$CMSSW_VERSION"  -l "private/private#$PRNUMBER" -j12