Whamcloud - gitweb
b=21115
[fs/lustre-release.git] / lustre / tests / functions.sh
1 #!/bin/bash
2
3 # Simple function used by run_*.sh scripts
4
5 assert_env() {
6     local failed=""
7     for name in $@; do
8         if [ -z "${!name}" ]; then
9             echo "$0: $name must be set"
10             failed=1
11         fi
12     done
13     [ $failed ] && exit 1 || true
14 }
15
16 echoerr () { echo "$@" 1>&2 ; }
17
18 signaled() {
19     echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate"
20
21     local PGID=$(ps -eo "%c %p %r" | awk "/ $PPID / {print \$3}")
22     kill -TERM -$PGID
23     sleep 5
24     kill -KILL -$PGID
25 }
26
27 mpi_run () {
28     local mpirun="$MPIRUN $MPIRUN_OPTIONS"
29     local command="$mpirun $@"
30     local mpilog=$TMP/mpi.log
31     local rc
32
33     if [ "$MPI_USER" != root -a $mpirun ]; then
34         echo "+ chmod 0777 $MOUNT"
35         chmod 0777 $MOUNT
36         command="su $MPI_USER sh -c \"$command \""
37     fi
38
39     ls -ald $MOUNT
40     echo "+ $command"
41     eval $command 2>&1 > $mpilog || true
42
43     rc=${PIPESTATUS[0]}
44     if [ $rc -eq 0 ] && grep -q "p4_error: : [^0]" $mpilog ; then
45        rc=1
46     fi
47     cat $mpilog
48     return $rc
49 }
50