Update existing test cases and add a couple more:

- PR bin/44177 is fixed
- test grow/shrink on a ffsv1 with 64k blocksize, which was broken until
  recently
- make sure the partial cylinder left over is big enough so it doesn't
  get thrown away now that resize_ffs properly uses the last cyl.

XXX TODO:  add tests which ensure data integrity.
This commit is contained in:
riz 2010-12-02 22:03:23 +00:00
parent 9f2c8ccc2b
commit 07bc982d01
1 changed files with 87 additions and 18 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: t_resize_ffs.sh,v 1.1 2010/11/30 23:17:27 riz Exp $
# $NetBSD: t_resize_ffs.sh,v 1.2 2010/12/02 22:03:23 riz Exp $
#
# Copyright (c) 2010 The NetBSD Foundation, Inc.
# All rights reserved.
@ -33,13 +33,14 @@ VND=vnd0
# misc routines
atf_test_case grow cleanup
grow_head()
atf_test_case grow_ffsv1_partial_cg cleanup
grow_ffsv1_partial_cg_head()
{
atf_set "descr" "Checks successful fs growth"
atf_set "descr" "Checks successful ffsv1 growth by less" \
"than a cylinder group"
atf_set "require.user" "root"
}
grow_body()
grow_ffsv1_partial_cg_body()
{
cat >disktab <<EOF
floppy288|2.88MB 3.5in Extra High Density Floppy:\
@ -55,24 +56,92 @@ EOF
atf_check -o ignore -e ignore vnconfig -v ${VND} ${IMG}
atf_check -o ignore -e ignore disklabel -f disktab -rw ${VND} floppy288
# resize_ffs only supports ffsv1 at the moment
atf_check -o ignore -e ignore newfs -V1 -s 3000 /dev/r${VND}a
atf_check -o ignore -e ignore newfs -V1 -s 4000 /dev/r${VND}a
# grow the fs to the full partition size (5760)
atf_check -s exit:0 resize_ffs -y /dev/r${VND}a
atf_check -s exit:0 -o ignore fsck -f -n /dev/r${VND}a
}
grow_cleanup()
grow_ffsv1_partial_cg_cleanup()
{
vnconfig -u ${VND}
}
atf_test_case shrink cleanup
shrink_head()
atf_test_case grow_ffsv1_64k cleanup
grow_ffsv1_64k()
{
atf_set "descr" "Checks successful fs shrinkage"
atf_set "descr" "Checks successful ffsv1 growth with 64k blocksize"
atf_set "require.user" "root"
}
shrink_body()
grow_ffsv1_64k_body()
{
cat >disktab <<EOF
disk64M|64MB test disk:\
:ty=test:se#512:nt#64:ns#32:nc#64:\
:pa#131072:oa#0:ba#65536:fa#8192:ta=4.2BSD:\
:pc#131072:oc#0:\
:pd#131072:od#0:
EOF
echo "***resize_ffs grow 64k block test"
atf_check -o ignore -e ignore dd if=/dev/zero of=${IMG} count=131072
atf_check -o ignore -e ignore vnconfig -v ${VND} ${IMG}
atf_check -o ignore -e ignore disklabel -f disktab -rw ${VND} disk64M
atf_check -o ignore -e ignore newfs -V1 -b 65536 -f 8192 \
-s 32768 /dev/r${VND}a
# grow the fs to the full partition size (131072)
atf_check -s exit:0 resize_ffs -y /dev/r${VND}a
atf_check -s exit:0 -o ignore fsck -f -n /dev/r${VND}a
atf_check -o match:'size[[:space:]]*8192' dumpfs /dev/r${VND}a
}
grow_ffsv1_64k_cleanup()
{
vnconfig -u ${VND}
}
atf_test_case shrink_ffsv1_64k cleanup
shrink_ffsv1_64k()
{
atf_set "descr" "Checks successful ffsv1 shrinkage with 64k blocksize"
atf_set "require.user" "root"
}
shrink_ffsv1_64k_body()
{
cat >disktab <<EOF
disk64M|64MB test disk:\
:ty=test:se#512:nt#64:ns#32:nc#64:\
:pa#131072:oa#0:ba#65536:fa#8192:ta=4.2BSD:\
:pc#131072:oc#0:\
:pd#131072:od#0:
EOF
echo "***resize_ffs shrink 64k block test"
atf_check -o ignore -e ignore dd if=/dev/zero of=${IMG} count=131072
atf_check -o ignore -e ignore vnconfig -v ${VND} ${IMG}
atf_check -o ignore -e ignore disklabel -f disktab -rw ${VND} disk64M
atf_check -o ignore -e ignore newfs -V1 -b 65536 -f 8192 /dev/r${VND}a
# shrink it to half size
atf_check -s exit:0 resize_ffs -y -s 65536 /dev/r${VND}a
atf_check -s exit:0 -o ignore fsck -f -n /dev/r${VND}a
atf_check -o match:'size[[:space:]]*4096' dumpfs /dev/r${VND}a
}
shrink_ffsv1_64k_cleanup()
{
vnconfig -u ${VND}
}
atf_test_case shrink_ffsv1_partial_cg cleanup
shrink_ffsv1_partial_cg_head()
{
atf_set "descr" "Checks successful shrinkage of ffsv1 by" \
"less than a cylinder group"
atf_set "require.user" "root"
}
shrink_ffsv1_partial_cg_body()
{
cat >disktab <<EOF
floppy288|2.88MB 3.5in Extra High Density Floppy:\
@ -82,27 +151,27 @@ floppy288|2.88MB 3.5in Extra High Density Floppy:\
:pc#5760:oc#0:
EOF
echo "*** resize_ffs shrinkage test"
echo "*** resize_ffs shrinkage partial cg test"
atf_check -o ignore -e ignore dd if=/dev/zero of=${IMG} count=5860
atf_check -o ignore -e ignore vnconfig -v ${VND} ${IMG}
atf_check -o ignore -e ignore disklabel -f disktab -rw ${VND} floppy288
# resize_ffs only supports ffsv1 at the moment
atf_check -o ignore -e ignore newfs -V1 /dev/r${VND}a
# shrink the fs to something smaller. Would be better to have
# data in there, but one step at a time
atf_check -s exit:0 resize_ffs -s 3000 -y /dev/r${VND}a
atf_expect_fail "PR bin/44177"
atf_check -s exit:0 resize_ffs -s 4000 -y /dev/r${VND}a
atf_check -s exit:0 -o ignore fsck -f -n /dev/r${VND}a
}
shrink_cleanup()
shrink_ffsv1_partial_cg_cleanup()
{
vnconfig -u ${VND}
}
atf_init_test_cases()
{
atf_add_test_case grow
atf_add_test_case shrink
atf_add_test_case grow_ffsv1_partial_cg
atf_add_test_case grow_ffsv1_64k
atf_add_test_case shrink_ffsv1_partial_cg
atf_add_test_case shrink_ffsv1_64k
}