Update test to work again
This commit is contained in:
parent
364af5a451
commit
559b903aa2
@ -57,10 +57,14 @@ $(METADATA): Makefile
|
|||||||
@echo "Requires: libgcrypt" >> $(METADATA)
|
@echo "Requires: libgcrypt" >> $(METADATA)
|
||||||
@echo "Requires: nfs-utils" >> $(METADATA)
|
@echo "Requires: nfs-utils" >> $(METADATA)
|
||||||
@echo "Requires: rpm-build" >> $(METADATA)
|
@echo "Requires: rpm-build" >> $(METADATA)
|
||||||
|
@echo "Requires: autoconf automake libtool" >> $(METADATA)
|
||||||
@echo "Requires: gawk" >> $(METADATA)
|
@echo "Requires: gawk" >> $(METADATA)
|
||||||
@echo "Requires: gcc-c++ fipscheck" >> $(METADATA)
|
@echo "Requires: gcc-c++" >> $(METADATA)
|
||||||
@echo "Requires: libgpg-error-devel wget" >> $(METADATA)
|
@echo "Requires: libgpg-error-devel" >> $(METADATA)
|
||||||
@echo "Requires: pkgconfig texinfo libselinux-utils" >> $(METADATA)
|
@echo "Requires: pkgconfig texinfo fipscheck libkcapi-fipscheck" >> $(METADATA)
|
||||||
|
@echo "Requires: crypto-policies-scripts" >> $(METADATA)
|
||||||
|
@echo "Requires: bc" >> $(METADATA)
|
||||||
|
@echo "RhtsRequires: library(distribution/fips)" >> $(METADATA)
|
||||||
@echo "Releases: -RHEL3 -RHEL4" >> $(METADATA)
|
@echo "Releases: -RHEL3 -RHEL4" >> $(METADATA)
|
||||||
@echo "Priority: Normal" >> $(METADATA)
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
@echo "Architectures: i386 x86_64 s390x ia64" >> $(METADATA)
|
@echo "Architectures: i386 x86_64 s390x ia64" >> $(METADATA)
|
||||||
|
@ -26,8 +26,6 @@
|
|||||||
#
|
#
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
# Include rhts environment
|
|
||||||
#. /usr/bin/rhts-environment.sh
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh
|
. /usr/share/beakerlib/beakerlib.sh
|
||||||
|
|
||||||
PACKAGE="libgcrypt"
|
PACKAGE="libgcrypt"
|
||||||
@ -35,36 +33,118 @@ PACKAGE="libgcrypt"
|
|||||||
rlJournalStart
|
rlJournalStart
|
||||||
|
|
||||||
rlPhaseStartSetup
|
rlPhaseStartSetup
|
||||||
|
rlImport distribution/fips || rlFail "FIPS library needed for some phases"
|
||||||
TmpDir=`mktemp -d`
|
TmpDir=`mktemp -d`
|
||||||
rlAssertRpm $PACKAGE
|
rlAssertRpm $PACKAGE
|
||||||
rlFileBackup --clean "/etc/gcrypt/fips_enabled"
|
rlRun "rlFileBackup --clean /etc/gcrypt/fips_enabled"
|
||||||
|
if [[ -r /etc/gcrypt/hwf.deny ]]; then
|
||||||
|
rlRun "rlFileBackup /etc/gcrypt/hwf.deny"
|
||||||
|
rlRun "rm -f /etc/gcrypt/hwf.deny"
|
||||||
|
fi
|
||||||
rlRun "pushd $TmpDir" 0
|
rlRun "pushd $TmpDir" 0
|
||||||
rlFetchSrcForInstalled $PACKAGE
|
rlRun "rlFetchSrcForInstalled $PACKAGE"
|
||||||
rlRun "rpm -ihv `ls *.rpm`" 0
|
rlRun "rpm -ihv `ls *.rpm`" 0
|
||||||
if grep '1' /proc/sys/crypto/fips_enabled; then
|
if grep '1' /proc/sys/crypto/fips_enabled; then
|
||||||
rlRun "echo '1' > /etc/gcrypt/fips_enabled" 0
|
rlRun "echo '1' > /etc/gcrypt/fips_enabled" 0
|
||||||
fi
|
fi
|
||||||
rlPhaseEnd
|
rlPhaseEnd
|
||||||
|
|
||||||
rlPhaseStartTest
|
rlPhaseStartTest "Package build"
|
||||||
TOPDIR=`rpm --eval %_topdir`
|
TOPDIR=`rpm --eval %_topdir`
|
||||||
rlRun "pushd $TOPDIR" 0
|
rlRun "pushd $TOPDIR" 0
|
||||||
rlRun "rm -rf BUILD/libgcrypt-*" 0-255
|
rlRun "rm -rf BUILD/libgcrypt-*" 0-255
|
||||||
rlRun "rpmbuild -vv -bc SPECS/libgcrypt.spec" 0
|
rlRun "rpmbuild -vv -bc SPECS/libgcrypt.spec" 0
|
||||||
rlRun "pushd BUILD/libgcrypt-*" 0
|
rlRun "pushd BUILD/libgcrypt-*" 0
|
||||||
rlRun "fipshmac src/.libs/libgcrypt.so.??" 0
|
rlRun "fipshmac src/.libs/libgcrypt.so.??" 0
|
||||||
rlRun "make check > $TmpDir/make_check.out" 0
|
rlRun "popd"
|
||||||
rlRun "popd" 0
|
rlRun "popd"
|
||||||
rlRun "popd" 0
|
|
||||||
rlRun "grep \"All [0-9]\+ tests passed\" $TmpDir/make_check.out" 0 \
|
|
||||||
"All tests passed"
|
|
||||||
rlRun "cat $TmpDir/make_check.out" 0
|
|
||||||
rlPhaseEnd
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest "Upstream testsuite"
|
||||||
|
rlRun "pushd $TOPDIR/BUILD/libgcrypt-*" 0
|
||||||
|
exp_fails=()
|
||||||
|
if [[ $fipsMode = 'enabled' ]]; then
|
||||||
|
if rlIsFedora 33; then
|
||||||
|
exp_fails+=("basic")
|
||||||
|
exp_fails+=("basic-disable-all-hwf")
|
||||||
|
exp_fails+=("t-kdf")
|
||||||
|
exp_fails+=("t-secmem")
|
||||||
|
elif rlIsFedora 34; then
|
||||||
|
exp_fails+=("basic")
|
||||||
|
exp_fails+=("basic-disable-all-hwf")
|
||||||
|
exp_fails+=("t-kdf")
|
||||||
|
exp_fails+=("t-secmem")
|
||||||
|
exp_fails+=("t-x448")
|
||||||
|
elif rlIsFedora 35; then # Fedora-35
|
||||||
|
exp_fails+=("curves")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rlRun "echo 'Expecting ${#exp_fails[@]} fails'"
|
||||||
|
exp_exitcode=0
|
||||||
|
if [[ ${#exp_fails[@]} -gt 0 ]]; then exp_exitcode=2; fi
|
||||||
|
rlRun "make check &> $TmpDir/make_check.out" $exp_exitcode
|
||||||
|
rlRun "grep ^FAIL: $TmpDir/make_check.out" 0,1 "Print fails"
|
||||||
|
if [[ ${#exp_fails[@]} -gt 0 ]]; then
|
||||||
|
for f in "${exp_fails[@]}"; do
|
||||||
|
rlAssertGrep "^FAIL: $f\$" $TmpDir/make_check.out
|
||||||
|
done
|
||||||
|
[[ $(grep -c '^FAIL:' $TmpDir/make_check.out) -eq ${#exp_fails[@]} ]] || rlFail "Unexpected fails present"
|
||||||
|
else
|
||||||
|
rlRun "grep \"All [0-9]\+ tests passed\" $TmpDir/make_check.out" 0 \
|
||||||
|
"All tests passed"
|
||||||
|
fi
|
||||||
|
rlRun "cat $TmpDir/make_check.out"
|
||||||
|
rlRun "popd"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
if ! (rlIsRHEL '<=8.4' || ([[ $fipsMode = "enabled" ]] && rlIsFedora '<37')); then
|
||||||
|
# (we are ~expecting to fix HW optimization problem around Fedora-37)
|
||||||
|
rlPhaseStartTest "Performance with HW optimizations disabled - bz1990059"
|
||||||
|
# we are gathering more samples, so that this test is robust in shared environments
|
||||||
|
N_SAMPLES=5
|
||||||
|
N_MEDIAN=$(echo "$N_SAMPLES/2+1" |bc)
|
||||||
|
HWF_DENY_FILE="/etc/gcrypt/hwf.deny"
|
||||||
|
# Disabling via cmdline arguments would need either handpicking
|
||||||
|
# all the algorithms (variant with ":"), or making "all" work.
|
||||||
|
# "--disable-hwf all" does not work: https://dev.gnupg.org/T5636
|
||||||
|
#dis_arg="--disable-hwf all"
|
||||||
|
dis_arg=""
|
||||||
|
|
||||||
|
for x in "cipher:aes256:CBC enc" "hash:sha256:SHA256" "mac:hmac_sha256:HMAC_SHA256"; do
|
||||||
|
alg_type=$(echo $x |cut -d: -f1)
|
||||||
|
algorithm=$(echo $x |cut -d: -f2)
|
||||||
|
alg_line=$(echo $x |cut -d: -f3)
|
||||||
|
rlRun "rm -f $algorithm.ena $algorithm.dis"
|
||||||
|
rlLogInfo "Performance measurements started ..."
|
||||||
|
for i in `seq 1 $N_SAMPLES`; do
|
||||||
|
# run with HW optimizations ENAbled
|
||||||
|
rm -f $HWF_DENY_FILE
|
||||||
|
$TOPDIR/BUILD/libgcrypt-*/tests/bench-slope $alg_type $algorithm |grep "$alg_line" >>$algorithm.ena
|
||||||
|
|
||||||
|
# run with HW optimizations DISabled
|
||||||
|
# this looks idiotic, but I wasn't able to make --disable-hwf work
|
||||||
|
echo "all" >$HWF_DENY_FILE
|
||||||
|
$TOPDIR/BUILD/libgcrypt-*/tests/bench-slope $dis_arg $alg_type $algorithm |grep "$alg_line" >>$algorithm.dis
|
||||||
|
done
|
||||||
|
rlLogInfo "Performance measurements finished"
|
||||||
|
rlRun "cat $algorithm.ena"
|
||||||
|
rlRun "cat $algorithm.dis"
|
||||||
|
dis=$(cat $algorithm.dis |cut -d'|' -f2 |awk '{ print $1 }' |sort -n |sed -n "$N_MEDIAN p")
|
||||||
|
ena=$(cat $algorithm.ena |cut -d'|' -f2 |awk '{ print $1 }' |sort -n |sed -n "$N_MEDIAN p")
|
||||||
|
rlRun "echo '$algorithm Time: disabled $dis enabled $ena'"
|
||||||
|
if (( $(echo "$dis > $ena" |bc -l) )); then
|
||||||
|
rlPass "HW optimizations work for $algorithm"
|
||||||
|
else
|
||||||
|
rlFail "HW optimizations DO NOT work for $algorithm"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
rlPhaseEnd
|
||||||
|
fi
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
rlPhaseStartCleanup
|
||||||
rlRun "popd" 0
|
rlRun "popd"
|
||||||
rlRun "rm -r $TmpDir" 0
|
rlRun "rm -r $TmpDir" 0
|
||||||
rlFileRestore
|
rlRun "rlFileRestore"
|
||||||
rlPhaseEnd
|
rlPhaseEnd
|
||||||
|
|
||||||
rlJournalPrintText
|
rlJournalPrintText
|
||||||
|
Loading…
Reference in New Issue
Block a user