diff mbox series

[2/2] btrfs-progs: tests: Add test for fi show

Message ID 20220329083042.1248264-2-nborisov@suse.com (mailing list archive)
State New, archived
Headers show
Series [1/2] btrfs-progs: fi show: Print missing device for a mounted file system | expand

Commit Message

Nikolay Borisov March 29, 2022, 8:30 a.m. UTC
Add a test to ensure that 'btrfs fi show' on a mounted filesyste, which
has a missing device will explicitly print which device is missing.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 tests/cli-tests/016-fi-show-missing/test.sh | 35 +++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100755 tests/cli-tests/016-fi-show-missing/test.sh

Comments

David Sterba July 18, 2022, 4:04 p.m. UTC | #1
On Tue, Mar 29, 2022 at 11:30:42AM +0300, Nikolay Borisov wrote:
> Add a test to ensure that 'btrfs fi show' on a mounted filesyste, which
> has a missing device will explicitly print which device is missing.
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>

There are some things to fix, even if it's just shell scripting there is
a coding style to follow, and some testsuite specific requirements.

> ---
>  tests/cli-tests/016-fi-show-missing/test.sh | 35 +++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>  create mode 100755 tests/cli-tests/016-fi-show-missing/test.sh
> 
> diff --git a/tests/cli-tests/016-fi-show-missing/test.sh b/tests/cli-tests/016-fi-show-missing/test.sh
> new file mode 100755
> index 000000000000..e24a85d05410
> --- /dev/null
> +++ b/tests/cli-tests/016-fi-show-missing/test.sh
> @@ -0,0 +1,35 @@
> +#!/bin/bash
> +#
> +# Test that if a device is missing for a mounted filesystem, btrfs fi show will
> +# show which device exactly is missing.
> +
> +source "$TEST_TOP/common"
> +
> +check_prereq mkfs.btrfs
> +check_prereq btrfs
> +
> +setup_root_helper
> +setup_loopdevs 2
> +prepare_loopdevs
> +
> +dev1=${loopdevs[1]}
> +dev2=${loopdevs[2]}
> +
> +run_check $SUDO_HELPER "$TOP"/mkfs.btrfs -f -draid1 $dev1 $dev2

I'd rather use "${loopdevs[@]}", also to add quoting around paths.

> +# move the device, changing its path, simulating the device being missing
> +mv $dev2 /dev/loop-non-existent

This fails if not run by root, so
run_check $SUDO_HELPER mv ...

> +
> +run_check $SUDO_HELPER mount -o degraded $dev1 $TEST_MNT

All variables must be quoted

run_check $SUDO_HELPER mount -o degraded "$dev1" "$TEST_MNT"

> +
> +if ! run_check_stdout $SUDO_HELPER "$TOP"/btrfs fi show $TEST_MNT | \

if ! run_check_stdout $SUDO_HELPER "$TOP"/btrfs filesystem show "$TEST_MNT" | \

no command shortcuts

> +	grep -q "$dev2 MISSING"; then
> +
> +	_fail "Didn't find exact missing device"
> +fi
> +
> +mv /dev/loop-non-existent $dev2

Again run_check $SUDO_HELPER

> +
> +run_check $SUDO_HELPER umount $TEST_MNT
> +
> +cleanup_loopdevs
> +
> -- 
> 2.17.1
diff mbox series

Patch

diff --git a/tests/cli-tests/016-fi-show-missing/test.sh b/tests/cli-tests/016-fi-show-missing/test.sh
new file mode 100755
index 000000000000..e24a85d05410
--- /dev/null
+++ b/tests/cli-tests/016-fi-show-missing/test.sh
@@ -0,0 +1,35 @@ 
+#!/bin/bash
+#
+# Test that if a device is missing for a mounted filesystem, btrfs fi show will
+# show which device exactly is missing.
+
+source "$TEST_TOP/common"
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+setup_loopdevs 2
+prepare_loopdevs
+
+dev1=${loopdevs[1]}
+dev2=${loopdevs[2]}
+
+run_check $SUDO_HELPER "$TOP"/mkfs.btrfs -f -draid1 $dev1 $dev2
+# move the device, changing its path, simulating the device being missing
+mv $dev2 /dev/loop-non-existent
+
+run_check $SUDO_HELPER mount -o degraded $dev1 $TEST_MNT
+
+if ! run_check_stdout $SUDO_HELPER "$TOP"/btrfs fi show $TEST_MNT | \
+	grep -q "$dev2 MISSING"; then
+
+	_fail "Didn't find exact missing device"
+fi
+
+mv /dev/loop-non-existent $dev2
+
+run_check $SUDO_HELPER umount $TEST_MNT
+
+cleanup_loopdevs
+