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