aboutsummaryrefslogtreecommitdiffstats
path: root/tests/zfs-tests/callbacks
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2020-03-10 14:00:56 -0400
committerGitHub <[email protected]>2020-03-10 11:00:56 -0700
commitddd9ef3a4fab1eed3ed7c32900fc7f9474f2929b (patch)
tree27bfc28c31a09694f5752d9dc150a85efdaf7be6 /tests/zfs-tests/callbacks
parent1dc32a67e93bbc8d650943f1a460abb9ff6c5083 (diff)
ZTS: Add a failsafe callback to run after each test
Tests that get killed do not have an opportunity to clean up. There are many bad states this can leave the system in, but of particular gravity is when zinject has been used to induce bad behavior for one or more of the test disks. Create a failsafe mechanism in test-runner.py that runs a callback script after every test. The script is common to all tests so all tests benefit from the protection. Add an obligatory `zinject -c all` to clear all zinject state after every test case is run. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: John Kennedy <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #10096
Diffstat (limited to 'tests/zfs-tests/callbacks')
-rw-r--r--tests/zfs-tests/callbacks/Makefile.am1
-rwxr-xr-xtests/zfs-tests/callbacks/zfs_failsafe.ksh8
2 files changed, 9 insertions, 0 deletions
diff --git a/tests/zfs-tests/callbacks/Makefile.am b/tests/zfs-tests/callbacks/Makefile.am
index 30e847241..512a737bb 100644
--- a/tests/zfs-tests/callbacks/Makefile.am
+++ b/tests/zfs-tests/callbacks/Makefile.am
@@ -1,5 +1,6 @@
pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/callbacks
dist_pkgdata_SCRIPTS = \
+ zfs_failsafe.ksh \
zfs_dbgmsg.ksh \
zfs_dmesg.ksh \
zfs_mmp.ksh
diff --git a/tests/zfs-tests/callbacks/zfs_failsafe.ksh b/tests/zfs-tests/callbacks/zfs_failsafe.ksh
new file mode 100755
index 000000000..0d14df701
--- /dev/null
+++ b/tests/zfs-tests/callbacks/zfs_failsafe.ksh
@@ -0,0 +1,8 @@
+#!/bin/ksh
+
+# Commands to perform failsafe-critical cleanup after a test is killed.
+#
+# This should only be used to ensure the system is restored to a functional
+# state in the event of tests being killed (preventing normal cleanup).
+
+zinject -c all