aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSara Hartse <[email protected]>2020-04-28 09:56:31 -0700
committerGitHub <[email protected]>2020-04-28 09:56:31 -0700
commit89a6610ed053359d2299715e519d06d2ca5c053f (patch)
treececf3eba8865cdab9520903e94964ff321c3efbe
parentfa254605385ca8db5ce8594018b044e7e3091b5f (diff)
Add more sanity testing for zdb input args
Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: John Kennedy <[email protected]> Signed-off-by: sara hartse <[email protected]> Closes #10243
-rw-r--r--tests/runfiles/common.run4
-rw-r--r--tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am3
-rwxr-xr-xtests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_neg.ksh (renamed from tests/zfs-tests/tests/functional/cli_root/zdb/zdb_001_neg.ksh)28
-rwxr-xr-xtests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_pos.ksh104
4 files changed, 127 insertions, 12 deletions
diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run
index 6f83dcd8b..a475db297 100644
--- a/tests/runfiles/common.run
+++ b/tests/runfiles/common.run
@@ -103,8 +103,8 @@ tests = [ 'clean_mirror_001_pos', 'clean_mirror_002_pos',
tags = ['functional', 'clean_mirror']
[tests/functional/cli_root/zdb]
-tests = ['zdb_001_neg', 'zdb_002_pos', 'zdb_003_pos', 'zdb_004_pos',
- 'zdb_005_pos', 'zdb_006_pos', 'zdb_checksum', 'zdb_decompress',
+tests = ['zdb_002_pos', 'zdb_003_pos', 'zdb_004_pos', 'zdb_005_pos',
+ 'zdb_006_pos', 'zdb_args_neg', 'zdb_args_pos', 'zdb_checksum', 'zdb_decompress',
'zdb_object_range_neg', 'zdb_object_range_pos', 'zdb_display_block',
'zdb_objset_id']
pre =
diff --git a/tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am b/tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am
index 71fe68436..e332a91a8 100644
--- a/tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am
+++ b/tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am
@@ -1,11 +1,12 @@
pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zdb
dist_pkgdata_SCRIPTS = \
- zdb_001_neg.ksh \
zdb_002_pos.ksh \
zdb_003_pos.ksh \
zdb_004_pos.ksh \
zdb_005_pos.ksh \
zdb_006_pos.ksh \
+ zdb_args_neg.ksh \
+ zdb_args_pos.ksh \
zdb_checksum.ksh \
zdb_decompress.ksh \
zdb_object_range_neg.ksh \
diff --git a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_001_neg.ksh b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_neg.ksh
index e69779bd4..508f20adb 100755
--- a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_001_neg.ksh
+++ b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_neg.ksh
@@ -56,18 +56,28 @@ set -A args "create" "add" "destroy" "import fakepool" \
"add mirror fakepool" "add raidz fakepool" \
"add raidz1 fakepool" "add raidz2 fakepool" \
"setvprop" "blah blah" "-%" "--?" "-*" "-=" \
- "-a" "-f" "-g" "-h" "-j" "-m" "-n" "-o" "-p" \
- "-p /tmp" "-r" "-t" "-w" "-x" "-y" "-z" \
- "-D" "-E" "-G" "-H" "-I" "-J" "-K" "-M" \
- "-N" "-Q" "-R" "-S" "-T" "-W" "-Z"
+ "-a" "-f" "-g" "-j" "-n" "-o" "-p" "-p /tmp" "-r" \
+ "-t" "-w" "-y" "-z" "-E" "-H" "-I" "-J" "-K" \
+ "-N" "-Q" "-R" "-T" "-W" "-Z"
log_assert "Execute zdb using invalid parameters."
-typeset -i i=0
-while [[ $i -lt ${#args[*]} ]]; do
- log_mustnot zdb ${args[i]}
+log_onexit cleanup
- ((i = i + 1))
-done
+function cleanup
+{
+ default_cleanup_noexit
+}
+
+function test_imported_pool
+{
+ for i in ${args[@]}; do
+ log_mustnot zdb $i $TESTPOOL
+ done
+}
+
+default_mirror_setup_noexit $DISKS
+
+test_imported_pool
log_pass "Badly formed zdb parameters fail as expected."
diff --git a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_pos.ksh
new file mode 100755
index 000000000..4bb5c3c4a
--- /dev/null
+++ b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_args_pos.ksh
@@ -0,0 +1,104 @@
+#!/bin/ksh -p
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+#
+# Copyright (c) 2012, 2020 by Delphix. All rights reserved.
+#
+
+. $STF_SUITE/include/libtest.shlib
+
+#
+# DESCRIPTION:
+# ZDB allows a large number of possible inputs
+# and combinations of those inputs. Test for non-zero
+# exit values. These input options are based on the zdb
+# man page
+#
+# STRATEGY:
+# 1. Create an array containing value zdb parameters.
+# 2. For each element, execute the sub-command.
+# 3. Verify it does not return a error.
+#
+
+verify_runnable "global"
+
+log_assert "Execute zdb using valid parameters."
+
+log_onexit cleanup
+
+function cleanup
+{
+ default_cleanup_noexit
+}
+
+function test_imported_pool
+{
+ typeset -a args=("-A" "-b" "-C" "-c" "-d" "-D" "-G" "-h" "-i" "-L" \
+ "-M" "-P" "-s" "-v" "-Y")
+ for i in ${args[@]}; do
+ log_must eval "zdb $i $TESTPOOL >/dev/null"
+ done
+}
+
+function test_exported_pool
+{
+ log_must zpool export $TESTPOOL
+ typeset -a args=("-A" "-b" "-C" "-c" "-d" "-D" "-F" "-G" "-h" "-i" "-L" "-M" \
+ "-P" "-s" "-v" "-X" "-Y")
+ for i in ${args[@]}; do
+ log_must eval "zdb -e $i $TESTPOOL >/dev/null"
+ done
+ log_must zpool import $TESTPOOL
+}
+
+function test_vdev
+{
+ typeset -a args=("-A" "-q" "-u" "-Aqu")
+ VDEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR})
+ log_note $VDEVS
+ set -A VDEV_ARRAY $VDEVS
+ for i in ${args[@]}; do
+ log_must eval "zdb -l $i ${VDEV_ARRAY[0]} >/dev/null"
+ done
+}
+
+function test_metaslab
+{
+ typeset -a args=("-A" "-L" "-P" "-Y")
+ for i in ${args[@]}; do
+ log_must eval "zdb -m $i $TESTPOOL >/dev/null"
+ done
+}
+
+default_mirror_setup_noexit $DISKS
+
+test_imported_pool
+test_exported_pool
+test_vdev
+test_metaslab
+
+log_pass "Valid zdb parameters pass as expected."