ggate_test.sh revision 311893
1311893Sasomers# $FreeBSD: head/tests/sys/geom/class/gate/ggate_test.sh 311893 2017-01-10 20:35:09Z asomers $ 2311893Sasomers 3311893SasomersPIDFILE=ggated.pid 4311893SasomersPLAINFILES=plainfiles 5311893SasomersPORT=33080 6311893SasomersCONF=gg.exports 7311893SasomersRETRIES=16 8311893Sasomers 9311893Sasomersatf_test_case ggated cleanup 10311893Sasomersggated_head() 11311893Sasomers{ 12311893Sasomers atf_set "descr" "ggated can proxy geoms" 13311893Sasomers atf_set "require.progs" "ggatec ggated" 14311893Sasomers atf_set "require.user" "root" 15311893Sasomers atf_set "timeout" 60 16311893Sasomers} 17311893Sasomers 18311893Sasomersggated_body() 19311893Sasomers{ 20311893Sasomers us=$(alloc_ggate_dev) 21311893Sasomers work=$(alloc_md) 22311893Sasomers src=$(alloc_md) 23311893Sasomers 24311893Sasomers dd if=/dev/random of=/dev/$work bs=1m count=1 conv=notrunc 25311893Sasomers dd if=/dev/random of=/dev/$src bs=1m count=1 conv=notrunc 26311893Sasomers 27311893Sasomers echo $CONF >> $PLAINFILES 28311893Sasomers echo "127.0.0.1 RW /dev/$work" > $CONF 29311893Sasomers 30311893Sasomers atf_check ggated -p $PORT -F $PIDFILE $CONF 31311893Sasomers for try in `jot $RETRIES`; do 32311893Sasomers ggatec create -p $PORT -u $us 127.0.0.1 /dev/$work && break 33311893Sasomers # wait for ggated to be ready 34311893Sasomers sleep 0.25 35311893Sasomers done 36311893Sasomers if [ "$try" -eq "$RETRIES" ]; then 37311893Sasomers atf_fail "ggatec create failed" 38311893Sasomers fi 39311893Sasomers 40311893Sasomers for try in `jot $RETRIES`; do 41311893Sasomers dd if=/dev/${src} of=/dev/ggate${us} bs=1m count=1 conv=notrunc\ 42311893Sasomers && break 43311893Sasomers # Wait for /dev/ggate${us} to be ready 44311893Sasomers sleep 0.25 45311893Sasomers done 46311893Sasomers if [ "$try" -eq "$RETRIES" ]; then 47311893Sasomers atf_fail "dd failed; /dev/ggate${us} isn't working" 48311893Sasomers fi 49311893Sasomers 50311893Sasomers checksum /dev/$src /dev/$work 51311893Sasomers} 52311893Sasomers 53311893Sasomersggated_cleanup() 54311893Sasomers{ 55311893Sasomers common_cleanup 56311893Sasomers} 57311893Sasomers 58311893Sasomersatf_test_case ggatel_file cleanup 59311893Sasomersggatel_file_head() 60311893Sasomers{ 61311893Sasomers atf_set "descr" "ggatel can proxy files" 62311893Sasomers atf_set "require.progs" "ggatel" 63311893Sasomers atf_set "require.user" "root" 64311893Sasomers atf_set "timeout" 15 65311893Sasomers} 66311893Sasomers 67311893Sasomersggatel_file_body() 68311893Sasomers{ 69311893Sasomers us=$(alloc_ggate_dev) 70311893Sasomers 71311893Sasomers echo src work >> ${PLAINFILES} 72311893Sasomers dd if=/dev/random of=work bs=1m count=1 73311893Sasomers dd if=/dev/random of=src bs=1m count=1 74311893Sasomers 75311893Sasomers atf_check ggatel create -u $us work 76311893Sasomers 77311893Sasomers dd if=src of=/dev/ggate${us} bs=1m count=1 conv=notrunc 78311893Sasomers 79311893Sasomers checksum src work 80311893Sasomers} 81311893Sasomers 82311893Sasomersggatel_file_cleanup() 83311893Sasomers{ 84311893Sasomers common_cleanup 85311893Sasomers} 86311893Sasomers 87311893Sasomersatf_test_case ggatel_md cleanup 88311893Sasomersggatel_md_head() 89311893Sasomers{ 90311893Sasomers atf_set "descr" "ggatel can proxy files" 91311893Sasomers atf_set "require.progs" "ggatel" 92311893Sasomers atf_set "require.user" "root" 93311893Sasomers atf_set "timeout" 15 94311893Sasomers} 95311893Sasomers 96311893Sasomersggatel_md_body() 97311893Sasomers{ 98311893Sasomers us=$(alloc_ggate_dev) 99311893Sasomers work=$(alloc_md) 100311893Sasomers src=$(alloc_md) 101311893Sasomers 102311893Sasomers dd if=/dev/random of=$work bs=1m count=1 conv=notrunc 103311893Sasomers dd if=/dev/random of=$src bs=1m count=1 conv=notrunc 104311893Sasomers 105311893Sasomers atf_check ggatel create -u $us /dev/$work 106311893Sasomers 107311893Sasomers dd if=/dev/$src of=/dev/ggate${us} bs=1m count=1 conv=notrunc 108311893Sasomers 109311893Sasomers checksum /dev/$src /dev/$work 110311893Sasomers} 111311893Sasomers 112311893Sasomersggatel_md_cleanup() 113311893Sasomers{ 114311893Sasomers common_cleanup 115311893Sasomers} 116311893Sasomers 117311893Sasomersatf_init_test_cases() 118311893Sasomers{ 119311893Sasomers atf_add_test_case ggated 120311893Sasomers atf_add_test_case ggatel_file 121311893Sasomers atf_add_test_case ggatel_md 122311893Sasomers} 123311893Sasomers 124311893Sasomersalloc_ggate_dev() 125311893Sasomers{ 126311893Sasomers local us 127311893Sasomers 128311893Sasomers us=0 129311893Sasomers while [ -c /dev/ggate${us} ]; do 130311893Sasomers : $(( us += 1 )) 131311893Sasomers done 132311893Sasomers echo ${us} > ggate.devs 133311893Sasomers echo ${us} 134311893Sasomers} 135311893Sasomers 136311893Sasomersalloc_md() 137311893Sasomers{ 138311893Sasomers local md 139311893Sasomers 140311893Sasomers md=$(mdconfig -a -t malloc -s 1M) || \ 141311893Sasomers atf_fail "failed to allocate md device" 142311893Sasomers echo ${md} >> md.devs 143311893Sasomers echo ${md} 144311893Sasomers} 145311893Sasomers 146311893Sasomerschecksum() 147311893Sasomers{ 148311893Sasomers local src work 149311893Sasomers src=$1 150311893Sasomers work=$2 151311893Sasomers 152311893Sasomers src_checksum=$(md5 -q $src) 153311893Sasomers work_checksum=$(md5 -q $work) 154311893Sasomers 155311893Sasomers if [ "$work_checksum" != "$src_checksum" ]; then 156311893Sasomers atf_fail "work md5 checksum didn't match" 157311893Sasomers fi 158311893Sasomers 159311893Sasomers ggate_checksum=$(md5 -q /dev/ggate${us}) 160311893Sasomers if [ "$ggate_checksum" != "$src_checksum" ]; then 161311893Sasomers atf_fail "ggate md5 checksum didn't match" 162311893Sasomers fi 163311893Sasomers} 164311893Sasomers 165311893Sasomerscommon_cleanup() 166311893Sasomers{ 167311893Sasomers if [ -f "ggate.devs" ]; then 168311893Sasomers while read test_ggate; do 169311893Sasomers ggatec destroy -f -u $test_ggate >/dev/null 170311893Sasomers done < ggate.devs 171311893Sasomers rm ggate.devs 172311893Sasomers fi 173311893Sasomers 174311893Sasomers if [ -f "$PIDFILE" ]; then 175311893Sasomers pkill -F "$PIDFILE" 176311893Sasomers rm $PIDFILE 177311893Sasomers fi 178311893Sasomers 179311893Sasomers if [ -f "PLAINFILES" ]; then 180311893Sasomers while read f; do 181311893Sasomers rm -f ${f} 182311893Sasomers done < ${PLAINFILES} 183311893Sasomers rm ${PLAINFILES} 184311893Sasomers fi 185311893Sasomers 186311893Sasomers if [ -f "md.devs" ]; then 187311893Sasomers while read test_md; do 188311893Sasomers mdconfig -d -u $test_md 2>/dev/null 189311893Sasomers done < md.devs 190311893Sasomers rm md.devs 191311893Sasomers fi 192311893Sasomers true 193311893Sasomers} 194