mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
CONFIG: additional packaging helpers, tutorial test helper
- bin/tools/create-mpi-config to query/write values for system openmpi. In some cases this can be used to avoid an mpicc requirement at runtime. - adjust openfoam session to include -test-tutorial forwarding to the tutorials/AutoTest. This helps with writing installation tests. - adjust foamConfigurePaths to latest version - removal of gperftools default config, as per develop
This commit is contained in:
199
tutorials/AutoTest
Executable file
199
tutorials/AutoTest
Executable file
@ -0,0 +1,199 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | www.openfoam.com
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright (C) 2020 OpenCFD Ltd.
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
||||
#
|
||||
# Script
|
||||
# tutorials/AutoTest dir [.. dirN]
|
||||
#
|
||||
# Description
|
||||
# Run foamRunTutorials with specified tutorial directories
|
||||
# Creates/destroys a temporary directory for each test.
|
||||
#
|
||||
# Environment
|
||||
# Requires an initialized OpenFOAM environment.
|
||||
#
|
||||
# Note
|
||||
# Potentially useful for debian autopkgtest
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# Auto-detect from location
|
||||
#Unused# projectDir="$(\cd "$(dirname "${0%/*}")" && \pwd -L)"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
printHelp() {
|
||||
cat<<USAGE
|
||||
|
||||
usage: ${0##*/} [OPTION] dir [.. dirN]
|
||||
|
||||
options:
|
||||
-1 Modify case controlDict to run only one time step (default)
|
||||
-full Do not modify controlDict (run tutorial to completion)
|
||||
-debian Any modifications when running with autopkgtest
|
||||
-help Print the usage
|
||||
|
||||
Run foamRunTutorials with specified tutorial directories.
|
||||
Creates/destroys a temporary directory for each.
|
||||
|
||||
USAGE
|
||||
exit 0 # A clean exit
|
||||
}
|
||||
|
||||
# Report error and exit
|
||||
die()
|
||||
{
|
||||
exec 1>&2
|
||||
echo
|
||||
echo "Error encountered:"
|
||||
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
|
||||
echo
|
||||
echo "See '${0##*/} -help' for usage"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset optDebian optVerbose
|
||||
optRunLimit=1
|
||||
|
||||
# Parse options
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-h*)
|
||||
printHelp
|
||||
;;
|
||||
|
||||
-1)
|
||||
optRunLimit="${1#-}"
|
||||
;;
|
||||
|
||||
-full)
|
||||
unset optRunLimit
|
||||
;;
|
||||
|
||||
-debian)
|
||||
# Redirect stderr to stdout, if autopkgtest (tests/control)
|
||||
# does NOT use "Restrictions: allow-stderr"
|
||||
exec 2>&1
|
||||
;;
|
||||
|
||||
--)
|
||||
break
|
||||
;;
|
||||
|
||||
-*)
|
||||
die "unknown option $1"
|
||||
;;
|
||||
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Basic sanity checks
|
||||
|
||||
[ -n "$FOAM_TUTORIALS" ] || export FOAM_TUTORIALS="$WM_PROJECT_DIR"/tutorials
|
||||
|
||||
[ -d "${WM_PROJECT_DIR:?}" ] || die "No OpenFOAM environment: $WM_PROJECT_DIR"
|
||||
[ -d "$FOAM_TUTORIALS" ] || die "No OpenFOAM tutorials : $FOAM_TUTORIALS"
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# Modify case controlDicts to run only one time step
|
||||
#
|
||||
modifyCaseControlDict()
|
||||
{
|
||||
for dict in $(find . -name "controlDict*" -type f)
|
||||
do
|
||||
cp -f "${dict}" "${dict}.orig"
|
||||
sed \
|
||||
-e 's/\(startFrom[ \t]*\)\([A-Za-z]*\);/\1 latestTime;/' \
|
||||
-e 's/\(stopAt[ \t]*\)\([A-Za-z]*\);/\1 nextWrite;/' \
|
||||
-e 's/\(writeControl[ \t]*\)\([A-Za-z]*\);/\1 timeStep;/' \
|
||||
-e 's/\(writeInterval[ \t]*\)\([-.0-9A-Za-z]*\);/\1 '"$optRunLimit"';/' \
|
||||
"${dict}.orig" > "${dict}"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
nTests="$#"
|
||||
nPassed=0
|
||||
|
||||
for testdir in "$@"
|
||||
do
|
||||
testdir="${testdir#tutorials/}"
|
||||
testdir="$(echo "$testdir" | sed -e 's@^//*@@; s@//*$@@;')"
|
||||
suffix="$(echo "$testdir" | sed -e 's@//*@_@g')"
|
||||
|
||||
if [ -n "$testdir" ] && [ -d "$FOAM_TUTORIALS/$testdir" ]
|
||||
then
|
||||
(
|
||||
echo "Run test: $testdir"
|
||||
set -e
|
||||
|
||||
TESTDIR="$(mktemp --directory --suffix=".$suffix")"
|
||||
trap 'rm -rf $TESTDIR' 0 INT QUIT ABRT PIPE TERM
|
||||
|
||||
cp -r "$FOAM_TUTORIALS/$testdir"/* "$TESTDIR"/
|
||||
cd "$TESTDIR"
|
||||
|
||||
if [ -n "$optRunLimit" ]
|
||||
then
|
||||
set +e
|
||||
modifyCaseControlDict
|
||||
set -e
|
||||
fi
|
||||
|
||||
nInput="$(ls | wc -l)"
|
||||
foamRunTutorials
|
||||
nOutput="$(ls | wc -l)"
|
||||
|
||||
if [ "$nInput" = 0 ]
|
||||
then
|
||||
echo "No input for $testdir" 1>&2
|
||||
exit 1
|
||||
elif [ "$nOutput" = "$nInput" ]
|
||||
then
|
||||
echo "Run failure for $testdir" 1>&2
|
||||
exit 1
|
||||
else
|
||||
echo "run: OK"
|
||||
fi
|
||||
) && nPassed=$((nPassed + 1))
|
||||
|
||||
else
|
||||
echo "No tutorial: $testdir" 1>&2
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
if [ "$nTests" = 0 ]
|
||||
then
|
||||
die "No tests specified"
|
||||
elif [ "$nPassed" = "$nTests" ]
|
||||
then
|
||||
echo "Passed all $nTests tests"
|
||||
else
|
||||
echo "Passed $nPassed/$nTests tests" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user