| OLD | NEW | 
|---|
| 1 #!/bin/bash | 1 #!/bin/bash | 
| 2 | 2 | 
| 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be | 
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. | 
| 6 | 6 | 
| 7 # This script can be used by waterfall sheriffs to fetch the status | 7 # This script can be used by waterfall sheriffs to fetch the status | 
| 8 # of Valgrind bots on the memory waterfall and test if their local | 8 # of Valgrind bots on the memory waterfall and test if their local | 
| 9 # suppressions match the reports on the waterfall. | 9 # suppressions match the reports on the waterfall. | 
| 10 | 10 | 
| 11 set -e | 11 set -e | 
| 12 | 12 | 
| 13 THISDIR=$(dirname "${0}") | 13 THISDIR=$(dirname "${0}") | 
| 14 LOGS_DIR=$THISDIR/waterfall.tmp | 14 LOGS_DIR=$THISDIR/waterfall.tmp | 
| 15 | 15 | 
| 16 fetch_logs() { | 16 fetch_logs() { | 
| 17   # Fetch Valgrind logs from the waterfall {{{1 | 17   # Fetch Valgrind logs from the waterfall {{{1 | 
| 18 | 18 | 
| 19   WATERFALL_PAGE="http://build.chromium.org/buildbot/memory/builders" | 19   WATERFALL_PAGE="http://build.chromium.org/buildbot/memory/builders" | 
| 20 | 20 | 
| 21   rm -rf $LOGS_DIR # Delete old logs | 21   rm -rf "$LOGS_DIR" # Delete old logs | 
| 22   mkdir $LOGS_DIR | 22   mkdir "$LOGS_DIR" | 
| 23 | 23 | 
| 24   echo "Fetching the list of builders..." | 24   echo "Fetching the list of builders..." | 
| 25   wget $WATERFALL_PAGE -O $LOGS_DIR/builders -q | 25   wget $WATERFALL_PAGE -O "$LOGS_DIR/builders" -q | 
| 26   SLAVES=$(grep "<a href=\"builders\/" $LOGS_DIR/builders | \ | 26   SLAVES=$(grep "<a href=\"builders\/" "$LOGS_DIR/builders" | \ | 
| 27            sed "s/.*<a href=\"builders\///" | sed "s/\".*//" | \ | 27            sed "s/.*<a href=\"builders\///" | sed "s/\".*//" | \ | 
| 28            sort | uniq) | 28            sort | uniq) | 
| 29 | 29 | 
| 30   for S in $SLAVES | 30   for S in $SLAVES | 
| 31   do | 31   do | 
| 32     SLAVE_URL=$WATERFALL_PAGE/$S | 32     SLAVE_URL=$WATERFALL_PAGE/$S | 
| 33     SLAVE_NAME=$(echo $S | sed "s/%20/ /g" | sed "s/%28/(/g" | sed "s/%29/)/g") | 33     SLAVE_NAME=$(echo $S | sed "s/%20/ /g" | sed "s/%28/(/g" | sed "s/%29/)/g") | 
| 34     echo -n "Fetching builds by slave '${SLAVE_NAME}'" | 34     echo -n "Fetching builds by slave '${SLAVE_NAME}'" | 
| 35     wget $SLAVE_URL -O $LOGS_DIR/slave_${S} -q | 35     wget $SLAVE_URL -O "$LOGS_DIR/slave_${S}" -q | 
| 36 | 36 | 
| 37     # We speed up the 'fetch' step by skipping the builds/tests which succeeded. | 37     # We speed up the 'fetch' step by skipping the builds/tests which succeeded. | 
| 38     # TODO(timurrrr): OTOH, we won't be able to check | 38     # TODO(timurrrr): OTOH, we won't be able to check | 
| 39     # if some suppression is not used anymore. | 39     # if some suppression is not used anymore. | 
| 40     LIST_OF_BUILDS=$(grep "<a href=\"\.\./builders/.*/builds/[0-9]\+.*failed" \ | 40     LIST_OF_BUILDS=$(grep "<a href=\"\.\./builders/.*/builds/[0-9]\+.*failed" \ | 
| 41                      $LOGS_DIR/slave_$S | grep -v "failed compile" | \ | 41                      "$LOGS_DIR/slave_$S" | grep -v "failed compile" | \ | 
| 42                      sed "s/.*\/builds\///" | sed "s/\".*//" | head -n 2) | 42                      sed "s/.*\/builds\///" | sed "s/\".*//" | head -n 2) | 
| 43 | 43 | 
| 44     for BUILD in $LIST_OF_BUILDS | 44     for BUILD in $LIST_OF_BUILDS | 
| 45     do | 45     do | 
| 46       BUILD_RESULTS="$LOGS_DIR/slave_${S}_build_${BUILD}" | 46       BUILD_RESULTS="$LOGS_DIR/slave_${S}_build_${BUILD}" | 
| 47       wget $SLAVE_URL/builds/$BUILD -O $BUILD_RESULTS -q | 47       wget $SLAVE_URL/builds/$BUILD -O "$BUILD_RESULTS" -q | 
| 48       LIST_OF_TESTS=$(grep "<a href=\"[0-9]\+/steps/memory.*/logs/stdio\"" \ | 48       LIST_OF_TESTS=$(grep "<a href=\"[0-9]\+/steps/memory.*/logs/stdio\"" \ | 
| 49                       $BUILD_RESULTS | \ | 49                       "$BUILD_RESULTS" | \ | 
| 50                       sed "s/.*a href=\"//" | sed "s/\".*//") | 50                       sed "s/.*a href=\"//" | sed "s/\".*//") | 
| 51       for TEST in $LIST_OF_TESTS | 51       for TEST in $LIST_OF_TESTS | 
| 52       do | 52       do | 
| 53         REPORT_FILE=$(echo "report_${S}_$TEST" | sed "s/\/logs\/stdio//" | \ | 53         REPORT_FILE=$(echo "report_${S}_$TEST" | sed "s/\/logs\/stdio//" | \ | 
| 54                     sed "s/\/steps//" | sed "s/\//_/g") | 54                     sed "s/\/steps//" | sed "s/\//_/g") | 
| 55         echo -n "." | 55         echo -n "." | 
| 56         wget $SLAVE_URL/builds/$TEST -O $LOGS_DIR/$REPORT_FILE -q | 56         wget $SLAVE_URL/builds/$TEST -O "$LOGS_DIR/$REPORT_FILE" -q | 
| 57         echo $SLAVE_URL/builds/$TEST >> $LOGS_DIR/$REPORT_FILE | 57         echo $SLAVE_URL/builds/$TEST >> "$LOGS_DIR/$REPORT_FILE" | 
| 58       done | 58       done | 
| 59     done | 59     done | 
| 60     echo " DONE" | 60     echo " DONE" | 
| 61   done | 61   done | 
| 62   # }}} | 62   # }}} | 
| 63 } | 63 } | 
| 64 | 64 | 
| 65 match_suppressions() { | 65 match_suppressions() { | 
| 66   PYTHONPATH=$THISDIR/../python/google \ | 66   PYTHONPATH=$THISDIR/../python/google \ | 
| 67              python $THISDIR/test_suppressions.py $LOGS_DIR/report_* | 67              python "$THISDIR/test_suppressions.py" "$LOGS_DIR/report_"* | 
| 68 } | 68 } | 
| 69 | 69 | 
| 70 if [ "$1" == "fetch" ] | 70 if [ "$1" == "fetch" ] | 
| 71 then | 71 then | 
| 72   fetch_logs | 72   fetch_logs | 
| 73 elif [ "$1" == "match" ] | 73 elif [ "$1" == "match" ] | 
| 74 then | 74 then | 
| 75   match_suppressions | 75   match_suppressions | 
| 76 else | 76 else | 
| 77   THISNAME=$(basename "${0}") | 77   THISNAME=$(basename "${0}") | 
| 78   echo "Usage: $THISNAME fetch|match" | 78   echo "Usage: $THISNAME fetch|match" | 
| 79   echo "  fetch - Fetch Valgrind logs from the memory waterfall" | 79   echo "  fetch - Fetch Valgrind logs from the memory waterfall" | 
| 80   echo "  match - Test the local suppression files against the downloaded logs" | 80   echo "  match - Test the local suppression files against the downloaded logs" | 
| 81 fi | 81 fi | 
| OLD | NEW | 
|---|