mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-06 21:34:05 -05:00
78 lines
2.0 KiB
Bash
Executable File
78 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# dieharder does not support running a subset of its tests, so we'll check which ones are not good
|
|
# and ignore the output from those tests in the final log
|
|
|
|
set -e
|
|
|
|
DIEHARDER_RUN_LOG_FILE="dieharder_run.log"
|
|
|
|
bad_tests="$(dieharder -l | \
|
|
# select lines with the -d
|
|
grep -w '\-d' | \
|
|
# forget about the good tests
|
|
grep -v -i 'good' | \
|
|
# get the test id
|
|
cut -d ' ' -f 4 | \
|
|
# nice formatting
|
|
xargs)"
|
|
|
|
|
|
bad_test_filter=""
|
|
for bad_test in ${bad_tests}; do
|
|
bad_test_filter="${bad_test_filter:+${bad_test_filter}|}$(dieharder -d "${bad_test}" -t 1 -p 1 -D test_name | xargs)"
|
|
done
|
|
|
|
echo "The following tests will be ignored as they are marked as either 'suspect' or 'do not use': "
|
|
echo ""
|
|
echo "${bad_test_filter}"
|
|
echo ""
|
|
|
|
# by default we may have no pv just forward the input
|
|
pv="cat"
|
|
if which pv > /dev/null; then
|
|
pv="pv -t -a -b"
|
|
fi
|
|
|
|
rm -f "${DIEHARDER_RUN_LOG_FILE}"
|
|
|
|
# ignore potential errors and parse the log afterwards
|
|
set +e
|
|
|
|
# We are writing in both cases
|
|
# shellcheck disable=SC2094
|
|
./target/release/examples/generate 2>"${DIEHARDER_RUN_LOG_FILE}" | \
|
|
$pv | \
|
|
# -a: all tests
|
|
# -g 200: get random bytes from input
|
|
# -Y 1: disambiguate results, i.e. if a weak result appear check if it's a random failure/weakness
|
|
# -k 2: better maths formulas to determine some test statistics
|
|
dieharder -a -g 200 -Y 1 -k 2 | \
|
|
tee -a "${DIEHARDER_RUN_LOG_FILE}"
|
|
set -e
|
|
|
|
printf "\n\n"
|
|
|
|
cat "${DIEHARDER_RUN_LOG_FILE}"
|
|
|
|
if ! grep -q -i "failed" < "${DIEHARDER_RUN_LOG_FILE}"; then
|
|
echo "All tests passed!"
|
|
exit 0
|
|
fi
|
|
|
|
printf "\n\n"
|
|
|
|
failed_tests="$(grep -i "failed" < "${DIEHARDER_RUN_LOG_FILE}")"
|
|
true_failed_test="$(grep -i "failed" < "${DIEHARDER_RUN_LOG_FILE}" | { grep -v -E "${bad_test_filter}" || true; } | sed -z '$ s/\n$//')"
|
|
|
|
if [[ "${true_failed_test}" == "" ]]; then
|
|
echo "There were test failures, but the tests were either marked as 'suspect' or 'do not use'"
|
|
echo "${failed_tests}"
|
|
exit 0
|
|
fi
|
|
|
|
echo "The following tests failed:"
|
|
echo "${true_failed_test}"
|
|
|
|
exit 1
|