diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2011-10-14 17:02:21 +0100 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2011-10-14 17:02:21 +0100 |
commit | 43ea764b160ca41a599c978f556f8248fe5380be (patch) | |
tree | 5efc971fe01673b17d16098ea27694bffc591834 /tests | |
parent | 87f84d4305716e73f43d0e0577b8295fdff2a64d (diff) | |
download | tbdiff-43ea764b160ca41a599c978f556f8248fe5380be.tar.gz |
Restructured tests so mandatory delay between source and target
directories can be inserted, to ensure mtime is not equal
now dir_add_remove fails because the mtime of the directory
changed after a file in it was altered
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/00_regular_file_diff.sh | 18 | ||||
-rwxr-xr-x | tests/01_regular_file_add_remove.sh | 9 | ||||
-rwxr-xr-x | tests/02_fifo_diff.sh | 11 | ||||
-rwxr-xr-x | tests/03_fifo_add_remove.sh | 11 | ||||
-rwxr-xr-x | tests/04_symlink_diff.sh | 27 | ||||
-rwxr-xr-x | tests/05_symlink_add_remove.sh | 29 | ||||
-rwxr-xr-x | tests/06_dir_diff.sh | 7 | ||||
-rwxr-xr-x | tests/07_dir_add_remove.sh | 7 | ||||
-rwxr-xr-x | tests/08_chardev_diff.sh | 5 | ||||
-rwxr-xr-x | tests/09_chardev_add_remove.sh | 9 | ||||
-rwxr-xr-x | tests/10_blockdev_diff.sh | 5 | ||||
-rwxr-xr-x | tests/11_blockdev_add_remove.sh | 9 | ||||
-rwxr-xr-x | tests/12_socket_remove.sh | 6 | ||||
-rwxr-xr-x | tests/13_socket_add.sh | 6 | ||||
-rwxr-xr-x | tests/14_socket_diff.sh | 18 | ||||
-rwxr-xr-x | tests/15_xattr_add.sh | 7 | ||||
-rw-r--r-- | tests/test_lib.sh | 67 |
17 files changed, 149 insertions, 102 deletions
diff --git a/tests/00_regular_file_diff.sh b/tests/00_regular_file_diff.sh index 613d924..0e12454 100755 --- a/tests/00_regular_file_diff.sh +++ b/tests/00_regular_file_diff.sh @@ -14,13 +14,17 @@ TEST_TOOLS=$3 ORG_FILE=$ORIGIN/b.txt TGT_FILE=$TARGET/b.txt -setup () { - echo 1 >$ORIGIN/a.txt && - echo 2 >$TARGET/a.txt && - chgrp tty $ORIGIN/a.txt $TARGET/a.txt && - echo 1 > $ORG_FILE && \ - echo 2 > $TGT_FILE && \ - chown :cdrom $TGT_FILE && \ +setup_origin () { + echo 1 >$ORIGIN/a.txt && + chgrp tty $ORIGIN/a.txt && + echo 1 > $ORG_FILE +} + +setup_target () { + echo 2 >$TARGET/a.txt && + chgrp tty $TARGET/a.txt && + echo 2 > $TGT_FILE && + chown :cdrom $TGT_FILE && chmod 707 $TGT_FILE } diff --git a/tests/01_regular_file_add_remove.sh b/tests/01_regular_file_add_remove.sh index f97d407..66b5bc8 100755 --- a/tests/01_regular_file_add_remove.sh +++ b/tests/01_regular_file_add_remove.sh @@ -11,9 +11,12 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - touch $ORIGIN/remove && \ - echo 1 > $TARGET/add && \ +setup_origin () { + touch $ORIGIN/remove +} + +setup_target () { + echo 1 > $TARGET/add && chown -h :cdrom $TARGET/add } diff --git a/tests/02_fifo_diff.sh b/tests/02_fifo_diff.sh index 73faf6b..f256414 100755 --- a/tests/02_fifo_diff.sh +++ b/tests/02_fifo_diff.sh @@ -11,10 +11,13 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - mkfifo $ORIGIN/remove && \ - mkfifo $TARGET/add && \ - chmod 707 $TARGET/add && \ +setup_origin () { + mkfifo $ORIGIN/remove +} + +setup_target () { + mkfifo $TARGET/add && + chmod 707 $TARGET/add && chown -h :cdrom $TARGET/add } diff --git a/tests/03_fifo_add_remove.sh b/tests/03_fifo_add_remove.sh index fb42406..9db6d12 100755 --- a/tests/03_fifo_add_remove.sh +++ b/tests/03_fifo_add_remove.sh @@ -11,10 +11,13 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - mkfifo $ORIGIN/remove && \ - mkfifo $TARGET/add && \ - chmod 707 $TARGET/add && \ +setup_origin () { + mkfifo $ORIGIN/remove +} + +setup_target () { + mkfifo $TARGET/add && + chmod 707 $TARGET/add && chown -h :cdrom $TARGET/add } diff --git a/tests/04_symlink_diff.sh b/tests/04_symlink_diff.sh index 7b414fb..d975191 100755 --- a/tests/04_symlink_diff.sh +++ b/tests/04_symlink_diff.sh @@ -11,21 +11,32 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - for dir in $ORIGIN $TARGET; do +setup_origin () { ( - cd $dir && + cd $ORIGIN && echo 1 >file && chown :cdrom file && mkdir -p dir && chown :cdrom dir && ln -s file flink && ln -s dir dlink - ); done && - chgrp -h daemon $TARGET/flink $TARGET/dlink && - ln -s /foo $ORIGIN/a && \ - ln -s /bar $TARGET/a && \ - chown -h :cdrom $TARGET/a + ln -s /foo a + ) +} + +setup_target () { + ( + cd $TARGET && + echo 1 >file && + chown :cdrom file && + mkdir -p dir && + chown :cdrom dir && + ln -s file flink && + ln -s dir dlink + chgrp -h daemon flink dlink && + ln -s /bar a && + chown -h :cdrom a + ) } check_results () { diff --git a/tests/05_symlink_add_remove.sh b/tests/05_symlink_add_remove.sh index 0c8b0ac..badf199 100755 --- a/tests/05_symlink_add_remove.sh +++ b/tests/05_symlink_add_remove.sh @@ -11,16 +11,21 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - ln -s /foo $ORIGIN/remove && - ln -s /bar $TARGET/add && - chown -h :cdrom $TARGET/add && - for dir in $ORIGIN $TARGET; do +setup_origin () { ( - cd $dir && mkdir -p data && - touch data/a data/b - ); done && - (cd $ORIGIN && ln -s data datalink) + cd $ORIGIN + ln -s /foo remove && + mkdir -p data && + touch data/a data/b && + ln -s data datalink + ) +} + +setup_target () { + mkdir -p $TARGET/data && + touch $TARGET/data/a $TARGET/data/b && + ln -s /bar $TARGET/add && + chown -h :cdrom $TARGET/add } check_results () { @@ -30,9 +35,13 @@ check_results () { check_same_mtime $ORIGIN/add $TARGET/add && check_same_uidgid $ORIGIN/add $TARGET/add && test ! -L $ORIGIN/datalink && + echo datalink not link && test -d $ORIGIN/data && + echo data is dir && test -f $ORIGIN/data/a && - test -f $ORIGIN/data/b + echo a is dir && + test -f $ORIGIN/data/b && + echo b is dir } ############################################# diff --git a/tests/06_dir_diff.sh b/tests/06_dir_diff.sh index 99ec034..f9f56dd 100755 --- a/tests/06_dir_diff.sh +++ b/tests/06_dir_diff.sh @@ -11,8 +11,11 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - mkdir $ORIGIN/a $ORIGIN/sticky $ORIGIN/setgid && +setup_origin () { + mkdir $ORIGIN/a $ORIGIN/sticky $ORIGIN/setgid +} + +setup_target () { mkdir $TARGET/a $TARGET/sticky $TARGET/setgid && echo "1" > $TARGET/a/1 && chown -h :cdrom $TARGET/a && diff --git a/tests/07_dir_add_remove.sh b/tests/07_dir_add_remove.sh index a213de1..295b0f9 100755 --- a/tests/07_dir_add_remove.sh +++ b/tests/07_dir_add_remove.sh @@ -11,8 +11,11 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - mkdir -p $ORIGIN/remove/1/2/3/4 && +setup_origin () { + mkdir -p $ORIGIN/remove/1/2/3/4 +} + +setup_target () { mkdir -p $TARGET/add/4/3/2/1 && mkdir -p $TARGET/addsticky && mkdir -p $TARGET/addsetgid && diff --git a/tests/08_chardev_diff.sh b/tests/08_chardev_diff.sh index 2e3e734..c0cc72c 100755 --- a/tests/08_chardev_diff.sh +++ b/tests/08_chardev_diff.sh @@ -11,8 +11,11 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { +setup_origin () { mknod $ORIGIN/tochange c `stat /dev/null -c '%t %T'` +} + +setup_target () { mknod $TARGET/tochange c `stat /dev/full -c '%t %T'` } diff --git a/tests/09_chardev_add_remove.sh b/tests/09_chardev_add_remove.sh index cb4212c..edd7c93 100755 --- a/tests/09_chardev_add_remove.sh +++ b/tests/09_chardev_add_remove.sh @@ -11,10 +11,13 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - #make a node with the same numbers as /dev/null - setup_block_major_minor="`stat /dev/null -c '%t %T'`" +setup_block_major_minor="`stat /dev/null -c '%t %T'`" + +setup_origin () { mknod $ORIGIN/toremove c $setup_block_major_minor +} + +setup_target () { mknod $TARGET/toadd c $setup_block_major_minor } diff --git a/tests/10_blockdev_diff.sh b/tests/10_blockdev_diff.sh index 2565ba4..ebb529a 100755 --- a/tests/10_blockdev_diff.sh +++ b/tests/10_blockdev_diff.sh @@ -11,8 +11,11 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { +setup_origin () { mknod $ORIGIN/tochange b `stat /dev/null -c '%t %T'` +} + +setup_target () { mknod $TARGET/tochange b `stat /dev/full -c '%t %T'` } diff --git a/tests/11_blockdev_add_remove.sh b/tests/11_blockdev_add_remove.sh index 4fa7f5a..3cc4ecb 100755 --- a/tests/11_blockdev_add_remove.sh +++ b/tests/11_blockdev_add_remove.sh @@ -11,10 +11,13 @@ TEST_TOOLS=$3 ############# Test specific code ############ -setup () { - #make a node with the same numbers as /dev/null - setup_block_major_minor="`stat /dev/null -c '%t %T'`" +setup_block_major_minor="`stat /dev/null -c '%t %T'`" + +setup_origin () { mknod $ORIGIN/toremove b $setup_block_major_minor +} + +setup_target () { mknod $TARGET/toadd b $setup_block_major_minor } diff --git a/tests/12_socket_remove.sh b/tests/12_socket_remove.sh index db44380..d594b2a 100755 --- a/tests/12_socket_remove.sh +++ b/tests/12_socket_remove.sh @@ -14,7 +14,7 @@ TEST_TOOLS=$3 # creation is only performed by the program that acts as the server # tbdiff won't be doing that so the only sensible operation is removal SOCKBIND=`mktemp` -setup () { +setup_origin () { # sockbind creates a socket then writes any data written to it to stdout # have to fork it because it will never stop, have to wait for it to # make the socket @@ -26,6 +26,10 @@ setup () { rm -f $SOCKBIND } +setup_target () { + true +} + create_test_return () { test $1 = 0 } diff --git a/tests/13_socket_add.sh b/tests/13_socket_add.sh index daa4f8f..b8c84d6 100755 --- a/tests/13_socket_add.sh +++ b/tests/13_socket_add.sh @@ -12,7 +12,11 @@ TEST_TOOLS=$3 ############# Test specific code ############ # sockets can't be added sensibly, test that it hasn't been SOCKBIND=`mktemp` -setup () { +setup_origin () { + true +} + +setup_target () { gcc sockbind.c -o $SOCKBIND 2>/dev/null >/dev/null $SOCKBIND "$TARGET/toadd" & SOCKBINDPID=$! diff --git a/tests/14_socket_diff.sh b/tests/14_socket_diff.sh index 9cf9195..d7d393f 100755 --- a/tests/14_socket_diff.sh +++ b/tests/14_socket_diff.sh @@ -13,15 +13,21 @@ TEST_TOOLS=$3 # sockets can't be changed sensibly, test that it hasn't been SOCKBIND=`mktemp` -setup () { +setup_origin () { gcc sockbind.c -o $SOCKBIND 2>/dev/null >/dev/null $SOCKBIND "$ORIGIN/tochange" & - SOCKBINDPID1=$! + SOCKBINDPID=$! + until test -S "$ORIGIN/tochange"; do :; done + kill $SOCKBINDPID + wait $SOCKBINDPID 2>/dev/null || true #wait returns false +} + +setup_target () { $SOCKBIND "$TARGET/tochange" & - SOCKBINDPID2=$! - until test -S "$TARGET/tochange" -a -S "$ORIGIN/tochange"; do :; done - kill $SOCKBINDPID1 $SOCKBINDPID2 && - wait $SOCKBINDPID1 $SOCKBINDPID2 2>/dev/null #surpress terminated output + SOCKBINDPID=$! + until test -S "$TARGET/tochange"; do :; done + kill $SOCKBINDPID && + wait $SOCKBINDPID 2>/dev/null #surpress terminated output rm -f $SOCKBIND } diff --git a/tests/15_xattr_add.sh b/tests/15_xattr_add.sh index 18156aa..1dcec4c 100755 --- a/tests/15_xattr_add.sh +++ b/tests/15_xattr_add.sh @@ -15,11 +15,14 @@ if is_command getfattr && is_command setfattr; then :; else exit 127 fi -setup () { +setup_origin () { touch $ORIGIN/file && setfattr -n "user.preserve" -v "true" $ORIGIN/file && setfattr -n "user.change" -v "false" $ORIGIN/file && - setfattr -n "user.remove" -v "false" $ORIGIN/file && + setfattr -n "user.remove" -v "false" $ORIGIN/file +} + +setup_target () { touch $TARGET/file && setfattr -n "user.preserve" -v "true" $TARGET/file && setfattr -n "user.change" -v "true" $TARGET/file && diff --git a/tests/test_lib.sh b/tests/test_lib.sh index eb66c9e..85df52b 100644 --- a/tests/test_lib.sh +++ b/tests/test_lib.sh @@ -21,12 +21,12 @@ check_same_mode () { test $(stat -c "%f" $1) = $(stat -c "%f" $2) } -# check_perm FILE EXPECTED_OCTAL_PERMISSIONS +# check_content FILE EXPECTED_OCTAL_PERMISSIONS check_perm () { test $(stat -c %a $1) = $2 } -# check_symlink FILE EXPECTED_PATH +# check_content FILE EXPECTED_OCTAL_PERMISSIONS check_symlink () { test $(readlink $1) = $2 } @@ -41,31 +41,6 @@ check_group () { test $(stat -c %G $1) = $2 } -# check_xattrs FILE1 FILE2 -# check that two files have the same attributes -check_xattrs () { - test "`getfattr --dump --encoding=base64 $1 | tail -n +2`" = \ - "`getfattr --dump --encoding=base64 $2 | tail -n +2`" -} - -# check_xattr_exists FILE KEY -check_xattr_exists () { - # attr doesn't use user. prefix, but getfattr returns 0 on non-existant - noprefix=`echo $2 | sed s/user.//` - attr -g $2 $1 >dev/null 2>/dev/null -} - -# xattr_get FILE KEY -xattr_get () { - getfattr --only-values --name=$2 $1 -} - -# check_xattr_value FILE KEY VALUE -check_xattr_value () { - check_xattr_exists && - test "`xattr_get $1 $2`" = "$3" -} - # tests whether a command exists is_command () { type $1 >/dev/null 2>/dev/null @@ -73,9 +48,9 @@ is_command () { #check_command COMMAND_STRING TEST_COMMAND COMMAND_DESCRIPTION check_command () { - COMMAND_STRING=$1 - TEST_COMMAND=$2 - COMMAND_DESCRIPTION="$3" + COMMAND_STRING="$1" + COMMAND_DESCRIPTION="$2" + TEST_COMMAND="$3" eval $COMMAND_STRING RETVAL=$? if is_command "$TEST_COMMAND"; then #test explicitly checks return @@ -130,7 +105,9 @@ cleanup_and_exit () { rm -rf $TESTDIR exit 1 } - +command_succeeded () { + test "$1" = "0" +} main () { start $@ echo -n "$TEST_ID Setting up $TEST_NAME test: " @@ -141,25 +118,27 @@ main () { "Please check mktemp accepts -d and permissions." >&2 cleanup_and_exit fi - mkdir -p $ORIGIN && \ - mkdir -p $TARGET && \ - setup - if [ $? -ne 0 ] - then - echo $FAIL - echo "Couldn't setup the test directory structure. Check your privileges" 1>&2 - cleanup_and_exit - fi + mkdir -p $ORIGIN && + check_command 'setup_origin' "$TEST_ID-$TEST_NAME: creating origin" \ + 'command_succeeded' && + sleep 2s && + mkdir -p $TARGET && + check_command 'setup_target' "$TEST_ID-$TEST_NAME: creating target" \ + 'command_succeeded' && + echo $OK echo "$TEST_ID Performing $TEST_NAME image creation and deployment: " + sleep 2s && CWD=$(pwd) && - check_command "$CREATE $IMGFILE $ORIGIN $TARGET" 'create_test_return' \ - "$TEST_ID-$TEST_NAME: creating image" + check_command "$CREATE $IMGFILE $ORIGIN $TARGET" \ + "$TEST_ID-$TEST_NAME: creating image" \ + 'create_test_return' cd $ORIGIN && - check_command "$DEPLOY $IMGFILE" 'deploy_test_return' \ - "$TEST_ID-$TEST_NAME: deploying image" + check_command "$DEPLOY $IMGFILE" \ + "$TEST_ID-$TEST_NAME: deploying image" \ + 'deploy_test_return' cd $CWD echo -n "$TEST_ID Checking $TEST_NAME results: " |