Fix up concurrent test zpool setup and teardown
Set up zpools with a more unique name, stash the zpool name away in a file pointed to by `$ZPOOL_NAME_FILE` (which is relative to a per-testcase generated temporary directory), then remove the file based on `$ZPOOL_NAME_FILE` in the cleanup routines. This is a more concurrency-safe solution and will allow the testcases to be safely executed in parallel. Reviewed by: kevans, jtl Approved by: jtl (mentor) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D19024
This commit is contained in:
parent
0b0c50e1ad
commit
794022b04a
@ -26,6 +26,17 @@
|
||||
#
|
||||
# $FreeBSD$
|
||||
|
||||
ZPOOL_NAME_FILE=zpool_name
|
||||
get_zpool_name()
|
||||
{
|
||||
cat $ZPOOL_NAME_FILE
|
||||
}
|
||||
make_zpool_name()
|
||||
{
|
||||
mktemp -u bectl_test_XXXXXX > $ZPOOL_NAME_FILE
|
||||
get_zpool_name
|
||||
}
|
||||
|
||||
# Establishes a bectl_create zpool that can be used for some light testing; contains
|
||||
# a 'default' BE and not much else.
|
||||
bectl_create_setup()
|
||||
@ -34,6 +45,9 @@ bectl_create_setup()
|
||||
disk=$2
|
||||
mnt=$3
|
||||
|
||||
# Sanity check to make sure `make_zpool_name` succeeded
|
||||
atf_check test -n "$zpool"
|
||||
|
||||
kldload -n -q zfs || atf_skip "ZFS module not loaded on the current system"
|
||||
atf_check mkdir -p ${mnt}
|
||||
atf_check truncate -s 1G ${disk}
|
||||
@ -48,6 +62,9 @@ bectl_create_deep_setup()
|
||||
disk=$2
|
||||
mnt=$3
|
||||
|
||||
# Sanity check to make sure `make_zpool_name` succeeded
|
||||
atf_check test -n "$zpool"
|
||||
|
||||
bectl_create_setup ${zpool} ${disk} ${mnt}
|
||||
atf_check mkdir -p ${root}
|
||||
atf_check -o ignore bectl -r ${zpool}/ROOT mount default ${root}
|
||||
@ -60,8 +77,9 @@ bectl_create_deep_setup()
|
||||
bectl_cleanup()
|
||||
{
|
||||
zpool=$1
|
||||
|
||||
if zpool get health ${zpool} >/dev/null 2>&1; then
|
||||
if [ -z "$zpool" ]; then
|
||||
echo "Skipping cleanup; zpool not set up"
|
||||
elif zpool get health ${zpool} >/dev/null 2>&1; then
|
||||
zpool destroy -f ${zpool}
|
||||
fi
|
||||
}
|
||||
@ -76,7 +94,7 @@ bectl_create_head()
|
||||
bectl_create_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
|
||||
@ -89,8 +107,7 @@ bectl_create_body()
|
||||
}
|
||||
bectl_create_cleanup()
|
||||
{
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_test_case bectl_destroy cleanup
|
||||
@ -103,7 +120,7 @@ bectl_destroy_head()
|
||||
bectl_destroy_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
|
||||
@ -116,7 +133,7 @@ bectl_destroy_body()
|
||||
bectl_destroy_cleanup()
|
||||
{
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_test_case bectl_export_import cleanup
|
||||
@ -129,7 +146,7 @@ bectl_export_import_head()
|
||||
bectl_export_import_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
|
||||
@ -144,7 +161,7 @@ bectl_export_import_body()
|
||||
bectl_export_import_cleanup()
|
||||
{
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_test_case bectl_list cleanup
|
||||
@ -157,7 +174,7 @@ bectl_list_head()
|
||||
bectl_list_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
|
||||
@ -179,7 +196,7 @@ bectl_list_body()
|
||||
bectl_list_cleanup()
|
||||
{
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_test_case bectl_mount cleanup
|
||||
@ -192,7 +209,7 @@ bectl_mount_head()
|
||||
bectl_mount_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
root=${mount}/root
|
||||
@ -213,7 +230,7 @@ bectl_mount_body()
|
||||
bectl_mount_cleanup()
|
||||
{
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_test_case bectl_rename cleanup
|
||||
@ -226,7 +243,7 @@ bectl_rename_head()
|
||||
bectl_rename_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
|
||||
@ -239,7 +256,7 @@ bectl_rename_body()
|
||||
bectl_rename_cleanup()
|
||||
{
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_test_case bectl_jail cleanup
|
||||
@ -252,7 +269,7 @@ bectl_jail_head()
|
||||
bectl_jail_body()
|
||||
{
|
||||
cwd=$(realpath .)
|
||||
zpool=bectl_test
|
||||
zpool=$(make_zpool_name)
|
||||
disk=${cwd}/disk.img
|
||||
mount=${cwd}/mnt
|
||||
root=${mount}/root
|
||||
@ -327,7 +344,7 @@ bectl_jail_cleanup()
|
||||
jail -r ${jailid}
|
||||
done;
|
||||
|
||||
bectl_cleanup bectl_test
|
||||
bectl_cleanup $(get_zpool_name)
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
|
Loading…
Reference in New Issue
Block a user