You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.2 KiB
132 lines
4.2 KiB
7 months ago
|
#!/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-unknown-criterion \
|
||
|
--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 -
|
||
|
|