diff --git a/tests/common b/tests/common index 71661e95..c6802c3d 100644 --- a/tests/common +++ b/tests/common @@ -169,6 +169,9 @@ run_check() # same as run_check but the stderr+stdout output is duplicated on stdout and # can be processed further +# +# NOTE: If this function is called on btrfs related commands, caller should +# filter the output, as INSTRUMENT can easily pollute the output. run_check_stdout() { local spec @@ -636,6 +639,16 @@ check_min_kernel_version() return 0 } +# Get subvolume id for specified path +_get_subvolid() +{ + # run_check_stdout may have INSTRUMENT polluting the output, we need to + # filter the output + run_check_stdout "$TOP/btrfs" inspect-internal rootid "$1" | \ + grep -e "^[[:digit:]]\+$" + +} + # compare running kernel version to the given parameter, return success # if running is newer than requested (let caller decide if to fail or skip) # $1: minimum version of running kernel in major.minor format (eg. 4.19) diff --git a/tests/misc-tests/004-shrink-fs/test.sh b/tests/misc-tests/004-shrink-fs/test.sh index 74150063..5ec51490 100755 --- a/tests/misc-tests/004-shrink-fs/test.sh +++ b/tests/misc-tests/004-shrink-fs/test.sh @@ -11,11 +11,18 @@ check_prereq btrfs setup_root_helper +_get_min_dev_size() +{ + size=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal \ + min-dev-size ${1:+--id "$1"} "$TEST_MNT" | \ + grep -e "^[[:digit:]]\+.*)$" | cut -d ' ' -f 1) + echo "$size" +} + # Optionally take id of the device to shrink shrink_test() { - min_size=$(run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal min-dev-size ${1:+--id "$1"} "$TEST_MNT") - min_size=$(echo "$min_size" | cut -d ' ' -f 1) + min_size=$(_get_min_dev_size "$1") _log "min size = ${min_size}" if [ -z "$min_size" ]; then _fail "Failed to parse minimum size" diff --git a/tests/misc-tests/009-subvolume-sync-must-wait/test.sh b/tests/misc-tests/009-subvolume-sync-must-wait/test.sh index 91dcebbb..ef27b368 100755 --- a/tests/misc-tests/009-subvolume-sync-must-wait/test.sh +++ b/tests/misc-tests/009-subvolume-sync-must-wait/test.sh @@ -31,7 +31,7 @@ done run_check $SUDO_HELPER "$TOP/btrfs" subvolume list . run_check $SUDO_HELPER "$TOP/btrfs" subvolume list -d . -idtodel=`run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal rootid snap3` +idtodel=$(_get_subvolid snap3) # delete, sync after some time run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete -c snap3 diff --git a/tests/misc-tests/013-subvolume-sync-crash/test.sh b/tests/misc-tests/013-subvolume-sync-crash/test.sh index 64ba9959..8d4e7603 100755 --- a/tests/misc-tests/013-subvolume-sync-crash/test.sh +++ b/tests/misc-tests/013-subvolume-sync-crash/test.sh @@ -32,7 +32,7 @@ done run_check $SUDO_HELPER "$TOP/btrfs" subvolume list . run_check $SUDO_HELPER "$TOP/btrfs" subvolume list -d . -idtodel=`run_check_stdout $SUDO_HELPER "$TOP/btrfs" inspect-internal rootid snap3` +idtodel=`$SUDO_HELPER "$TOP/btrfs" inspect-internal rootid snap3` # delete, sync after some time run_check $SUDO_HELPER "$TOP/btrfs" subvolume delete -c snap* diff --git a/tests/misc-tests/024-inspect-internal-rootid/test.sh b/tests/misc-tests/024-inspect-internal-rootid/test.sh index b1c804d9..119dd1cb 100755 --- a/tests/misc-tests/024-inspect-internal-rootid/test.sh +++ b/tests/misc-tests/024-inspect-internal-rootid/test.sh @@ -21,20 +21,13 @@ run_check touch file1 run_check touch dir/file2 run_check touch sub/file3 -id1=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid .) \ - || { echo $id1; exit 1; } -id2=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid sub) \ - || { echo $id2; exit 1; } -id3=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid sub/subsub) \ - || { echo $id3; exit 1; } -id4=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid dir) \ - || { echo $id4; exit 1; } -id5=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid file1) \ - || { echo $id5; exit 1; } -id6=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid dir/file2) \ - || { echo $id6; exit 1; } -id7=$(run_check_stdout "$TOP/btrfs" inspect-internal rootid sub/file3) \ - || { echo $id7; exit 1; } +id1=$(_get_subvolid .) || { echo $id1; exit 1; } +id2=$(_get_subvolid sub) || { echo $id2; exit 1; } +id3=$(_get_subvolid sub/subsub) || { echo $id3; exit 1; } +id4=$(_get_subvolid dir) || { echo $id4; exit 1; } +id5=$(_get_subvolid file1) || { echo $id5; exit 1; } +id6=$(_get_subvolid dir/file2) || { echo $id6; exit 1; } +id7=$(_get_subvolid sub/file3) || { echo $id7; exit 1; } if ! ([ "$id1" -ne "$id2" ] && [ "$id1" -ne "$id3" ] && [ "$id2" -ne "$id3" ]); then _fail "inspect-internal rootid: each subvolume must have different id" diff --git a/tests/misc-tests/031-qgroup-parent-child-relation/test.sh b/tests/misc-tests/031-qgroup-parent-child-relation/test.sh index f8529058..53bc953e 100755 --- a/tests/misc-tests/031-qgroup-parent-child-relation/test.sh +++ b/tests/misc-tests/031-qgroup-parent-child-relation/test.sh @@ -18,10 +18,10 @@ run_check $SUDO_HELPER "$TOP/btrfs" qgroup assign 0/5 1/0 "$TEST_MNT" run_check $SUDO_HELPER "$TOP/btrfs" quota rescan -w "$TEST_MNT" run_check_stdout $SUDO_HELPER "$TOP/btrfs" qgroup show --sort=-qgroupid \ - -p "$TEST_MNT" | tail -n 1 | grep -q "1/0" \ + -p "$TEST_MNT" | grep -q "1/0" \ || _fail "parent qgroup check failed, please check the log" run_check_stdout $SUDO_HELPER "$TOP/btrfs" qgroup show --sort=qgroupid \ - -c "$TEST_MNT" | tail -n 1 | grep -q "0/5" \ + -c "$TEST_MNT" | grep -q "0/5" \ || _fail "child qgroup check failed, please check the log" run_check_umount_test_dev "$TEST_MNT"