forked from SUSE/teuthology
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcov-analyze.sh
executable file
·51 lines (43 loc) · 1.47 KB
/
cov-analyze.sh
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
#!/bin/bash
set -e
usage () {
printf '%s: usage: %s -d WORKING_DIR -o OUT_BASENAME -t TEST_DIR\n' "$(basename "$0")" "$(basename "$0")" 1>&2
echo <<EOF
WORKING_DIR should contain the source, .gcno, and initial lcov files (as created by cov-init.sh)
TEST_DIR should contain the data archived from a teuthology test.
Example:
mkdir coverage
./cov-init.sh ~/teuthology_output/foo coverage
$0 -t ~/teuthology_output/foo -d coverage -o foo
EOF
exit 1
}
OUTPUT_BASENAME=
TEST_DIR=
COV_DIR=
while getopts "d:o:t:" flag
do
case $flag in
d) COV_DIR=$OPTARG;;
o) OUTPUT_BASENAME=$OPTARG;;
t) TEST_DIR=$OPTARG;;
*) usage;;
esac
done
shift $(($OPTIND - 1))
echo $OUTPUT_BASENAME
if [ -z "$OUTPUT_BASENAME" ] || [ -z "$TEST_DIR" ] || [ -z "$COV_DIR" ]; then
usage
fi
cp $COV_DIR/base.lcov "$COV_DIR/${OUTPUT_BASENAME}.lcov"
for remote in `ls $TEST_DIR/remote`; do
echo "processing coverage for $remote..."
cp $TEST_DIR/remote/$remote/coverage/*.gcda $COV_DIR/ceph/src
cp $TEST_DIR/remote/$remote/coverage/_libs/*.gcda $COV_DIR/ceph/src/.libs
lcov -d $COV_DIR/ceph/src -c -o "$COV_DIR/${remote}_full.lcov"
lcov -r "$COV_DIR/${remote}_full.lcov" /usr/include\* -o "$COV_DIR/${remote}.lcov"
lcov -a "$COV_DIR/${remote}.lcov" -a "$COV_DIR/${OUTPUT_BASENAME}.lcov" -o "$COV_DIR/${OUTPUT_BASENAME}_tmp.lcov"
mv "$COV_DIR/${OUTPUT_BASENAME}_tmp.lcov" "$COV_DIR/${OUTPUT_BASENAME}.lcov"
rm "$COV_DIR/${remote}_full.lcov"
find $COV_DIR/ceph/src -name '*.gcda' -type f -delete
done