ggate_test.sh revision 313753
1311893Sasomers# $FreeBSD: stable/11/tests/sys/geom/class/gate/ggate_test.sh 313753 2017-02-15 00:15:24Z asomers $ 2311893Sasomers 3311893SasomersPIDFILE=ggated.pid 4311893SasomersPLAINFILES=plainfiles 5311893SasomersPORT=33080 6311893SasomersCONF=gg.exports 7311893Sasomers 8311893Sasomersatf_test_case ggated cleanup 9311893Sasomersggated_head() 10311893Sasomers{ 11311893Sasomers atf_set "descr" "ggated can proxy geoms" 12311893Sasomers atf_set "require.progs" "ggatec ggated" 13311893Sasomers atf_set "require.user" "root" 14311893Sasomers atf_set "timeout" 60 15311893Sasomers} 16311893Sasomers 17311893Sasomersggated_body() 18311893Sasomers{ 19311893Sasomers us=$(alloc_ggate_dev) 20311893Sasomers work=$(alloc_md) 21311893Sasomers src=$(alloc_md) 22311893Sasomers 23313753Sasomers atf_check -e ignore -o ignore \ 24313753Sasomers dd if=/dev/random of=/dev/$work bs=1m count=1 conv=notrunc 25313753Sasomers atf_check -e ignore -o ignore \ 26313753Sasomers dd if=/dev/random of=/dev/$src bs=1m count=1 conv=notrunc 27311893Sasomers 28311893Sasomers echo $CONF >> $PLAINFILES 29311893Sasomers echo "127.0.0.1 RW /dev/$work" > $CONF 30311893Sasomers 31311893Sasomers atf_check ggated -p $PORT -F $PIDFILE $CONF 32313753Sasomers atf_check ggatec create -p $PORT -u $us 127.0.0.1 /dev/$work 33311893Sasomers 34313753Sasomers ggate_dev=/dev/ggate${us} 35311893Sasomers 36313753Sasomers wait_for_ggate_device ${ggate_dev} 37313753Sasomers 38313753Sasomers atf_check -e ignore -o ignore \ 39313753Sasomers dd if=/dev/${src} of=${ggate_dev} bs=1m count=1 conv=notrunc 40313753Sasomers 41311893Sasomers checksum /dev/$src /dev/$work 42311893Sasomers} 43311893Sasomers 44311893Sasomersggated_cleanup() 45311893Sasomers{ 46311893Sasomers common_cleanup 47311893Sasomers} 48311893Sasomers 49311893Sasomersatf_test_case ggatel_file cleanup 50311893Sasomersggatel_file_head() 51311893Sasomers{ 52311893Sasomers atf_set "descr" "ggatel can proxy files" 53311893Sasomers atf_set "require.progs" "ggatel" 54311893Sasomers atf_set "require.user" "root" 55311893Sasomers atf_set "timeout" 15 56311893Sasomers} 57311893Sasomers 58311893Sasomersggatel_file_body() 59311893Sasomers{ 60311893Sasomers us=$(alloc_ggate_dev) 61311893Sasomers 62311893Sasomers echo src work >> ${PLAINFILES} 63311893Sasomers dd if=/dev/random of=work bs=1m count=1 64311893Sasomers dd if=/dev/random of=src bs=1m count=1 65311893Sasomers 66311893Sasomers atf_check ggatel create -u $us work 67311893Sasomers 68313753Sasomers ggate_dev=/dev/ggate${us} 69311893Sasomers 70313753Sasomers wait_for_ggate_device ${ggate_dev} 71313753Sasomers 72313753Sasomers atf_check -e ignore -o ignore \ 73313753Sasomers dd if=src of=${ggate_dev} bs=1m count=1 conv=notrunc 74313753Sasomers 75311893Sasomers checksum src work 76311893Sasomers} 77311893Sasomers 78311893Sasomersggatel_file_cleanup() 79311893Sasomers{ 80311893Sasomers common_cleanup 81311893Sasomers} 82311893Sasomers 83311893Sasomersatf_test_case ggatel_md cleanup 84311893Sasomersggatel_md_head() 85311893Sasomers{ 86311893Sasomers atf_set "descr" "ggatel can proxy files" 87311893Sasomers atf_set "require.progs" "ggatel" 88311893Sasomers atf_set "require.user" "root" 89311893Sasomers atf_set "timeout" 15 90311893Sasomers} 91311893Sasomers 92311893Sasomersggatel_md_body() 93311893Sasomers{ 94311893Sasomers us=$(alloc_ggate_dev) 95311893Sasomers work=$(alloc_md) 96311893Sasomers src=$(alloc_md) 97311893Sasomers 98313753Sasomers atf_check -e ignore -o ignore \ 99313753Sasomers dd if=/dev/random of=$work bs=1m count=1 conv=notrunc 100313753Sasomers atf_check -e ignore -o ignore \ 101313753Sasomers dd if=/dev/random of=$src bs=1m count=1 conv=notrunc 102311893Sasomers 103311893Sasomers atf_check ggatel create -u $us /dev/$work 104311893Sasomers 105313753Sasomers ggate_dev=/dev/ggate${us} 106311893Sasomers 107313753Sasomers wait_for_ggate_device ${ggate_dev} 108313753Sasomers 109313753Sasomers atf_check -e ignore -o ignore \ 110313753Sasomers dd if=/dev/$src of=${ggate_dev} bs=1m count=1 conv=notrunc 111313753Sasomers 112311893Sasomers checksum /dev/$src /dev/$work 113311893Sasomers} 114311893Sasomers 115311893Sasomersggatel_md_cleanup() 116311893Sasomers{ 117311893Sasomers common_cleanup 118311893Sasomers} 119311893Sasomers 120311893Sasomersatf_init_test_cases() 121311893Sasomers{ 122311893Sasomers atf_add_test_case ggated 123311893Sasomers atf_add_test_case ggatel_file 124311893Sasomers atf_add_test_case ggatel_md 125311893Sasomers} 126311893Sasomers 127311893Sasomersalloc_ggate_dev() 128311893Sasomers{ 129311893Sasomers local us 130311893Sasomers 131311893Sasomers us=0 132311893Sasomers while [ -c /dev/ggate${us} ]; do 133311893Sasomers : $(( us += 1 )) 134311893Sasomers done 135311893Sasomers echo ${us} > ggate.devs 136311893Sasomers echo ${us} 137311893Sasomers} 138311893Sasomers 139311893Sasomersalloc_md() 140311893Sasomers{ 141311893Sasomers local md 142311893Sasomers 143311893Sasomers md=$(mdconfig -a -t malloc -s 1M) || \ 144311893Sasomers atf_fail "failed to allocate md device" 145311893Sasomers echo ${md} >> md.devs 146311893Sasomers echo ${md} 147311893Sasomers} 148311893Sasomers 149311893Sasomerschecksum() 150311893Sasomers{ 151311893Sasomers local src work 152311893Sasomers src=$1 153311893Sasomers work=$2 154311893Sasomers 155311893Sasomers src_checksum=$(md5 -q $src) 156311893Sasomers work_checksum=$(md5 -q $work) 157311893Sasomers 158311893Sasomers if [ "$work_checksum" != "$src_checksum" ]; then 159311893Sasomers atf_fail "work md5 checksum didn't match" 160311893Sasomers fi 161311893Sasomers 162311893Sasomers ggate_checksum=$(md5 -q /dev/ggate${us}) 163311893Sasomers if [ "$ggate_checksum" != "$src_checksum" ]; then 164311893Sasomers atf_fail "ggate md5 checksum didn't match" 165311893Sasomers fi 166311893Sasomers} 167311893Sasomers 168311893Sasomerscommon_cleanup() 169311893Sasomers{ 170311893Sasomers if [ -f "ggate.devs" ]; then 171311893Sasomers while read test_ggate; do 172311893Sasomers ggatec destroy -f -u $test_ggate >/dev/null 173311893Sasomers done < ggate.devs 174311893Sasomers rm ggate.devs 175311893Sasomers fi 176311893Sasomers 177311893Sasomers if [ -f "$PIDFILE" ]; then 178311893Sasomers pkill -F "$PIDFILE" 179311893Sasomers rm $PIDFILE 180311893Sasomers fi 181311893Sasomers 182311893Sasomers if [ -f "PLAINFILES" ]; then 183311893Sasomers while read f; do 184311893Sasomers rm -f ${f} 185311893Sasomers done < ${PLAINFILES} 186311893Sasomers rm ${PLAINFILES} 187311893Sasomers fi 188311893Sasomers 189311893Sasomers if [ -f "md.devs" ]; then 190311893Sasomers while read test_md; do 191311893Sasomers mdconfig -d -u $test_md 2>/dev/null 192311893Sasomers done < md.devs 193311893Sasomers rm md.devs 194311893Sasomers fi 195311893Sasomers true 196311893Sasomers} 197313753Sasomers 198313753Sasomers# Bug 204616: ggatel(8) creates /dev/ggate* asynchronously if `ggatel create` 199313753Sasomers# isn't called with `-v`. 200313753Sasomerswait_for_ggate_device() 201313753Sasomers{ 202313753Sasomers ggate_device=$1 203313753Sasomers 204313753Sasomers while [ ! -c $ggate_device ]; do 205313753Sasomers sleep 0.5 206313753Sasomers done 207313753Sasomers} 208