Handle invalid options in arc_summary
If an invalid option is provided to arc_summary.py we handle any error thrown from the getopt Python module and print the usage help message. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: loli10K <ezomori.nozomu@gmail.com> Closes #6983
This commit is contained in:
parent
2e7c1bb35a
commit
c4ba46dead
|
@ -977,9 +977,15 @@ def main():
|
||||||
global show_tunable_descriptions
|
global show_tunable_descriptions
|
||||||
global alternate_tunable_layout
|
global alternate_tunable_layout
|
||||||
|
|
||||||
|
try:
|
||||||
opts, args = getopt.getopt(
|
opts, args = getopt.getopt(
|
||||||
sys.argv[1:], "adp:h", ["alternate", "description", "page=", "help"]
|
sys.argv[1:],
|
||||||
|
"adp:h", ["alternate", "description", "page=", "help"]
|
||||||
)
|
)
|
||||||
|
except getopt.error as e:
|
||||||
|
sys.stderr.write("Error: %s\n" % e.msg)
|
||||||
|
usage()
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
args = {}
|
args = {}
|
||||||
for opt, arg in opts:
|
for opt, arg in opts:
|
||||||
|
@ -991,7 +997,7 @@ def main():
|
||||||
args['p'] = arg
|
args['p'] = arg
|
||||||
if opt in ('-h', '--help'):
|
if opt in ('-h', '--help'):
|
||||||
usage()
|
usage()
|
||||||
sys.exit()
|
sys.exit(0)
|
||||||
|
|
||||||
Kstat = get_Kstat()
|
Kstat = get_Kstat()
|
||||||
|
|
||||||
|
@ -1006,7 +1012,7 @@ def main():
|
||||||
except IndexError:
|
except IndexError:
|
||||||
sys.stderr.write('the argument to -p must be between 1 and ' +
|
sys.stderr.write('the argument to -p must be between 1 and ' +
|
||||||
str(len(unSub)) + '\n')
|
str(len(unSub)) + '\n')
|
||||||
sys.exit()
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
pages = unSub
|
pages = unSub
|
||||||
|
|
||||||
|
|
|
@ -408,7 +408,7 @@ tests = ['zdb_001_neg', 'zfs_001_neg', 'zfs_allow_001_neg',
|
||||||
'zpool_offline_001_neg', 'zpool_online_001_neg', 'zpool_remove_001_neg',
|
'zpool_offline_001_neg', 'zpool_online_001_neg', 'zpool_remove_001_neg',
|
||||||
'zpool_replace_001_neg', 'zpool_scrub_001_neg', 'zpool_set_001_neg',
|
'zpool_replace_001_neg', 'zpool_scrub_001_neg', 'zpool_set_001_neg',
|
||||||
'zpool_status_001_neg', 'zpool_upgrade_001_neg', 'arcstat_001_pos',
|
'zpool_status_001_neg', 'zpool_upgrade_001_neg', 'arcstat_001_pos',
|
||||||
'arc_summary_001_pos', 'dbufstat_001_pos']
|
'arc_summary_001_pos', 'arc_summary_002_neg', 'dbufstat_001_pos']
|
||||||
user =
|
user =
|
||||||
tags = ['functional', 'cli_user', 'misc']
|
tags = ['functional', 'cli_user', 'misc']
|
||||||
|
|
||||||
|
|
|
@ -46,4 +46,5 @@ dist_pkgdata_SCRIPTS = \
|
||||||
zpool_upgrade_001_neg.ksh \
|
zpool_upgrade_001_neg.ksh \
|
||||||
arcstat_001_pos.ksh \
|
arcstat_001_pos.ksh \
|
||||||
arc_summary_001_pos.ksh \
|
arc_summary_001_pos.ksh \
|
||||||
|
arc_summary_002_neg.ksh \
|
||||||
dbufstat_001_pos.ksh
|
dbufstat_001_pos.ksh
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/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 (c) 2015 by Lawrence Livermore National Security, LLC.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
|
||||||
|
. $STF_SUITE/include/libtest.shlib
|
||||||
|
|
||||||
|
typeset args=("-x" "-r" "-5" "-p 7" "--err" "-@")
|
||||||
|
|
||||||
|
log_assert "arc_summary.py generates an error code with invalid options"
|
||||||
|
|
||||||
|
for arg in "${args[@]}"; do
|
||||||
|
log_mustnot eval "arc_summary.py $arg > /dev/null"
|
||||||
|
done
|
||||||
|
|
||||||
|
log_pass "arc_summary.py generates an error code with invalid options"
|
Loading…
Reference in New Issue