1313535Sngie# $NetBSD: ffs_common.sh,v 1.3 2016/10/08 13:23:53 gson Exp $ 
2272343Sngie
3272343Sngiecreate_ffs()
4272343Sngie{
5272343Sngie	local endian=$1; shift
6272343Sngie	local vers=$1; shift
7272343Sngie	local type=$1; shift
8272343Sngie	local op;
9272343Sngie	if [ ${type} = "both" ]; then
10272343Sngie		op="-q user -q group"
11272343Sngie	else
12272343Sngie		op="-q ${type}"
13272343Sngie	fi
14272343Sngie	atf_check -o ignore -e ignore newfs ${op} \
15272343Sngie		-B ${endian} -O ${vers} -s 4000 -F ${IMG}
16272343Sngie}
17272343Sngie
18272343Sngiecreate_ffs_server()
19272343Sngie{	
20272343Sngie	local sarg=$1; shift
21272343Sngie	create_ffs $*
22272343Sngie	atf_check -o ignore -e ignore $(atf_get_srcdir)/h_ffs_server \
23272343Sngie		${sarg} ${IMG} ${RUMP_SERVER}
24272343Sngie}
25272343Sngie
26272343Sngierump_shutdown()
27272343Sngie{
28272343Sngie	for s in ${RUMP_SOCKETS_LIST}; do
29272343Sngie		atf_check -s exit:0 env RUMP_SERVER=unix://${s} rump.halt;
30272343Sngie	done
31272343Sngie# check that the quota inode creation didn't corrupt the filesystem
32272343Sngie	atf_check -s exit:0 -o "match:already clean" \
33272343Sngie		-o "match:Phase 6 - Check Quotas" \
34272343Sngie		fsck_ffs -nf -F ${IMG}
35272343Sngie}
36272343Sngie
37272343Sngie# from tests/ipf/h_common.sh via tests/sbin/resize_ffs
38272343Sngietest_case()
39272343Sngie{
40272343Sngie	local name="${1}"; shift
41272343Sngie	local check_function="${1}"; shift
42272343Sngie	local descr="${1}"; shift
43272343Sngie	
44272343Sngie	atf_test_case "${name}" cleanup
45272343Sngie
46272343Sngie	eval "${name}_head() { \
47272343Sngie		atf_set "descr" "${descr}"
48313535Sngie		atf_set "timeout" "120"
49272343Sngie	}"
50272343Sngie	eval "${name}_body() { \
51272343Sngie		RUMP_SOCKETS_LIST=\${RUMP_SOCKET}; \
52272343Sngie		export RUMP_SERVER=unix://\${RUMP_SOCKET}; \
53272343Sngie		${check_function} " "${@}" "; \
54272343Sngie	}"
55272343Sngie	eval "${name}_cleanup() { \
56272343Sngie		for s in \${RUMP_SOCKETS_LIST}; do \
57272343Sngie			export RUMP_SERVER=unix://\${s}; \
58272343Sngie			atf_check -s exit:1 -o ignore -e ignore rump.halt; \
59272343Sngie		done; \
60272343Sngie	}"
61272343Sngie	tests="${tests} ${name}"
62272343Sngie}
63272343Sngie
64272343Sngietest_case_root()
65272343Sngie{
66272343Sngie	local name="${1}"; shift
67272343Sngie	local check_function="${1}"; shift
68272343Sngie	local descr="${1}"; shift
69272343Sngie	
70272343Sngie	atf_test_case "${name}" cleanup
71272343Sngie
72272343Sngie	eval "${name}_head() { \
73272343Sngie		atf_set "descr" "${descr}"
74272343Sngie		atf_set "require.user" "root"
75272343Sngie		atf_set "timeout" "360"
76272343Sngie	}"
77272343Sngie	eval "${name}_body() { \
78272343Sngie		RUMP_SOCKETS_LIST=\${RUMP_SOCKET}; \
79272343Sngie		export RUMP_SERVER=unix://\${RUMP_SOCKET}; \
80272343Sngie		${check_function} " "${@}" "; \
81272343Sngie	}"
82272343Sngie	eval "${name}_cleanup() { \
83272343Sngie		for s in \${RUMP_SOCKETS_LIST}; do \
84272343Sngie			export RUMP_SERVER=unix://\${s}; \
85272343Sngie			atf_check -s exit:1 -o ignore -e ignore rump.halt; \
86272343Sngie		done; \
87272343Sngie	}"
88272343Sngie	tests="${tests} ${name}"
89272343Sngie}
90272343Sngie
91272343Sngieatf_init_test_cases()
92272343Sngie{
93272343Sngie	IMG=fsimage
94272343Sngie	DIR=target
95272343Sngie	RUMP_SOCKET=test;
96272343Sngie	for i in ${tests}; do
97272343Sngie		atf_add_test_case $i
98272343Sngie	done
99272343Sngie}
100