| #!/bin/bash |
| |
| # Copyright (c) 2011-2014, Intel Corporation |
| # All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without modification, |
| # are permitted provided that the following conditions are met: |
| # |
| # 1. Redistributions of source code must retain the above copyright notice, this |
| # list of conditions and the following disclaimer. |
| # |
| # 2. Redistributions in binary form must reproduce the above copyright notice, |
| # this list of conditions and the following disclaimer in the documentation and/or |
| # other materials provided with the distribution. |
| # |
| # 3. Neither the name of the copyright holder nor the names of its contributors |
| # may be used to endorse or promote products derived from this software without |
| # specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
| # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| |
| set -euo pipefail |
| |
| xml_report_generation="$(dirname $0)/coverage.py" |
| xsl_report_formator="$(dirname $0)/coverage.xsl" |
| |
| help () { |
| echo "Usage: $0: [OPTION]... [LOGS_FILE]..." |
| echo "Generate domain coverage report from aplogs." |
| echo |
| echo "Supported options: |
| -h, --help Display this help |
| -d, --domains The domain xml file |
| -o, --ouput Output the report to a file instead of stdout |
| -e, --regexp A regex to filter (egrep) logs in order to keep only the PFW log lines |
| -f, --force Force log parser to continue on ignorable errors |
| -p, --parser_option Options to apply to the log parser" |
| echo |
| echo 'FIXME: Having more than one dot (".") in aplog paths is not supported.' |
| echo " - OK: log/aplog.12" |
| echo " - KO: ../aplog.12" |
| } |
| |
| # Default values |
| outputFile="-" |
| coverage_report_generator_ignorable_errors="\ |
| --ignore-incoherent-criterion-state \ |
| --ignore-ineligible-configuration-application" |
| coverage_report_generator_options="" |
| |
| # Parse command line arguments |
| ARGS="$(getopt --options "hd:o:e:p:f" \ |
| --longoptions "help,domains:,ouput:,regexp:,parser_option:,force" \ |
| --name "$0" -- "$@" )" |
| |
| eval set -- "$ARGS" |
| |
| |
| while true; |
| do |
| case "$1" in |
| -h|--help) |
| shift |
| help |
| exit 0 |
| ;; |
| -d|--domains) |
| shift |
| domainsFile="$1" |
| shift |
| ;; |
| -o|--output) |
| shift |
| outputFile="$1" |
| shift |
| ;; |
| -e|--regex) |
| shift |
| filterRegex="$1" |
| shift |
| ;; |
| -p|--parser_option) |
| shift |
| coverage_report_generator_options+="$1 " |
| shift |
| ;; |
| -f|--force) |
| shift |
| coverage_report_generator_options+="$coverage_report_generator_ignorable_errors " |
| ;; |
| --) |
| shift |
| break |
| ;; |
| esac |
| done |
| |
| if ! test "${domainsFile:-}" |
| then |
| echo "Please provide a xml domain file." |
| exit 2 |
| fi |
| |
| if ! test "${filterRegex:-}" |
| then |
| echo "Please provide a regex to filter log." |
| echo "Other PFW instances log lines must not be matched by this regex." |
| exit 3 |
| fi |
| |
| printf "%s\0" "$@" | |
| # Sort aplogs in chronological order |
| sort --key=2 --field-separator=. --numeric-sort --zero-terminated --reverse | |
| # Filter log to leave only PFW log lines |
| xargs --null grep --extended-regexp "$filterRegex" | |
| # Generate the xml report |
| $xml_report_generation --xml $coverage_report_generator_options "$domainsFile" | |
| # Generate the html report |
| xsltproc --output "$outputFile" $xsl_report_formator - |
| |