Whamcloud - gitweb
1dd9ac54800cbff745b0ebc51fd06080fb0a6c7b
[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
51 nids_list () {
52    local list
53    for i in ${1//,/ }; do
54        list="$list $i@$NETTYPE"
55    done
56    echo $list
57 }
58
59 # FIXME: all setup/cleanup can be done without rpc.sh
60 lst_end_session () {
61     local verbose=false
62     [ x$1 = x--verbose ] && verbose=true
63
64     export LST_SESSION=`$LST show_session 2>/dev/null | awk -F " " '{print $5}'`
65     [ "$LST_SESSION" == "" ] && return
66
67     if $verbose; then 
68         $LST show_error c s
69     fi
70     $LST stop b
71     $LST end_session
72 }
73
74 lst_session_cleanup_all () {
75     local list=$(comma_list $(nodes_list))
76     do_rpc_nodes $list lst_end_session
77 }
78
79 lst_cleanup () {
80     lsmod | grep -q lnet_selftest && rmmod lnet_selftest > /dev/null 2>&1 || true
81 }
82
83 lst_cleanup_all () {
84    local list=$(comma_list $(nodes_list))
85
86    # lst end_session needs to be executed only locally
87    # i.e. on node where lst new_session was called
88    lst_end_session --verbose 
89    do_rpc_nodes $list lst_cleanup
90 }
91
92 lst_setup () {
93     load_module lnet_selftest
94 }
95
96 lst_setup_all () {
97     local list=$(comma_list $(nodes_list))
98     do_rpc_nodes $list lst_setup 
99 }
100