#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2021 Oracle.  All Rights Reserved.

# Boilerplate fstests functionality

# Standard cleanup function.  Individual tests can override this.
_cleanup()
{
	command -v _kill_fsstress &>/dev/null && _kill_fsstress
	cd /
	rm -r -f $tmp.*
}

# Install the supplied cleanup code as a signal handler for HUP, INT, QUIT,
# TERM, or when the test exits.  Extra signals can be specified as subsequent
# parameters.
_register_cleanup()
{
	local cleanup="$1"
	shift

	test -n "$cleanup" && cleanup="${cleanup}; "
	trap "${cleanup}exit \$status" EXIT HUP INT QUIT TERM $*
}

# Prepare to run a fstest by initializing the required global variables to
# their defaults, sourcing common functions, registering a cleanup function,
# and removing the $seqres.full file.
#
# The list of group memberships for this test (e.g. auto quick rw) must be
# passed as arguments to this helper.  It is not necessary to name this test
# explicitly as a member of the 'all' group.
_begin_fstest()
{
	. common/exit
	. common/test_names

	if [ -n "$seq" ]; then
		echo "_begin_fstest can only be called once!"
		_exit 1
	fi

	seq=`basename $0`

	seqres=$RESULT_DIR/$seq
	echo "QA output created by $seq"

	here=`pwd`
	tmp=/tmp/$$
	status=1	# failure is the default!

	_register_cleanup _cleanup

	. ./common/rc
	init_rc

	# remove previous $seqres.full before test
	rm -f $seqres.full $seqres.hints

}
