53ddccf4f5bb8e7295dc3dc8e974c0f9d04ebf53
[metze/samba/wip.git] / ctdb / tests / UNIT / tool / scripts / local.sh
1 # Hey Emacs, this is a -*- shell-script -*- !!!  :-)
2
3 PATH="${PATH}:${CTDB_SCRIPTS_TOOLS_HELPER_DIR}"
4 PATH="${PATH}:${CTDB_SCRIPTS_HELPER_BINDIR}"
5
6 setup_ctdb_base "$CTDB_TEST_TMP_DIR" "ctdb-etc" \
7                 functions
8
9 if "$TEST_VERBOSE" ; then
10     debug () { echo "$@" ; }
11 else
12     debug () { : ; }
13 fi
14
15 ctdbd_socket=$(ctdb-path socket "ctdbd")
16 ctdbd_pidfile=$(ctdb-path pidfile "ctdbd")
17 ctdbd_dbdir=$(ctdb-path vardir append "db")
18
19 define_test ()
20 {
21     _f=$(basename "$0" ".sh")
22
23     case "$_f" in
24         ctdb.*)
25             _cmd="${_f#ctdb.}"
26             _cmd="${_cmd%.*}" # Strip test number
27             export CTDB="ctdb"
28             export CTDB_DEBUGLEVEL=NOTICE
29             if [ -z "$FAKE_CTDBD_DEBUGLEVEL" ] ; then
30                     FAKE_CTDBD_DEBUGLEVEL="ERR"
31             fi
32             export FAKE_CTDBD_DEBUGLEVEL
33             test_args="$_cmd"
34             ;;
35         *)
36             die "Unknown pattern for testcase \"$_f\""
37     esac
38
39     printf "%-28s - %s\n" "$_f" "$1"
40 }
41
42 cleanup_ctdbd ()
43 {
44         debug "Cleaning up fake ctdbd"
45
46         pid=$(cat "$ctdbd_pidfile" 2>/dev/null || echo)
47         if [ -n "$pid" ] ; then
48                 kill $pid || true
49                 rm -f "$ctdbd_pidfile"
50         fi
51         rm -f "$ctdbd_socket"
52         rm -rf "$ctdbd_dbdir"
53 }
54
55 setup_ctdbd ()
56 {
57         echo "Setting up fake ctdbd"
58
59         mkdir -p "$ctdbd_dbdir"
60         $VALGRIND fake_ctdbd -d "$FAKE_CTDBD_DEBUGLEVEL" \
61                   -s "$ctdbd_socket" -p "$ctdbd_pidfile" \
62                   -D "$ctdbd_dbdir"
63         # Wait till fake_ctdbd is running
64         wait_until 10 test -S "$ctdbd_socket" || \
65                 die "fake_ctdbd failed to start"
66
67         test_cleanup cleanup_ctdbd
68 }
69
70 ctdbd_getpid ()
71 {
72         cat "$ctdbd_pidfile"
73 }
74
75 setup_natgw ()
76 {
77         debug "Setting up NAT gateway"
78
79         export CTDB_NATGW_HELPER="${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/ctdb_natgw"
80         export CTDB_NATGW_NODES="${CTDB_BASE}/natgw_nodes"
81
82         cat >"$CTDB_NATGW_NODES"
83 }
84
85 setup_lvs ()
86 {
87         debug "Setting up LVS"
88
89         export CTDB_LVS_HELPER="${CTDB_SCRIPTS_TOOLS_HELPER_DIR}/ctdb_lvs"
90         export CTDB_LVS_NODES="${CTDB_BASE}/lvs_nodes"
91
92         cat >"$CTDB_LVS_NODES"
93 }
94
95 setup_nodes ()
96 {
97     _pnn="$1"
98
99     _f="${CTDB_BASE}/nodes${_pnn:+.}${_pnn}"
100
101     cat >"$_f"
102 }
103
104 simple_test_other ()
105 {
106         unit_test $CTDB -d $CTDB_DEBUGLEVEL "$@"
107 }
108
109 simple_test ()
110 {
111         simple_test_other $test_args "$@"
112 }