xref: /freebsd/sbin/swapon/tests/swapon_test.sh (revision 1ee33e3a578c35ff0e8ef5db87a8005f1f99546a)
1*1ee33e3aSRonald Klop# Copyright (c) 2025 Ronald Klop <ronald@FreeBSD.org>
2*1ee33e3aSRonald Klop#
3*1ee33e3aSRonald Klop# Redistribution and use in source and binary forms, with or without
4*1ee33e3aSRonald Klop# modification, are permitted provided that the following conditions
5*1ee33e3aSRonald Klop# are met:
6*1ee33e3aSRonald Klop# 1. Redistributions of source code must retain the above copyright
7*1ee33e3aSRonald Klop#    notice, this list of conditions and the following disclaimer.
8*1ee33e3aSRonald Klop# 2. Redistributions in binary form must reproduce the above copyright
9*1ee33e3aSRonald Klop#    notice, this list of conditions and the following disclaimer in the
10*1ee33e3aSRonald Klop#    documentation and/or other materials provided with the distribution.
11*1ee33e3aSRonald Klop#
12*1ee33e3aSRonald Klop# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
13*1ee33e3aSRonald Klop# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14*1ee33e3aSRonald Klop# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15*1ee33e3aSRonald Klop# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16*1ee33e3aSRonald Klop# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17*1ee33e3aSRonald Klop# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
18*1ee33e3aSRonald Klop# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
19*1ee33e3aSRonald Klop# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20*1ee33e3aSRonald Klop# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
21*1ee33e3aSRonald Klop# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
22*1ee33e3aSRonald Klop# SUCH DAMAGE.
23*1ee33e3aSRonald Klop#
24*1ee33e3aSRonald Klop#
25*1ee33e3aSRonald Klop
26*1ee33e3aSRonald Klopatf_test_case attach_mdX cleanup
27*1ee33e3aSRonald Klopattach_mdX_head()
28*1ee33e3aSRonald Klop{
29*1ee33e3aSRonald Klop	atf_set "descr" "mdX device should attach"
30*1ee33e3aSRonald Klop}
31*1ee33e3aSRonald Klopattach_mdX_body()
32*1ee33e3aSRonald Klop{
33*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
34*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
35*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo 'md3    none    swap    sw,file=swapfile  0       0'"
36*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md3 as swap device" -x "swapon -F fstab.out -a"
37*1ee33e3aSRonald Klop}
38*1ee33e3aSRonald Klopattach_mdX_cleanup()
39*1ee33e3aSRonald Klop{
40*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
41*1ee33e3aSRonald Klop}
42*1ee33e3aSRonald Klop
43*1ee33e3aSRonald Klop###
44*1ee33e3aSRonald Klopatf_test_case attach_dev_mdX cleanup
45*1ee33e3aSRonald Klopattach_dev_mdX_head()
46*1ee33e3aSRonald Klop{
47*1ee33e3aSRonald Klop	atf_set "descr" "/dev/mdX device should attach"
48*1ee33e3aSRonald Klop}
49*1ee33e3aSRonald Klopattach_dev_mdX_body()
50*1ee33e3aSRonald Klop{
51*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
52*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
53*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo '/dev/md3    none    swap    sw,file=swapfile  0       0'"
54*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md3 as swap device" -x "swapon -F fstab.out -a"
55*1ee33e3aSRonald Klop}
56*1ee33e3aSRonald Klopattach_dev_mdX_cleanup()
57*1ee33e3aSRonald Klop{
58*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
59*1ee33e3aSRonald Klop}
60*1ee33e3aSRonald Klop
61*1ee33e3aSRonald Klop###
62*1ee33e3aSRonald Klopatf_test_case attach_md cleanup
63*1ee33e3aSRonald Klopattach_md_head()
64*1ee33e3aSRonald Klop{
65*1ee33e3aSRonald Klop	atf_set "descr" "mdX device should attach"
66*1ee33e3aSRonald Klop}
67*1ee33e3aSRonald Klopattach_md_body()
68*1ee33e3aSRonald Klop{
69*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
70*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
71*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo 'md    none    swap    sw,file=swapfile  0       0'"
72*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md0 as swap device" -x "swapon -F fstab.out -a"
73*1ee33e3aSRonald Klop}
74*1ee33e3aSRonald Klopattach_md_cleanup()
75*1ee33e3aSRonald Klop{
76*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
77*1ee33e3aSRonald Klop}
78*1ee33e3aSRonald Klop
79*1ee33e3aSRonald Klop###
80*1ee33e3aSRonald Klopatf_test_case attach_dev_md cleanup
81*1ee33e3aSRonald Klopattach_dev_md_head()
82*1ee33e3aSRonald Klop{
83*1ee33e3aSRonald Klop	atf_set "descr" "/dev/md device should attach"
84*1ee33e3aSRonald Klop}
85*1ee33e3aSRonald Klopattach_dev_md_body()
86*1ee33e3aSRonald Klop{
87*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
88*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
89*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo '/dev/md    none    swap    sw,file=swapfile  0       0'"
90*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md0 as swap device" -x "swapon -F fstab.out -a"
91*1ee33e3aSRonald Klop}
92*1ee33e3aSRonald Klopattach_dev_md_cleanup()
93*1ee33e3aSRonald Klop{
94*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
95*1ee33e3aSRonald Klop}
96*1ee33e3aSRonald Klop
97*1ee33e3aSRonald Klop###
98*1ee33e3aSRonald Klopatf_test_case attach_mdX_eli cleanup
99*1ee33e3aSRonald Klopattach_mdX_eli_head()
100*1ee33e3aSRonald Klop{
101*1ee33e3aSRonald Klop	atf_set "descr" "mdX.eli device should attach"
102*1ee33e3aSRonald Klop}
103*1ee33e3aSRonald Klopattach_mdX_eli_body()
104*1ee33e3aSRonald Klop{
105*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
106*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
107*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo 'md3.eli    none    swap    sw,file=swapfile  0       0'"
108*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md3.eli as swap device" -x "swapon -F fstab.out -a"
109*1ee33e3aSRonald Klop}
110*1ee33e3aSRonald Klopattach_mdX_eli_cleanup()
111*1ee33e3aSRonald Klop{
112*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
113*1ee33e3aSRonald Klop}
114*1ee33e3aSRonald Klop
115*1ee33e3aSRonald Klop###
116*1ee33e3aSRonald Klopatf_test_case attach_dev_mdX_eli cleanup
117*1ee33e3aSRonald Klopattach_dev_mdX_eli_head()
118*1ee33e3aSRonald Klop{
119*1ee33e3aSRonald Klop	atf_set "descr" "/dev/mdX.eli device should attach"
120*1ee33e3aSRonald Klop}
121*1ee33e3aSRonald Klopattach_dev_mdX_eli_body()
122*1ee33e3aSRonald Klop{
123*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
124*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
125*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo '/dev/md3.eli    none    swap    sw,file=swapfile  0       0'"
126*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md3.eli as swap device" -x "swapon -F fstab.out -a"
127*1ee33e3aSRonald Klop}
128*1ee33e3aSRonald Klopattach_dev_mdX_eli_cleanup()
129*1ee33e3aSRonald Klop{
130*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
131*1ee33e3aSRonald Klop}
132*1ee33e3aSRonald Klop
133*1ee33e3aSRonald Klop###
134*1ee33e3aSRonald Klopatf_test_case attach_md_eli cleanup
135*1ee33e3aSRonald Klopattach_md_eli_head()
136*1ee33e3aSRonald Klop{
137*1ee33e3aSRonald Klop	atf_set "descr" "md.eli device should attach"
138*1ee33e3aSRonald Klop}
139*1ee33e3aSRonald Klopattach_md_eli_body()
140*1ee33e3aSRonald Klop{
141*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
142*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
143*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo 'md.eli    none    swap    sw,file=swapfile  0       0'"
144*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md0.eli as swap device" -x "swapon -F fstab.out -a"
145*1ee33e3aSRonald Klop}
146*1ee33e3aSRonald Klopattach_md_eli_cleanup()
147*1ee33e3aSRonald Klop{
148*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
149*1ee33e3aSRonald Klop}
150*1ee33e3aSRonald Klop
151*1ee33e3aSRonald Klop###
152*1ee33e3aSRonald Klopatf_test_case attach_dev_md_eli cleanup
153*1ee33e3aSRonald Klopattach_dev_md_eli_head()
154*1ee33e3aSRonald Klop{
155*1ee33e3aSRonald Klop	atf_set "descr" "/dev/md.eli device should attach"
156*1ee33e3aSRonald Klop}
157*1ee33e3aSRonald Klopattach_dev_md_eli_body()
158*1ee33e3aSRonald Klop{
159*1ee33e3aSRonald Klop	# if the swapfile is too small (like 1k) then mdconfig hangs looking up the md
160*1ee33e3aSRonald Klop	atf_check -s exit:0 -x "truncate -s 10k swapfile"
161*1ee33e3aSRonald Klop	atf_check -s exit:0 -o save:fstab.out -x "echo '/dev/md.eli    none    swap    sw,file=swapfile  0       0'"
162*1ee33e3aSRonald Klop	atf_check -s exit:0 -o match:"swapon: adding /dev/md0.eli as swap device" -x "swapon -F fstab.out -a"
163*1ee33e3aSRonald Klop}
164*1ee33e3aSRonald Klopattach_dev_md_eli_cleanup()
165*1ee33e3aSRonald Klop{
166*1ee33e3aSRonald Klop	swapoff -F fstab.out -a
167*1ee33e3aSRonald Klop}
168*1ee33e3aSRonald Klop
169*1ee33e3aSRonald Klop###
170*1ee33e3aSRonald Klopatf_init_test_cases()
171*1ee33e3aSRonald Klop{
172*1ee33e3aSRonald Klop	atf_add_test_case attach_mdX
173*1ee33e3aSRonald Klop	atf_add_test_case attach_dev_mdX
174*1ee33e3aSRonald Klop	atf_add_test_case attach_md
175*1ee33e3aSRonald Klop	atf_add_test_case attach_dev_md
176*1ee33e3aSRonald Klop
177*1ee33e3aSRonald Klop	atf_add_test_case attach_mdX_eli
178*1ee33e3aSRonald Klop	atf_add_test_case attach_dev_mdX_eli
179*1ee33e3aSRonald Klop	atf_add_test_case attach_md_eli
180*1ee33e3aSRonald Klop	atf_add_test_case attach_dev_md_eli
181*1ee33e3aSRonald Klop}
182