summaryrefslogtreecommitdiffstats
path: root/tools/coverage
diff options
context:
space:
mode:
authorKevin Rocard <kevinx.rocard@intel.com>2013-06-20 17:51:24 +0200
committerDavid Wagner <david.wagner@intel.com>2014-02-12 17:04:03 +0100
commite69c3936b743ec2d4df9c1ce44eb269fc6b980a0 (patch)
treef633a57fc24c2507c28c2aed1e8a349589f88ca1 /tools/coverage
parentffaf0a0f99bf41e36363a2e71845ff9861110737 (diff)
downloadexternal_parameter-framework-e69c3936b743ec2d4df9c1ce44eb269fc6b980a0.zip
external_parameter-framework-e69c3936b743ec2d4df9c1ce44eb269fc6b980a0.tar.gz
external_parameter-framework-e69c3936b743ec2d4df9c1ce44eb269fc6b980a0.tar.bz2
[coverage] Generate report from aplogs
BZ: 115218 To generate a domain coverage report, one need to order the aplog in chronological order, parse them with coverage.py, giving the right options and generate the html report. Do all of those tasks in a simple-to-use script. Command example: ./aplog2coverage.sh -d domains.xml -eRouteManager aplog* -f -o report.html Change-Id: I6640f988b20c7115af91757ed83aa8febbcbd31f Signed-off-by: Kevin Rocard <kevinx.rocard@intel.com> Reviewed-on: http://android.intel.com:8080/114668 Reviewed-by: cactus <cactus@intel.com> Reviewed-by: Gonzalve, Sebastien <sebastien.gonzalve@intel.com> Tested-by: Dixon, CharlesX <charlesx.dixon@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'tools/coverage')
-rwxr-xr-xtools/coverage/aplog2coverage.sh121
1 files changed, 121 insertions, 0 deletions
diff --git a/tools/coverage/aplog2coverage.sh b/tools/coverage/aplog2coverage.sh
new file mode 100755
index 0000000..c50e61c
--- /dev/null
+++ b/tools/coverage/aplog2coverage.sh
@@ -0,0 +1,121 @@
+#!/bin/bash
+
+# INTEL CONFIDENTIAL
+# Copyright 2013 Intel
+# Corporation All Rights Reserved.
+#
+# The source code contained or described herein and all documents related to
+# the source code ("Material") are owned by Intel Corporation or its suppliers
+# or licensors. Title to the Material remains with Intel Corporation or its
+# suppliers and licensors. The Material contains trade secrets and proprietary
+# and confidential information of Intel or its suppliers and licensors. The
+# Material is protected by worldwide copyright and trade secret laws and
+# treaty provisions. No part of the Material may be used, copied, reproduced,
+# modified, published, uploaded, posted, transmitted, distributed, or
+# disclosed in any way without Intels prior express written permission.
+#
+# No license under any patent, copyright, trade secret or other intellectual
+# property right is granted to or conferred upon you by disclosure or delivery
+# of the Materials, either expressly, by implication, inducement, estoppel or
+# otherwise. Any license under such intellectual property rights must be
+# express and approved by Intel in writing.
+
+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 -
+