glusterfs/tests/traps.rc
Jeff Darcy c6d1b9797d tests: use trap mechanism to ensure that proper cleanups happen
This actually consists of several parts.

  * Added a generic cleanup-scheduling mechanism.  Instead of calling
    "trap ... EXIT" directly, just call "push_trapfunc ..." instead and
    your cleanup function will be called along with any others.

  * Converted a few tests to use push_trapfunc.

  * Added "push_trapfunc cleanup_lvm" to snapshot.rc to address the
    particular problem that's driving this - snapshot tests not calling
    cleanup_lvm on their own and leaving bad state for the next test.

Change-Id: I548a97a26328390992fc71ee1f03c0463703f9d7
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-on: http://review.gluster.org/13933
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
2016-04-12 05:04:24 -07:00

23 lines
642 B
Bash

#!/bin/bash
# Make sure this only gets included/executed once. Unfortunately, bash doesn't
# usually distinguish between values that are unset and values that are null.
# To work around that, we declare TRAPFUNCS to be a one-element array right at
# the start, but that one element is : which is defined to do nothing.
if [ ${#TRAPFUNCS[@]} = 0 ]; then
TRAPFUNCS=(:)
push_trapfunc () {
TRAPFUNCS[${#TRAPFUNCS[@]}]="$@"
}
execute_trapfuncs () {
for i in "${TRAPFUNCS[@]}"; do
$i
done
}
trap execute_trapfuncs EXIT
fi