109d98641SEnji Cooper#!/bin/sh 209d98641SEnji Cooper# $FreeBSD$ 309d98641SEnji Cooper 4*a9ebbf33SAlan SomersTEST_MDS_FILE="${TMPDIR}/test_mds.$(basename $0)" 5cf551b8aSAlan Somers 609d98641SEnji Cooperdevwait() 709d98641SEnji Cooper{ 809d98641SEnji Cooper while :; do 909d98641SEnji Cooper if [ -c /dev/${class}/${name} ]; then 1009d98641SEnji Cooper return 1109d98641SEnji Cooper fi 1209d98641SEnji Cooper sleep 0.2 1309d98641SEnji Cooper done 1409d98641SEnji Cooper} 1509d98641SEnji Cooper 1609d98641SEnji Cooperattach_md() 1709d98641SEnji Cooper{ 1809d98641SEnji Cooper local test_md 1909d98641SEnji Cooper 2009d98641SEnji Cooper test_md=$(mdconfig -a "$@") || exit 2109d98641SEnji Cooper echo $test_md >> $TEST_MDS_FILE || exit 2209d98641SEnji Cooper echo $test_md 2309d98641SEnji Cooper} 2409d98641SEnji Cooper 25ca623e07SMark Johnstondetach_md() 26ca623e07SMark Johnston{ 27ca623e07SMark Johnston local test_md unit 28ca623e07SMark Johnston 29ca623e07SMark Johnston test_md=$1 30ca623e07SMark Johnston unit=${test_md#md} 31ca623e07SMark Johnston mdconfig -d -u $unit || exit 32ca623e07SMark Johnston sed -i '' "/^${test_md}$/d" $TEST_MDS_FILE || exit 33ca623e07SMark Johnston} 34ca623e07SMark Johnston 3509d98641SEnji Coopergeom_test_cleanup() 3609d98641SEnji Cooper{ 3709d98641SEnji Cooper local test_md 3809d98641SEnji Cooper 3909d98641SEnji Cooper if [ -f "$TEST_MDS_FILE" ]; then 4009d98641SEnji Cooper while read test_md; do 4109d98641SEnji Cooper # The "#" tells the TAP parser this is a comment 4209d98641SEnji Cooper echo "# Removing test memory disk: $test_md" 4309d98641SEnji Cooper mdconfig -d -u $test_md 4409d98641SEnji Cooper done < $TEST_MDS_FILE 4509d98641SEnji Cooper rm -f "$TEST_MDS_FILE" 46cf551b8aSAlan Somers fi 4709d98641SEnji Cooper} 4809d98641SEnji Cooper 49cf551b8aSAlan Somersgeom_load_class_if_needed() 50cf551b8aSAlan Somers{ 51cf551b8aSAlan Somers local class=$1 52ca623e07SMark Johnston 5309d98641SEnji Cooper # If the geom class isn't already loaded, try loading it. 5409d98641SEnji Cooper if ! kldstat -q -m g_${class}; then 5509d98641SEnji Cooper if ! geom ${class} load; then 56cf551b8aSAlan Somers echo "could not load module for geom class=${class}" 57cf551b8aSAlan Somers return 1 58cf551b8aSAlan Somers fi 59cf551b8aSAlan Somers fi 60cf551b8aSAlan Somers return 0 61cf551b8aSAlan Somers} 62cf551b8aSAlan Somers 63cf551b8aSAlan Somersgeom_atf_test_setup() 64cf551b8aSAlan Somers{ 65cf551b8aSAlan Somers if ! error_message=$(geom_load_class_if_needed $class); then 66cf551b8aSAlan Somers atf_skip "$error_message" 67cf551b8aSAlan Somers fi 68cf551b8aSAlan Somers} 69cf551b8aSAlan Somers 70cf551b8aSAlan Somersgeom_tap_test_setup() 71cf551b8aSAlan Somers{ 72cf551b8aSAlan Somers if ! error_message=$(geom_load_class_if_needed $class); then 73cf551b8aSAlan Somers echo "1..0 # SKIP $error_message" 74da611c05SEnji Cooper exit 0 7509d98641SEnji Cooper fi 76cf551b8aSAlan Somers} 7709d98641SEnji Cooper 78cf551b8aSAlan Somers: ${ATF_TEST=false} 79cf551b8aSAlan Somersif ! $ATF_TEST; then 80cf551b8aSAlan Somers geom_tap_test_setup 8109d98641SEnji Cooperfi 82