First Commit
This commit is contained in:
149
externals/cryptopp/TestScripts/cryptest-coverage.sh
vendored
Normal file
149
externals/cryptopp/TestScripts/cryptest-coverage.sh
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if ! command -v gcov > /dev/null; then
|
||||
echo "Please install gcov"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v lcov > /dev/null; then
|
||||
echo "Please install lcov"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Default make jobs
|
||||
MAKE_JOBS=${MAKE_JOBS:-4}
|
||||
|
||||
# Default temp directory
|
||||
if [ -z "${TMPDIR}" ];
|
||||
then
|
||||
if [ -d "${HOME}/tmp" ]; then
|
||||
TMPDIR="${HOME}/tmp"
|
||||
else
|
||||
TMPDIR="/tmp"
|
||||
fi
|
||||
fi
|
||||
|
||||
DEBUG_CXXFLAGS="-DDEBUG -DCRYPTOPP_COVERAGE=1 -g3 -O1 -coverage"
|
||||
NOASM_CXXFLAGS="-DNDEBUG -DCRYPTOPP_DISABLE_ASM -DCRYPTOPP_COVERAGE=1 -g3 -O1 -coverage"
|
||||
RELEASE_CXXFLAGS="-DNDEBUG -DCRYPTOPP_COVERAGE=1 -g3 -O1 -coverage"
|
||||
|
||||
# Clean old artifacts
|
||||
rm -rf TestCoverage/ >/dev/null
|
||||
make distclean >/dev/null
|
||||
|
||||
echo "**************************************************"
|
||||
echo "***** Baseline build *****"
|
||||
echo "**************************************************"
|
||||
|
||||
# The man page says to run a baseline, but the cryptest_base recipe
|
||||
# breaks things. Zeroing the counters seems to be the best we can do.
|
||||
if lcov --base-directory . --directory . --zerocounters;
|
||||
then
|
||||
echo
|
||||
echo "Baseline zero counters ok"
|
||||
echo
|
||||
else
|
||||
echo
|
||||
echo "Baseline zero counters failed"
|
||||
echo
|
||||
fi
|
||||
|
||||
#make clean > /dev/null
|
||||
#if ! make -j "${MAKE_JOBS}";
|
||||
#then
|
||||
# echo "Baseline build failed"
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
# Run test programs
|
||||
#./cryptest.exe v
|
||||
#./cryptest.exe tv all
|
||||
|
||||
# Create a baseline
|
||||
#lcov --base-directory . --directory . -i -c -o cryptest_base.info
|
||||
|
||||
echo "**************************************************"
|
||||
echo "***** Debug build *****"
|
||||
echo "**************************************************"
|
||||
|
||||
make clean > /dev/null
|
||||
if ! CXXFLAGS="${DEBUG_CXXFLAGS}" make -j "${MAKE_JOBS}";
|
||||
then
|
||||
echo "Debug build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run test programs
|
||||
./cryptest.exe v
|
||||
./cryptest.exe tv all
|
||||
|
||||
# Gather data
|
||||
lcov --base-directory . --directory . -c -o cryptest_debug.info
|
||||
|
||||
echo "**************************************************"
|
||||
echo "***** No ASM build *****"
|
||||
echo "**************************************************"
|
||||
|
||||
make clean > /dev/null
|
||||
if ! CXXFLAGS="${NOASM_CXXFLAGS}" make -j "${MAKE_JOBS}";
|
||||
then
|
||||
echo "No ASM build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run test programs
|
||||
./cryptest.exe v
|
||||
./cryptest.exe tv all
|
||||
|
||||
# Gather data
|
||||
lcov --base-directory . --directory . -c -o cryptest_noasm.info
|
||||
|
||||
echo "**************************************************"
|
||||
echo "***** Release build *****"
|
||||
echo "**************************************************"
|
||||
|
||||
make clean > /dev/null
|
||||
if ! CXXFLAGS="${RELEASE_CXXFLAGS}" make -j "${MAKE_JOBS}";
|
||||
then
|
||||
echo "Release build failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run test programs
|
||||
./cryptest.exe v
|
||||
./cryptest.exe tv all
|
||||
./cryptest.exe b 0.5
|
||||
|
||||
# Gather data
|
||||
lcov --base-directory . --directory . -c -o cryptest_release.info
|
||||
|
||||
echo "**************************************************"
|
||||
echo "***** HTML processing *****"
|
||||
echo "**************************************************"
|
||||
|
||||
if [ ! -e cryptest_debug.info ]; then
|
||||
echo "WARN: cryptest_debug.info does not exist"
|
||||
fi
|
||||
if [ ! -e cryptest_noasm.info ]; then
|
||||
echo "WARN: cryptest_noasm.info does not exist"
|
||||
fi
|
||||
if [ ! -e cryptest_release.info ]; then
|
||||
echo "WARN: cryptest_release.info does not exist"
|
||||
fi
|
||||
|
||||
# The man page says to run a baseline, but the cryptest_base recipe
|
||||
# breaks things. Zeroing the counters seems to be the best we can do.
|
||||
# --add-tracefile cryptest_base.info
|
||||
|
||||
lcov --add-tracefile cryptest_debug.info \
|
||||
--add-tracefile cryptest_noasm.info \
|
||||
--add-tracefile cryptest_release.info \
|
||||
--output-file cryptest_all.info
|
||||
|
||||
lcov --remove cryptest_all.info \
|
||||
'/usr/*' '*/adhoc*.*' '*/dlltest*.*' '*/fipstest*.*' '*/fips140*.*' '*/test*.*' \
|
||||
--output-file cryptest.info
|
||||
|
||||
genhtml -o TestCoverage/ -t "Crypto++ test coverage" --num-spaces 4 cryptest.info
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user