t_nullmnt.sh revision 1.9
1# find where everything lives
2
3curdir=$(pwd)
4helper=$(atf_get_srcdir)/h_nullmnt
5
6# helper function to check for kernel support
7have_nullfs_support()
8{
9	for t in $( sysctl -n vfs.generic.fstypes )
10	do
11		case "$t" in
12		  null)	return 0;;
13		esac
14	done
15
16	return 1
17}
18
19# common test body
20#    $1 = directory of file to monitor
21#    $2 = directory of file to update/modify
22
23nullmnt_common()
24{
25	if ! have_nullfs_support; then
26		atf_skip "nullfs not supported"
27	fi
28
29	mkdir ${curdir}/lower_dir
30	mkdir ${curdir}/upper_dir
31	mount -t null ${curdir}/lower_dir ${curdir}/upper_dir || \
32		atf_fail "could not mount nullfs"
33	rm -f ${curdir}/lower_dir/afile
34	touch ${curdir}/lower_dir/afile
35
36	atf_check -e ignore -o ignore -s exit:0		\
37		${helper} ${curdir}/${1}/afile ${curdir}/${2}/afile
38}
39
40nullmnt_common_cleanup()
41{
42	curdir=$(pwd)
43	umount ${curdir}/upper_dir
44	rm -rf ${curdir}/lower_dir ${curdir}/upper_dir
45}
46
47atf_test_case nullmnt_upper_lower cleanup
48nullmnt_upper_lower_head()
49{
50	atf_set "descr" "ensure upper fs events seen on lower fs"
51	atf_set "require.user" "root"
52}
53nullmnt_upper_lower_body()
54{
55	nullmnt_common lower_dir upper_dir
56} 
57nullmnt_upper_lower_cleanup()
58{
59	nullmnt_common_cleanup
60}
61
62atf_test_case nullmnt_upper_upper cleanup
63nullmnt_upper_upper_head()
64{
65	atf_set "descr" "ensure upper fs events seen on upper fs"
66	atf_set "require.user" "root"
67}
68nullmnt_upper_upper_body()
69{
70	nullmnt_common upper_dir upper_dir
71} 
72nullmnt_upper_upper_cleanup()
73{
74	nullmnt_common_cleanup
75}
76atf_test_case nullmnt_lower_upper cleanup
77nullmnt_lower_upper_head()
78{
79	atf_set "descr" "ensure lower fs events seen on upper fs"
80	atf_set "require.user" "root"
81}
82nullmnt_lower_upper_body()
83{
84	nullmnt_common upper_dir lower_dir
85} 
86nullmnt_lower_upper_cleanup()
87{
88	nullmnt_common_cleanup
89}
90
91atf_test_case nullmnt_lower_lower cleanup
92nullmnt_lower_lower_head()
93{
94	atf_set "descr" "ensure lower fs events seen on lower fs"
95	atf_set "require.user" "root"
96}
97nullmnt_lower_lower_body()
98{
99	nullmnt_common lower_dir lower_dir
100} 
101nullmnt_lower_lower_cleanup()
102{
103	nullmnt_common_cleanup
104}
105
106atf_init_test_cases()
107{
108	atf_add_test_case nullmnt_upper_upper
109	atf_add_test_case nullmnt_upper_lower
110	atf_add_test_case nullmnt_lower_upper
111	atf_add_test_case nullmnt_lower_lower
112}
113