]> granicus.if.org Git - zfs/commitdiff
Add regression test for "zpool list -p"
authorPaul Dagnelie <pcd@delphix.com>
Mon, 26 Aug 2019 01:33:03 +0000 (18:33 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 26 Aug 2019 01:33:03 +0000 (18:33 -0700)
Other than this test, zpool list -p is not well tested by any of the
automated tests.  Add a test for zpool list -p.

Reviewed-by: Prakash Surya <prakash.surya@delphix.com>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #9134

tests/runfiles/linux.run
tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile.am
tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_005_pos.ksh [new file with mode: 0755]
tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg [new file with mode: 0644]

index 848c19e3ecdda9ed67c8b84539910aa8577d53ac..80b48ee1d48e9375bf1c4cca524aa35f5b5f607a 100644 (file)
@@ -361,7 +361,7 @@ tags = ['functional', 'cli_root', 'zpool_export']
 
 [tests/functional/cli_root/zpool_get]
 tests = ['zpool_get_001_pos', 'zpool_get_002_pos', 'zpool_get_003_pos',
-    'zpool_get_004_neg']
+    'zpool_get_004_neg', 'zpool_get_005_pos']
 tags = ['functional', 'cli_root', 'zpool_get']
 
 [tests/functional/cli_root/zpool_history]
index 36a7f23126a4d51dd48d83da49e2a9d1d0e41529..0c87c9b377636d1aceca102ef96613bc6fde20d1 100644 (file)
@@ -5,7 +5,8 @@ dist_pkgdata_SCRIPTS = \
        zpool_get_001_pos.ksh \
        zpool_get_002_pos.ksh \
        zpool_get_003_pos.ksh \
-       zpool_get_004_neg.ksh
+       zpool_get_004_neg.ksh \
+       zpool_get_005_pos.ksh
 
 dist_pkgdata_DATA = \
-       zpool_get.cfg
+       zpool_get.cfg zpool_get_parsable.cfg
diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_005_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_005_pos.ksh
new file mode 100755 (executable)
index 0000000..ad27d18
--- /dev/null
@@ -0,0 +1,78 @@
+#!/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) 2014 by Delphix. All rights reserved.
+#
+
+. $STF_SUITE/include/libtest.shlib
+. $STF_SUITE/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg
+
+#
+# DESCRIPTION:
+#
+# Zpool get returns parsable values for all known parsable properties
+#
+# STRATEGY:
+# 1. For all parsable properties, verify zpool get -p returns a parsable value
+#
+
+if ! is_global_zone ; then
+       TESTPOOL=${TESTPOOL%%/*}
+fi
+
+typeset -i i=0
+
+while [[ $i -lt "${#properties[@]}" ]]; do
+       log_note "Checking for parsable ${properties[$i]} property"
+       log_must eval "zpool get -p ${properties[$i]} $TESTPOOL >/tmp/value.$$"
+       grep "${properties[$i]}" /tmp/value.$$ >/dev/null 2>&1
+       if [[ $? -ne 0 ]]; then
+               log_fail "${properties[$i]} not seen in output"
+       fi
+
+       typeset v=$(grep "${properties[$i]}" /tmp/value.$$ | awk '{print $3}')
+
+       log_note "${properties[$i]} has a value of $v"
+
+       # Determine if this value is a valid number, result in return code
+       log_must test -n "$v"
+       expr $v + 0 >/dev/null 2>&1
+
+       # All properties must be positive integers in order to be
+       # parsable (i.e. a return code of 0 or 1 from expr above).
+       # The only exception is "expandsize", which may be "-".
+       if [[ ! ($? -eq 0 || $? -eq 1 || \
+           ("${properties[$i]}" = "expandsize" && "$v" = "-")) ]]; then
+               log_fail "${properties[$i]} is not parsable"
+       fi
+
+       i=$(( $i + 1 ))
+done
+
+rm /tmp/value.$$
+log_pass "Zpool get returns parsable values for all known parsable properties"
diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg b/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg
new file mode 100644 (file)
index 0000000..e7b95a4
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# 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 2009 Sun Microsystems, Inc.  All rights reserved.
+# Use is subject to license terms.
+#
+
+#
+# Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+#
+
+# Set the expected properties of zpool
+typeset -a properties=("allocated" "capacity" "expandsize" "free" "freeing"
+    "leaked" "size")