1#!/bin/sh 2# $FreeBSD$ 3 4# NOTE: existence is sanity-checked in `geom_verify_temp_mds_file_existence(..)` 5TEST_MDS_FILE="$(mktemp test_mds.${0##*/}.XXXXXXXX)" 6 7devwait() 8{ 9 while :; do 10 if [ -c /dev/${class}/${name} ]; then 11 return 12 fi 13 sleep 0.2 14 done 15} 16 17attach_md() 18{ 19 local test_md 20 21 test_md=$(mdconfig -a "$@") || exit 22 echo $test_md >> $TEST_MDS_FILE || exit 23 echo $test_md 24} 25 26detach_md() 27{ 28 local test_md unit 29 30 test_md=$1 31 unit=${test_md#md} 32 mdconfig -d -u $unit || exit 33 sed -i '' "/^${test_md}$/d" $TEST_MDS_FILE || exit 34} 35 36geom_test_cleanup() 37{ 38 local test_md 39 40 if [ -f "$TEST_MDS_FILE" ]; then 41 while read test_md; do 42 # The "#" tells the TAP parser this is a comment 43 echo "# Removing test memory disk: $test_md" 44 mdconfig -d -u $test_md 45 done < $TEST_MDS_FILE 46 rm -f "$TEST_MDS_FILE" 47 fi 48} 49 50geom_verify_temp_mds_file_existence() 51{ 52 if [ ! -f $TEST_MDS_FILE ]; then 53 echo "test md(4) devices file creation unsuccessful" 54 return 1 55 fi 56} 57 58geom_load_class_if_needed() 59{ 60 local class=$1 61 62 # If the geom class isn't already loaded, try loading it. 63 if ! kldstat -q -m g_${class}; then 64 if ! geom ${class} load; then 65 echo "could not load module for geom class=${class}" 66 return 1 67 fi 68 fi 69 return 0 70} 71 72geom_atf_test_setup() 73{ 74 if ! error_message=$(geom_verify_temp_mds_file_existence); then 75 atf_skip "$error_message" 76 fi 77 if ! error_message=$(geom_load_class_if_needed $class); then 78 atf_skip "$error_message" 79 fi 80} 81 82geom_tap_test_setup() 83{ 84 if ! error_message=$(geom_verify_temp_mds_file_existence); then 85 echo "1..0 # SKIP $error_message" 86 exit 1 87 fi 88 if ! error_message=$(geom_load_class_if_needed $class); then 89 echo "1..0 # SKIP $error_message" 90 exit 0 91 fi 92} 93 94: ${ATF_TEST=false} 95if ! $ATF_TEST; then 96 geom_tap_test_setup 97fi 98