From 70c7714dca90d01b83a29d15c67e65ff93d034d4 Mon Sep 17 00:00:00 2001 From: Giuseppe Di Natale Date: Tue, 4 Oct 2016 15:13:42 -0700 Subject: [PATCH] Introduce tests for python scripts Implement tests to ensure that python scripts that are distributed with ZFS continue to at minimum run without errors. This will help prevent accidental breaking of these scripts. Signed-off-by: Giuseppe Di Natale --- tests/runfiles/linux.run | 3 +- tests/zfs-tests/include/default.cfg.in | 3 ++ .../functional/cli_user/misc/Makefile.am | 5 ++- .../cli_user/misc/arc_summary_001_pos.ksh | 40 ++++++++++++++++++ .../cli_user/misc/arcstat_001_pos.ksh | 41 +++++++++++++++++++ .../cli_user/misc/dbufstat_001_pos.ksh | 40 ++++++++++++++++++ zfs-script-config.sh.in | 3 ++ 7 files changed, 133 insertions(+), 2 deletions(-) create mode 100755 tests/zfs-tests/tests/functional/cli_user/misc/arc_summary_001_pos.ksh create mode 100755 tests/zfs-tests/tests/functional/cli_user/misc/arcstat_001_pos.ksh create mode 100755 tests/zfs-tests/tests/functional/cli_user/misc/dbufstat_001_pos.ksh diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 92f867ab9..732522831 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -355,7 +355,8 @@ tests = ['zdb_001_neg', 'zfs_001_neg', 'zfs_allow_001_neg', 'zpool_history_001_neg', 'zpool_import_001_neg', 'zpool_import_002_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_status_001_neg', 'zpool_upgrade_001_neg'] + 'zpool_status_001_neg', 'zpool_upgrade_001_neg', 'arcstat_001_pos', + 'arc_summary_001_pos', 'dbufstat_001_pos'] user = [tests/functional/cli_user/zfs_list] diff --git a/tests/zfs-tests/include/default.cfg.in b/tests/zfs-tests/include/default.cfg.in index a36ab3b1a..f93bfa98c 100644 --- a/tests/zfs-tests/include/default.cfg.in +++ b/tests/zfs-tests/include/default.cfg.in @@ -43,6 +43,9 @@ export ZPOOL=${ZPOOL:-${sbindir}/zpool} export ZTEST=${ZTEST:-${sbindir}/ztest} export ZPIOS=${ZPIOS:-${sbindir}/zpios} export RAIDZ_TEST=${RAIDZ_TEST:-${bindir}/raidz_test} +export ARC_SUMMARY=${ARC_SUMMARY:-${bindir}/arc_summary.py} +export ARCSTAT=${ARCSTAT:-${bindir}/arcstat.py} +export DBUFSTAT=${DBUFSTAT:-${bindir}/dbufstat.py} . $STF_SUITE/include/libtest.shlib diff --git a/tests/zfs-tests/tests/functional/cli_user/misc/Makefile.am b/tests/zfs-tests/tests/functional/cli_user/misc/Makefile.am index dad922c6d..cf7502c27 100644 --- a/tests/zfs-tests/tests/functional/cli_user/misc/Makefile.am +++ b/tests/zfs-tests/tests/functional/cli_user/misc/Makefile.am @@ -43,4 +43,7 @@ dist_pkgdata_SCRIPTS = \ zpool_scrub_001_neg.ksh \ zpool_set_001_neg.ksh \ zpool_status_001_neg.ksh \ - zpool_upgrade_001_neg.ksh + zpool_upgrade_001_neg.ksh \ + arcstat_001_pos.ksh \ + arc_summary_001_pos.ksh \ + dbufstat_001_pos.ksh diff --git a/tests/zfs-tests/tests/functional/cli_user/misc/arc_summary_001_pos.ksh b/tests/zfs-tests/tests/functional/cli_user/misc/arc_summary_001_pos.ksh new file mode 100755 index 000000000..e65fbe6b4 --- /dev/null +++ b/tests/zfs-tests/tests/functional/cli_user/misc/arc_summary_001_pos.ksh @@ -0,0 +1,40 @@ +#! /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 + +set -A args "" "-a" "-d" "-p 1" + +log_assert "arc_summary.py generates output and doesn't return an error code" + +typeset -i i=0 +while [[ $i -lt ${#args[*]} ]]; do + log_must eval "$ARC_SUMMARY ${args[i]} > /dev/null" + ((i = i + 1)) +done + +log_pass "arc_summary.py generates output and doesn't return an error code" diff --git a/tests/zfs-tests/tests/functional/cli_user/misc/arcstat_001_pos.ksh b/tests/zfs-tests/tests/functional/cli_user/misc/arcstat_001_pos.ksh new file mode 100755 index 000000000..edf80b10f --- /dev/null +++ b/tests/zfs-tests/tests/functional/cli_user/misc/arcstat_001_pos.ksh @@ -0,0 +1,41 @@ +#! /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 + +set -A args "" "-s \",\"" "-x" "-v" \ + "-f time,hit%,dh%,ph%,mh%" + +log_assert "arcstat.py generates output and doesn't return an error code" + +typeset -i i=0 +while [[ $i -lt ${#args[*]} ]]; do + log_must eval "$ARCSTAT ${args[i]} > /dev/null" + ((i = i + 1)) +done +log_pass "arcstat.py generates output and doesn't return an error code" + diff --git a/tests/zfs-tests/tests/functional/cli_user/misc/dbufstat_001_pos.ksh b/tests/zfs-tests/tests/functional/cli_user/misc/dbufstat_001_pos.ksh new file mode 100755 index 000000000..229ba72cb --- /dev/null +++ b/tests/zfs-tests/tests/functional/cli_user/misc/dbufstat_001_pos.ksh @@ -0,0 +1,40 @@ +#! /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 + +set -A args "" "-b" "-d" "-r" "-v" "-s \",\"" "-x" + +log_assert "dbufstat.py generates output and doesn't return an error code" + +typeset -i i=0 +while [[ $i -lt ${#args[*]} ]]; do + log_must eval "$DBUFSTAT ${args[i]} > /dev/null" + ((i = i + 1)) +done + +log_pass "dbufstat.py generates output and doesn't return an error code" diff --git a/zfs-script-config.sh.in b/zfs-script-config.sh.in index 594958fa0..d1ba71d76 100644 --- a/zfs-script-config.sh.in +++ b/zfs-script-config.sh.in @@ -29,6 +29,9 @@ export ZPOOL=${CMDDIR}/zpool/zpool export ZTEST=${CMDDIR}/ztest/ztest export ZPIOS=${CMDDIR}/zpios/zpios export RAIDZ_TEST=${CMDDIR}/raidz_test/raidz_test +export ARC_SUMMARY=${CMDDIR}/arc_summary/arc_summary.py +export ARCSTAT=${CMDDIR}/arcstat/arcstat.py +export DBUFSTAT=${CMDDIR}/dbufstat/dbufstat.py export COMMON_SH=${SCRIPTDIR}/common.sh export ZFS_SH=${SCRIPTDIR}/zfs.sh