svn commit: r311893 - in head: . tests/sys/geom/class/gate
Alan Somers
asomers at FreeBSD.org
Tue Jan 10 20:35:10 UTC 2017
Author: asomers
Date: Tue Jan 10 20:35:09 2017
New Revision: 311893
URL: https://svnweb.freebsd.org/changeset/base/311893
Log:
ATFify the geom gate tests.
This ensures their cleanup routines will be run even if they should timeout.
tests/sys/geom/class/gate/ggate_test.sh
tests/sys/geom/class/gate/Makefile
Add an ATF test with three testcases, one for each TAP test. Use
ATF-style cleanup functions, and convert sleeps to polling loops.
ObsoleteFiles.inc
tests/sys/geom/class/gate/conf.sh
tests/sys/geom/class/gate/1_test.sh
tests/sys/geom/class/gate/2_test.sh
tests/sys/geom/class/gate/3_test.sh
Delete TAP test files
Reviewed by: ngie
MFC after: 4 weeks
Sponsored by: Spectra Logic Corp
Differential Revision: https://reviews.freebsd.org/D8891
Added:
head/tests/sys/geom/class/gate/ggate_test.sh (contents, props changed)
Deleted:
head/tests/sys/geom/class/gate/1_test.sh
head/tests/sys/geom/class/gate/2_test.sh
head/tests/sys/geom/class/gate/3_test.sh
head/tests/sys/geom/class/gate/conf.sh
Modified:
head/ObsoleteFiles.inc
head/tests/sys/geom/class/gate/Makefile
Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc Tue Jan 10 20:16:16 2017 (r311892)
+++ head/ObsoleteFiles.inc Tue Jan 10 20:35:09 2017 (r311893)
@@ -38,6 +38,11 @@
# xargs -n1 | sort | uniq -d;
# done
+# 20170110: Four files from ggate tests consolidated into one
+OLD_FILES+=usr/tests/sys/geom/class/gate/1_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/2_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/3_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/conf.sh
# 20170103: libbsnmptools.so made into an INTERNALLIB
OLD_FILES+=usr/lib/libbsnmptools.a
OLD_FILES+=usr/lib/libbsnmptools_p.a
Modified: head/tests/sys/geom/class/gate/Makefile
==============================================================================
--- head/tests/sys/geom/class/gate/Makefile Tue Jan 10 20:16:16 2017 (r311892)
+++ head/tests/sys/geom/class/gate/Makefile Tue Jan 10 20:35:09 2017 (r311893)
@@ -4,14 +4,6 @@ PACKAGE= tests
TESTSDIR= ${TESTSBASE}/sys/geom/class/${.CURDIR:T}
-TAP_TESTS_SH+= 1_test
-TAP_TESTS_SH+= 2_test
-TAP_TESTS_SH+= 3_test
-
-${PACKAGE}FILES+= conf.sh
-
-.for t in ${TAP_TESTS_SH}
-TEST_METADATA.$t+= required_user="root"
-.endfor
+ATF_TESTS_SH+= ggate_test
.include <bsd.test.mk>
Added: head/tests/sys/geom/class/gate/ggate_test.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tests/sys/geom/class/gate/ggate_test.sh Tue Jan 10 20:35:09 2017 (r311893)
@@ -0,0 +1,193 @@
+# $FreeBSD$
+
+PIDFILE=ggated.pid
+PLAINFILES=plainfiles
+PORT=33080
+CONF=gg.exports
+RETRIES=16
+
+atf_test_case ggated cleanup
+ggated_head()
+{
+ atf_set "descr" "ggated can proxy geoms"
+ atf_set "require.progs" "ggatec ggated"
+ atf_set "require.user" "root"
+ atf_set "timeout" 60
+}
+
+ggated_body()
+{
+ us=$(alloc_ggate_dev)
+ work=$(alloc_md)
+ src=$(alloc_md)
+
+ dd if=/dev/random of=/dev/$work bs=1m count=1 conv=notrunc
+ dd if=/dev/random of=/dev/$src bs=1m count=1 conv=notrunc
+
+ echo $CONF >> $PLAINFILES
+ echo "127.0.0.1 RW /dev/$work" > $CONF
+
+ atf_check ggated -p $PORT -F $PIDFILE $CONF
+ for try in `jot $RETRIES`; do
+ ggatec create -p $PORT -u $us 127.0.0.1 /dev/$work && break
+ # wait for ggated to be ready
+ sleep 0.25
+ done
+ if [ "$try" -eq "$RETRIES" ]; then
+ atf_fail "ggatec create failed"
+ fi
+
+ for try in `jot $RETRIES`; do
+ dd if=/dev/${src} of=/dev/ggate${us} bs=1m count=1 conv=notrunc\
+ && break
+ # Wait for /dev/ggate${us} to be ready
+ sleep 0.25
+ done
+ if [ "$try" -eq "$RETRIES" ]; then
+ atf_fail "dd failed; /dev/ggate${us} isn't working"
+ fi
+
+ checksum /dev/$src /dev/$work
+}
+
+ggated_cleanup()
+{
+ common_cleanup
+}
+
+atf_test_case ggatel_file cleanup
+ggatel_file_head()
+{
+ atf_set "descr" "ggatel can proxy files"
+ atf_set "require.progs" "ggatel"
+ atf_set "require.user" "root"
+ atf_set "timeout" 15
+}
+
+ggatel_file_body()
+{
+ us=$(alloc_ggate_dev)
+
+ echo src work >> ${PLAINFILES}
+ dd if=/dev/random of=work bs=1m count=1
+ dd if=/dev/random of=src bs=1m count=1
+
+ atf_check ggatel create -u $us work
+
+ dd if=src of=/dev/ggate${us} bs=1m count=1 conv=notrunc
+
+ checksum src work
+}
+
+ggatel_file_cleanup()
+{
+ common_cleanup
+}
+
+atf_test_case ggatel_md cleanup
+ggatel_md_head()
+{
+ atf_set "descr" "ggatel can proxy files"
+ atf_set "require.progs" "ggatel"
+ atf_set "require.user" "root"
+ atf_set "timeout" 15
+}
+
+ggatel_md_body()
+{
+ us=$(alloc_ggate_dev)
+ work=$(alloc_md)
+ src=$(alloc_md)
+
+ dd if=/dev/random of=$work bs=1m count=1 conv=notrunc
+ dd if=/dev/random of=$src bs=1m count=1 conv=notrunc
+
+ atf_check ggatel create -u $us /dev/$work
+
+ dd if=/dev/$src of=/dev/ggate${us} bs=1m count=1 conv=notrunc
+
+ checksum /dev/$src /dev/$work
+}
+
+ggatel_md_cleanup()
+{
+ common_cleanup
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case ggated
+ atf_add_test_case ggatel_file
+ atf_add_test_case ggatel_md
+}
+
+alloc_ggate_dev()
+{
+ local us
+
+ us=0
+ while [ -c /dev/ggate${us} ]; do
+ : $(( us += 1 ))
+ done
+ echo ${us} > ggate.devs
+ echo ${us}
+}
+
+alloc_md()
+{
+ local md
+
+ md=$(mdconfig -a -t malloc -s 1M) || \
+ atf_fail "failed to allocate md device"
+ echo ${md} >> md.devs
+ echo ${md}
+}
+
+checksum()
+{
+ local src work
+ src=$1
+ work=$2
+
+ src_checksum=$(md5 -q $src)
+ work_checksum=$(md5 -q $work)
+
+ if [ "$work_checksum" != "$src_checksum" ]; then
+ atf_fail "work md5 checksum didn't match"
+ fi
+
+ ggate_checksum=$(md5 -q /dev/ggate${us})
+ if [ "$ggate_checksum" != "$src_checksum" ]; then
+ atf_fail "ggate md5 checksum didn't match"
+ fi
+}
+
+common_cleanup()
+{
+ if [ -f "ggate.devs" ]; then
+ while read test_ggate; do
+ ggatec destroy -f -u $test_ggate >/dev/null
+ done < ggate.devs
+ rm ggate.devs
+ fi
+
+ if [ -f "$PIDFILE" ]; then
+ pkill -F "$PIDFILE"
+ rm $PIDFILE
+ fi
+
+ if [ -f "PLAINFILES" ]; then
+ while read f; do
+ rm -f ${f}
+ done < ${PLAINFILES}
+ rm ${PLAINFILES}
+ fi
+
+ if [ -f "md.devs" ]; then
+ while read test_md; do
+ mdconfig -d -u $test_md 2>/dev/null
+ done < md.devs
+ rm md.devs
+ fi
+ true
+}
More information about the svn-src-head
mailing list