mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-01 14:14:56 +00:00
virstor: basic functional test
Reviewed by: asomers, markj Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D45535
This commit is contained in:
parent
81ef0a89fc
commit
7affbeeab1
|
@ -19,6 +19,7 @@ TESTS_SUBDIRS+= shsec
|
|||
TESTS_SUBDIRS+= stripe
|
||||
TESTS_SUBDIRS+= union
|
||||
TESTS_SUBDIRS+= uzip
|
||||
TESTS_SUBDIRS+= virstor
|
||||
|
||||
${PACKAGE}FILES+= geom_subr.sh
|
||||
|
||||
|
|
9
tests/sys/geom/class/virstor/Makefile
Normal file
9
tests/sys/geom/class/virstor/Makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
PACKAGE= tests
|
||||
|
||||
TESTSDIR= ${TESTSBASE}/sys/geom/class/${.CURDIR:T}
|
||||
|
||||
ATF_TESTS_SH+= virstor_test
|
||||
|
||||
${PACKAGE}FILES+= conf.sh
|
||||
|
||||
.include <bsd.test.mk>
|
31
tests/sys/geom/class/virstor/conf.sh
Normal file
31
tests/sys/geom/class/virstor/conf.sh
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
|
||||
class="virstor"
|
||||
base=$(atf_get ident)
|
||||
TEST_VIRSTOR_DEVS_FILE="${TMPDIR}/test_virstor_devs.$(basename $0)"
|
||||
|
||||
gvirstor_dev_setup()
|
||||
{
|
||||
# Pick a random name and record it for cleanup.
|
||||
local vdevbase="$(mktemp -u virstor.XXXXXX)" || aft_fail "mktemp"
|
||||
echo "$vdevbase" >> "$TEST_VIRSTOR_DEVS_FILE"
|
||||
eval "${1}='${vdevbase}'"
|
||||
}
|
||||
|
||||
gvirstor_test_cleanup()
|
||||
{
|
||||
local vdevbase
|
||||
if [ -f "$TEST_VIRSTOR_DEVS_FILE" ]; then
|
||||
while read vdevbase; do
|
||||
if [ -c "/dev/$class/$vdevbase" ]; then
|
||||
echo "# Destroying test virstor device:" \
|
||||
"$vdevbase"
|
||||
gvirstor destroy "$vdevbase"
|
||||
fi
|
||||
done < "$TEST_VIRSTOR_DEVS_FILE"
|
||||
fi
|
||||
geom_test_cleanup
|
||||
}
|
||||
|
||||
ATF_TEST=true
|
||||
. `dirname $0`/../geom_subr.sh
|
73
tests/sys/geom/class/virstor/virstor_test.sh
Normal file
73
tests/sys/geom/class/virstor/virstor_test.sh
Normal file
|
@ -0,0 +1,73 @@
|
|||
#
|
||||
# Copyright (c) 2024 Dell Inc. or its subsidiaries. All Rights Reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
|
||||
. $(atf_get_srcdir)/conf.sh
|
||||
|
||||
atf_test_case basic cleanup
|
||||
basic_head()
|
||||
{
|
||||
atf_set "descr" "geom virstor basic functional test"
|
||||
atf_set "require.user" "root"
|
||||
}
|
||||
basic_body()
|
||||
{
|
||||
geom_atf_test_setup
|
||||
# Choose a virstor device name
|
||||
gvirstor_dev_setup name
|
||||
|
||||
# Create an md backing device and initialize it with junk
|
||||
psecsize=512
|
||||
attach_md md -t swap -S $psecsize -s 5M || atf_fail "attach_md"
|
||||
jot -b uninitialized 0 | dd status=none of=/dev/$md 2> /dev/null
|
||||
|
||||
# Create a virstor device
|
||||
vsizemb=64
|
||||
vsize=$((vsizemb * 1024 * 1024))
|
||||
atf_check -o ignore -e ignore \
|
||||
gvirstor label -v -s ${vsizemb}M -m 512 $name /dev/$md
|
||||
devwait
|
||||
vdev="/dev/$class/$name"
|
||||
|
||||
ssize=$(diskinfo $vdev | awk '{print $2}')
|
||||
atf_check_equal $psecsize $ssize
|
||||
|
||||
size=$(diskinfo $vdev | awk '{print $3}')
|
||||
atf_check_equal $vsize $size
|
||||
|
||||
# Write the first and last sectors of the virtual address space
|
||||
hasha=$(jot -b a 0 | head -c $ssize | sha1)
|
||||
hashz=$(jot -b z 0 | head -c $ssize | sha1)
|
||||
zsector=$((vsize / ssize - 1))
|
||||
jot -b a 0 | dd status=none of=$vdev bs=$ssize count=1 conv=notrunc
|
||||
jot -b z 0 | dd status=none of=$vdev bs=$ssize count=1 conv=notrunc \
|
||||
seek=$zsector
|
||||
|
||||
# Read back and compare
|
||||
hashx=$(dd status=none if=$vdev bs=$ssize count=1 | sha1)
|
||||
atf_check_equal $hasha $hashx
|
||||
hashx=$(dd status=none if=$vdev bs=$ssize count=1 skip=$zsector | sha1)
|
||||
atf_check_equal $hashz $hashx
|
||||
|
||||
# Destroy, then retaste and reload
|
||||
atf_check -o ignore gvirstor destroy $name
|
||||
true > /dev/$md
|
||||
devwait
|
||||
|
||||
# Read back and compare
|
||||
hashx=$(dd status=none if=$vdev bs=$ssize count=1 | sha1)
|
||||
atf_check_equal $hasha $hashx
|
||||
hashx=$(dd status=none if=$vdev bs=$ssize count=1 skip=$zsector | sha1)
|
||||
atf_check_equal $hashz $hashx
|
||||
}
|
||||
basic_cleanup()
|
||||
{
|
||||
gvirstor_test_cleanup
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case basic
|
||||
}
|
Loading…
Reference in a new issue