X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Floopaes-test;h=5b26b42af77edd9a4f18b2c8ca85c3e96ed58e17;hb=HEAD;hp=b475adb916bf92f415cd278449cc52df74cc9ddf;hpb=8256b673a1323df5c5d818814573ddd62bd5c4f3;p=platform%2Fupstream%2Fcryptsetup.git diff --git a/tests/loopaes-test b/tests/loopaes-test index b475adb..fdb4cd3 100755 --- a/tests/loopaes-test +++ b/tests/loopaes-test @@ -1,6 +1,10 @@ #!/bin/bash -CRYPTSETUP=../src/cryptsetup +[ -z "$CRYPTSETUP_PATH" ] && CRYPTSETUP_PATH=".." +CRYPTSETUP=$CRYPTSETUP_PATH/cryptsetup + +CRYPTSETUP_VALGRIND=../.libs/cryptsetup +CRYPTSETUP_LIB_VALGRIND=../.libs # try to validate using loop-AES losetup/kernel if available LOSETUP_AES=/losetup-aes.old @@ -15,7 +19,7 @@ LOOPDEV=$(losetup -f 2>/dev/null) function dmremove() { # device udevadm settle >/dev/null 2>&1 - dmsetup remove $1 >/dev/null 2>&1 + dmsetup remove --retry $1 >/dev/null 2>&1 } function remove_mapping() @@ -28,15 +32,29 @@ function remove_mapping() function fail() { + echo "FAILED backtrace:" + while caller $frame; do ((frame++)); done remove_mapping - echo "FAILED" exit 2 } function skip() { + remove_mapping [ -n "$1" ] && echo "$1" - exit 0 + exit 77 +} + +function valgrind_setup() +{ + command -v valgrind >/dev/null || fail "Cannot find valgrind." + [ ! -f $CRYPTSETUP_VALGRIND ] && fail "Unable to get location of cryptsetup executable." + export LD_LIBRARY_PATH="$CRYPTSETUP_LIB_VALGRIND:$LD_LIBRARY_PATH" +} + +function valgrind_run() +{ + INFOSTRING="$(basename ${BASH_SOURCE[1]})-line-${BASH_LINENO[0]}" ./valg.sh ${CRYPTSETUP_VALGRIND} "$@" } function prepare() @@ -87,22 +105,23 @@ function get_expsum() # $offset esac } -function check_sum() # $key $keysize $offset +function check_sum() # $key $keysize $offset [stdin|keyfile] { - # Fill device with zeroes and reopen it - dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1k $LOOP_DD_PARAM >/dev/null 2>&1 - sync - dmremove $DEV_NAME + $CRYPTSETUP close $DEV_NAME || fail EXPSUM=$(get_expsum $3) - $CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $2 --key-file $1 $(get_offset_params $3) >/dev/null 2>&1 + if [ "$4" == "stdin" ] ; then + cat $1 | $CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $2 --key-file - $(get_offset_params $3) >/dev/null 2>&1 + else + $CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $2 --key-file $1 $(get_offset_params $3) >/dev/null 2>&1 + fi ret=$? VSUM=$(sha256sum /dev/mapper/$DEV_NAME | cut -d' ' -f 1) if [ $ret -eq 0 -a "$VSUM" = "$EXPSUM" ] ; then - echo -n "[OK]" + echo -n "[$4:OK]" else - echo "[FAIL]" - echo " Expecting $EXPSUM got $VSUM." + echo "[$4:FAIL]" + [ "$VSUM" != "$EXPSUM" ] && echo " Expecting $EXPSUM got $VSUM." fail fi } @@ -121,7 +140,7 @@ function check_sum_losetup() # $key $alg echo "[OK]" else echo "[FAIL]" - echo " Expecting $EXPSUM got $VSUM (loop-AES)." + [ "$VSUM" != "$EXPSUM" ] && echo " Expecting $EXPSUM got $VSUM (loop-AES)." fail fi losetup -d $LOOPDEV >/dev/null 2>&1 @@ -140,7 +159,9 @@ function check_version() [ $(id -u) != 0 ] && skip "WARNING: You must be root to run this test, test skipped." [ -z "$LOOPDEV" ] && skip "Cannot find free loop device, test skipped." -which uuencode >/dev/null || skip "WARNING: test require uuencode binary, test skipped." +[ ! -x "$CRYPTSETUP" ] && skip "Cannot find $CRYPTSETUP, test skipped." +[ -n "$VALG" ] && valgrind_setup && CRYPTSETUP=valgrind_run +command -v uuencode >/dev/null || skip "WARNING: test require uuencode binary, test skipped." check_version || skip "Probably old kernel, test skipped." # loop-AES tests @@ -152,9 +173,15 @@ for key_size in $KEY_SIZES ; do for key in $KEY_FILES ; do for offset in $DEV_OFFSET ; do prepare "Open loop-AES $key / AES-$key_size / offset $offset" - $CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $key_size --key-file $key $(get_offset_params $offset) || fail + $CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME \ + -s $key_size --key-file $key $(get_offset_params $offset) \ + 2>/dev/null + [ $? -ne 0 ] && echo "[SKIPPED]" && continue check_exists - check_sum $key $key_size $offset + # Fill device with zeroes and reopen it + dd if=/dev/zero of=/dev/mapper/$DEV_NAME $LOOP_DD_PARAM >/dev/null 2>&1 + check_sum $key $key_size $offset keyfile + check_sum $key $key_size $offset stdin $CRYPTSETUP loopaesClose $DEV_NAME || fail check_sum_losetup $key AES$key_size $offset done