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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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 -
|