svn commit: r327666 - head/tests/sys/geom/class/eli
Alan Somers
asomers at FreeBSD.org
Sun Jan 7 02:30:10 UTC 2018
Author: asomers
Date: Sun Jan 7 02:30:08 2018
New Revision: 327666
URL: https://svnweb.freebsd.org/changeset/base/327666
Log:
geli: fix parallel execution of tests
The trick is not to destroy an md(4) device during a test. That can create
a "double-free" situation, because we also destroy md devices during test
cleanup.
MFC after: 2 weeks
Modified:
head/tests/sys/geom/class/eli/conf.sh
head/tests/sys/geom/class/eli/init_test.sh
head/tests/sys/geom/class/eli/onetime_test.sh
Modified: head/tests/sys/geom/class/eli/conf.sh
==============================================================================
--- head/tests/sys/geom/class/eli/conf.sh Sun Jan 7 02:19:54 2018 (r327665)
+++ head/tests/sys/geom/class/eli/conf.sh Sun Jan 7 02:30:08 2018 (r327666)
@@ -4,6 +4,7 @@
class="eli"
base=$(atf_get ident)
[ -z "$base" ] && base=`basename $0` # for TAP compatibility
+MAX_SECSIZE=8192
TEST_MDS_FILE=md.devs
attach_md()
@@ -21,6 +22,11 @@ attach_md()
for_each_geli_config() {
func=$1
+ # Double the sector size to allow for the HMACs' storage space.
+ osecsize=$(( $MAX_SECSIZE * 2 ))
+ # geli needs 512B for the label.
+ bytes=`expr $osecsize \* $sectors + 512`b
+ md=$(attach_md -t malloc -s $bytes)
for cipher in aes-xts:128 aes-xts:256 \
aes-cbc:128 aes-cbc:192 aes-cbc:256 \
3des-cbc:192 \
@@ -33,16 +39,9 @@ for_each_geli_config() {
keylen=${cipher##*:}
for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 \
hmac/sha384 hmac/sha512; do
- for secsize in 512 1024 2048 4096 8192; do
- # Double the requested sector size to allow
- # for the HMACs' storage space.
- osecsize=$(( $secsize * 2 ))
- # geli needs 512B for the label.
- bytes=`expr $osecsize \* $sectors + 512`b
- md=$(attach_md -t malloc -s $bytes)
+ for secsize in 512 1024 2048 4096 $MAX_SECSIZE; do
${func} $cipher $aalgo $secsize
geli detach ${md} 2>/dev/null
- mdconfig -d -u ${md} 2>/dev/null
done
done
done
@@ -54,6 +53,9 @@ for_each_geli_config() {
for_each_geli_config_nointegrity() {
func=$1
+ # geli needs 512B for the label.
+ bytes=`expr $MAX_SECSIZE \* $sectors + 512`b
+ md=$(attach_md -t malloc -s $bytes)
for cipher in aes-xts:128 aes-xts:256 \
aes-cbc:128 aes-cbc:192 aes-cbc:256 \
3des-cbc:192 \
@@ -64,13 +66,9 @@ for_each_geli_config_nointegrity() {
camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
ealgo=${cipher%%:*}
keylen=${cipher##*:}
- for secsize in 512 1024 2048 4096 8192; do
- # geli needs 512B for the label.
- bytes=`expr $secsize \* $sectors + 512`b
- md=$(attach_md -t malloc -s $bytes)
+ for secsize in 512 1024 2048 4096 $MAX_SECSIZE; do
${func} $cipher $secsize
geli detach ${md} 2>/dev/null
- mdconfig -d -u ${md} 2>/dev/null
done
done
}
Modified: head/tests/sys/geom/class/eli/init_test.sh
==============================================================================
--- head/tests/sys/geom/class/eli/init_test.sh Sun Jan 7 02:19:54 2018 (r327665)
+++ head/tests/sys/geom/class/eli/init_test.sh Sun Jan 7 02:30:08 2018 (r327666)
@@ -9,19 +9,18 @@ init_test()
keylen=${cipher##*:}
atf_check -s exit:0 -e ignore \
- geli init -B none -e $ealgo -l $keylen -P -K keyfile -s $secsize ${md}
+ geli init -B none -e $ealgo -l $keylen -P -K keyfile
+ -s $secsize ${md}
atf_check geli attach -p -k keyfile ${md}
- secs=`diskinfo /dev/${md}.eli | awk '{print $4}'`
+ atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} \
+ status=none
- atf_check dd if=/dev/random of=rnd bs=${secsize} count=${secs} status=none
- atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${secs} status=none
-
- md_rnd=`dd if=rnd bs=${secsize} count=${secs} status=none | md5`
+ md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
- md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
+ md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
- md_edev=`dd if=/dev/${md} bs=${secsize} count=${secs} status=none | md5`
+ md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
if [ ${md_rnd} != ${md_ddev} ]; then
@@ -45,7 +44,8 @@ init_body()
sectors=32
atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none
- atf_check dd if=/dev/random of=rnd bs=8192 count=${sectors} status=none
+ atf_check dd if=/dev/random of=rnd bs=$MAX_SECSIZE count=${sectors} \
+ status=none
for_each_geli_config_nointegrity init_test
}
init_cleanup()
@@ -235,16 +235,16 @@ init_a_test()
ealgo=${cipher%%:*}
keylen=${cipher##*:}
- atf_check -s exit:0 -e ignore geli init -B none -a $aalgo -e $ealgo -l $keylen -P -K keyfile -s $secsize ${md}
+ atf_check -s exit:0 -e ignore \
+ geli init -B none -a $aalgo -e $ealgo -l $keylen -P -K keyfile \
+ -s $secsize ${md}
atf_check geli attach -p -k keyfile ${md}
- secs=`diskinfo /dev/${md}.eli | awk '{print $4}'`
+ atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none
- atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${secs} status=none
-
- md_rnd=`dd if=rnd bs=${secsize} count=${secs} status=none | md5`
+ md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
- md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${secs} status=none | md5`
+ md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
if [ ${md_rnd} != ${md_ddev} ]; then
@@ -265,7 +265,8 @@ init_a_body()
sectors=100
atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none
- atf_check dd if=/dev/random of=rnd bs=8192 count=${sectors} status=none
+ atf_check dd if=/dev/random of=rnd bs=$MAX_SECSIZE count=${sectors} \
+ status=none
for_each_geli_config init_a_test
true
}
@@ -348,7 +349,7 @@ init_i_P_body()
atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none
- atf_check -s exit:1 -e "match:Options -i and -P are mutually exclusive"\
+ atf_check -s not-exit:0 -e "match:Options -i and -P are mutually exclusive"\
geli init -B none -i 64 -P -K keyfile $md
}
init_i_P_cleanup()
Modified: head/tests/sys/geom/class/eli/onetime_test.sh
==============================================================================
--- head/tests/sys/geom/class/eli/onetime_test.sh Sun Jan 7 02:19:54 2018 (r327665)
+++ head/tests/sys/geom/class/eli/onetime_test.sh Sun Jan 7 02:30:08 2018 (r327666)
@@ -10,16 +10,14 @@ onetime_test()
atf_check -s exit:0 -o ignore -e ignore \
geli onetime -e $ealgo -l $keylen -s $secsize ${md}
- secs=`diskinfo /dev/${md}.eli | awk '{print $4}'`
+ atf_check dd if=/dev/random of=rnd bs=${secsize} count=${sectors} status=none
+ atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none
- atf_check dd if=/dev/random of=rnd bs=${secsize} count=${secs} status=none
- atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${secs} status=none
-
- md_rnd=`dd if=rnd bs=${secsize} count=${secs} status=none | md5`
+ md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
- md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${secs} status=none | md5`
+ md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
- md_edev=`dd if=/dev/${md} bs=${secsize} count=${secs} status=none | md5`
+ md_edev=`dd if=/dev/${md} bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
if [ ${md_rnd} != ${md_ddev} ]; then
@@ -41,6 +39,7 @@ onetime_body()
. $(atf_get_srcdir)/conf.sh
sectors=100
+ dd if=/dev/random of=rnd bs=${MAX_SECSIZE} count=${sectors} status=none
for_each_geli_config_nointegrity onetime_test
}
onetime_cleanup()
@@ -60,13 +59,11 @@ onetime_a_test()
atf_check -s exit:0 -o ignore -e ignore \
geli onetime -a $aalgo -e $ealgo -l $keylen -s $secsize ${md}
- secs=`diskinfo /dev/${md}.eli | awk '{print $4}'`
+ atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${sectors} status=none
- atf_check dd if=rnd of=/dev/${md}.eli bs=${secsize} count=${secs} status=none
-
- md_rnd=`dd if=rnd bs=${secsize} count=${secs} status=none | md5`
+ md_rnd=`dd if=rnd bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
- md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${secs} status=none | md5`
+ md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${sectors} status=none | md5`
atf_check_equal 0 $?
if [ ${md_rnd} != ${md_ddev} ]; then
More information about the svn-src-head
mailing list