Move tests/*.c to tests/src/*.c and adjust Makefile.in accordingly.
authorMartin Schwenke <martin@meltin.net>
Fri, 21 Nov 2008 08:01:48 +0000 (19:01 +1100)
committerMartin Schwenke <martin@meltin.net>
Fri, 21 Nov 2008 08:01:48 +0000 (19:01 +1100)
Move setting of $CTDB_NODES_SOCKETS to tests/scripts/run_tests and
make it only happen if $CTDB_TEST_REAL_CLUSTER is not set.  Bugfix in
function ips_are_on_nodeglob.  New/proper implementations of functions
stop_daemons and start_daemons, now called by function restart_ctdb.
In start_daemons.sh, add public addresses file generation/usage, use
new option --nopublicipcheck to ctdbd to avoid crazy behaviour and
kill ctdbd more carefully to avoid killing real daemons on a real
cluster - this should be able to coexist on a node of a real cluster.
start_daemons.sh is temporarily incompatible with start_daemons
function, but expecting to replace that script with function calls
very soon anyway...

Signed-off-by: Martin Schwenke <martin@meltin.net>
15 files changed:
.gitignore
Makefile.in
tests/scripts/ctdb_test_functions.bash
tests/scripts/run_tests
tests/simple/31_ctdb_disable_simple.sh
tests/src/ctdb_bench.c [moved from tests/ctdb_bench.c with 100% similarity]
tests/src/ctdb_fetch.c [moved from tests/ctdb_fetch.c with 100% similarity]
tests/src/ctdb_persistent.c [moved from tests/ctdb_persistent.c with 100% similarity]
tests/src/ctdb_randrec.c [moved from tests/ctdb_randrec.c with 100% similarity]
tests/src/ctdb_store.c [moved from tests/ctdb_store.c with 100% similarity]
tests/src/ctdb_transaction.c [moved from tests/ctdb_transaction.c with 100% similarity]
tests/src/ctdb_traverse.c [moved from tests/ctdb_traverse.c with 100% similarity]
tests/src/rb_perftest.c [moved from tests/rb_perftest.c with 100% similarity]
tests/src/rb_test.c [moved from tests/rb_test.c with 100% similarity]
tests/start_daemons.sh

index 91124db066a746351008c8ac789ef11251c6d506..b84c67690999997d17e20729fd134c72ca5448df 100644 (file)
@@ -18,4 +18,4 @@ nodes.txt
 public_addresses.txt
 rec.lock
 test.db
-var
+tests/var
index 779bd8b4b01b321df2fa84f692dce72a8457040e..212fa69b15ee4f5fb91625ca5d2ecae59bfce09d 100755 (executable)
@@ -114,37 +114,37 @@ utils/smnotify/gen_smnotify.c: utils/smnotify/smnotify.x utils/smnotify/smnotify
        @echo Generating $@
        rpcgen -l utils/smnotify/smnotify.x > utils/smnotify/gen_smnotify.c 
 
-bin/rb_test: $(CTDB_CLIENT_OBJ) tests/rb_test.o 
+bin/rb_test: $(CTDB_CLIENT_OBJ) tests/src/rb_test.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/rb_test.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/rb_test.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_bench: $(CTDB_CLIENT_OBJ) tests/ctdb_bench.o 
+bin/ctdb_bench: $(CTDB_CLIENT_OBJ) tests/src/ctdb_bench.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_bench.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_bench.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_fetch: $(CTDB_CLIENT_OBJ) tests/ctdb_fetch.o 
+bin/ctdb_fetch: $(CTDB_CLIENT_OBJ) tests/src/ctdb_fetch.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_fetch.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_fetch.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_store: $(CTDB_CLIENT_OBJ) tests/ctdb_store.o 
+bin/ctdb_store: $(CTDB_CLIENT_OBJ) tests/src/ctdb_store.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_store.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_store.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_traverse: $(CTDB_CLIENT_OBJ) tests/ctdb_traverse.o 
+bin/ctdb_traverse: $(CTDB_CLIENT_OBJ) tests/src/ctdb_traverse.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_traverse.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_traverse.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_randrec: $(CTDB_CLIENT_OBJ) tests/ctdb_randrec.o 
+bin/ctdb_randrec: $(CTDB_CLIENT_OBJ) tests/src/ctdb_randrec.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_randrec.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_randrec.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_persistent: $(CTDB_CLIENT_OBJ) tests/ctdb_persistent.o 
+bin/ctdb_persistent: $(CTDB_CLIENT_OBJ) tests/src/ctdb_persistent.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_persistent.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_persistent.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
-bin/ctdb_transaction: $(CTDB_CLIENT_OBJ) tests/ctdb_transaction.o 
+bin/ctdb_transaction: $(CTDB_CLIENT_OBJ) tests/src/ctdb_transaction.o 
        @echo Linking $@
-       @$(CC) $(CFLAGS) -o $@ tests/ctdb_transaction.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
+       @$(CC) $(CFLAGS) -o $@ tests/src/ctdb_transaction.o $(CTDB_CLIENT_OBJ) $(LIB_FLAGS)
 
 bin/ibwrapper_test: $(CTDB_CLIENT_OBJ) ib/ibwrapper_test.o
        @echo Linking $@
index d1886b8ebde153503a77db9310843cd74777ff01..3713c98e49e144f082d80d8f98cd9e289fff85cc 100644 (file)
@@ -1,15 +1,5 @@
 # Hey Emacs, this is a -*- shell-script -*- !!!  :-)
 
-numnodes=3
-
-export CTDB_NODES_SOCKETS=""
-for i in $(seq 1 $numnodes) ; do
-    CTDB_NODES_SOCKETS="${CTDB_NODES_SOCKETS}${CTDB_NODES_SOCKETS:+ }${PWD}/sock.${i}"
-done
-
-
-######################################################################
-
 fail ()
 {
     echo "$*"
@@ -55,7 +45,7 @@ test_end ()
     testduration=$(($(date +%s)-$teststarttime))
 
     echo "=========================================================================="
-    echo "TEST ${interp}: ${name}${statstr}, duration: $testduration sec."
+    echo "TEST ${interp}: ${name}${statstr} (duration: ${testduration}s)"
     echo "=========================================================================="
 
 }
@@ -258,7 +248,7 @@ ips_are_on_nodeglob ()
 
     local out
 
-    try_command_on_node 1 ctdb ip
+    try_command_on_node 1 ctdb ip -n all
 
     while read ip pnn ; do
        for check in $ips ; do
@@ -283,10 +273,68 @@ wait_until_ips_are_on_nodeglob ()
     wait_until 60 ips_are_on_nodeglob "$@"
 }
 
+stop_daemons ()
+{
+    echo "Attempting to politely shutdown daemons..."
+    onnode 1 ctdb shutdown -n all || true
+
+    echo "Sleeping for a while..."
+    sleep_for 1
+
+    if pidof $CTDB_DIR/bin/ctdbd >/dev/null ; then
+       echo "Killing remaining daemons..."
+       killall $CTDB_DIR/bin/ctdbd
+
+       if pidof $CTDB_DIR/bin/ctdbd >/dev/null ; then
+           echo "Once more with feeling.."
+           killall -9 $CTDB_DIR/bin/ctdbd
+       fi
+    fi
+
+    var_dir=$CTDB_DIR/tests/var
+    rm -rf $var_dir/test.db
+}
 
 start_daemons ()
 {
-    $CTDB_DIR/tests/start_daemons.sh $numnodes >$CTDB_DIR/var/daemons.log
+    local num_nodes="${1:-2}" # default is 2 nodes
+    shift # "$@" gets passed to ctdbd
+
+    local var_dir=$CTDB_DIR/tests/var
+
+    mkdir -p $var_dir/test.db/persistent
+
+    local nodes=$var_dir/nodes.txt
+    local public_addresses=$var_dir/public_addresses.txt
+    rm -f $nodes $public_addresses
+
+    local i
+    for i in $(seq 1 $num_nodes) ; do
+       if [ "${CTDB_USE_IPV6}x" != "x" ]; then
+           echo ::$i >> $nodes
+           ip addr add ::$i/128 dev lo
+       else
+           echo 127.0.0.$i >> $nodes
+           # 2 public addresses per node, just to make things interesting.
+           echo "192.0.2.$i/24 lo" >> $public_addresses
+           echo "192.0.2.$(($i + $num_nodes))/24 lo" >> $public_addresses
+       fi
+    done
+
+    local ctdb_options="--reclock=$var_dir/rec.lock --nlist $nodes --public-addresses $public_addresses --nopublicipcheck --event-script-dir=tests/events.d --logfile=$var_dir/daemons.log -d 0 --dbdir=$var_dir/test.db --dbdir-persistent=$var_dir/test.db/persistent"
+
+    echo "Starting $num_nodes ctdb daemons..."
+    for i in $(seq 1 $num_nodes) ; do
+       if [ $(id -u) -eq 0 ]; then
+            ctdb_options="$ctdb_options --public-interface=lo"
+       fi
+
+       $VALGRIND bin/ctdbd --socket=$var_dir/sock.$i $ctdb_options "$@" || return 1
+    done
+
+    if [ -L /tmp/ctdb.socket -o ! -S /tmp/ctdb.socket ] ; then 
+       ln -sf $var_dir/sock.1 /tmp/ctdb.socket || return 1
+    fi
 }
 
 _restart_ctdb ()
@@ -301,8 +349,8 @@ _restart_ctdb ()
 restart_ctdb ()
 {
     if [ -n "$CTDB_NODES_SOCKETS" ] ; then
-       onnode all ctdb shutdown
-       start_daemons
+       stop_daemons
+       start_daemons $CTDB_NUM_NODES
     else
        onnode -pq all $TEST_WRAP _restart_ctdb 
     fi || return 1
@@ -327,7 +375,3 @@ ctdb_test_exit ()
 
     test_exit
 }
-
-########################################
-
-export PATH=/usr/local/autocluster:$PATH
index eab28f06ea9e8bbf96e826e3484e9ab175047b8a..9827ebed63031611a87fac61d0f1e167494c716c 100755 (executable)
@@ -1,9 +1,23 @@
 #!/bin/bash
 
 export CTDB_DIR=$(cd $(dirname $(dirname $(dirname $0))) ; pwd)
+var_dir=$CTDB_DIR/tests/var
 
-ctdb_bin_dir="${CTDB_DIR}/bin"
-ctdb_tools_dir="${CTDB_DIR}/tools"
+export CTDB_NUM_NODES=3
+
+######################################################################
+
+if [ ! -n "$CTDB_TEST_REAL_CLUSTER" ] ; then
+    export CTDB_NODES_SOCKETS=""
+    for i in $(seq 1 $CTDB_NUM_NODES) ; do
+       CTDB_NODES_SOCKETS="${CTDB_NODES_SOCKETS}${CTDB_NODES_SOCKETS:+ }${var_dir}/sock.${i}"
+    done
+fi
+
+######################################################################
+
+ctdb_bin_dir=$CTDB_DIR/bin
+ctdb_tools_dir=$CTDB_DIR/tools
 ctdb_test_scripts_dir=$(cd $(dirname $0) ; pwd)
 
 PATH="${ctdb_test_scripts_dir}:${ctdb_bin_dir}:${ctdb_tools_dir}:${PATH}"
index fdb7daed87391dc9d8a08387249ef00226ea1346..f49af883969378773ad0d31ee2bb591aab00799f 100755 (executable)
@@ -36,4 +36,6 @@ else
     testfailures=1
 fi
 
+echo "Expect a restart here..."
+
 ctdb_test_exit
similarity index 100%
rename from tests/ctdb_bench.c
rename to tests/src/ctdb_bench.c
similarity index 100%
rename from tests/ctdb_fetch.c
rename to tests/src/ctdb_fetch.c
similarity index 100%
rename from tests/ctdb_store.c
rename to tests/src/ctdb_store.c
similarity index 100%
rename from tests/rb_perftest.c
rename to tests/src/rb_perftest.c
similarity index 100%
rename from tests/rb_test.c
rename to tests/src/rb_test.c
index 424d8920610b32878e38eba8fdff19000904183e..60c0a66a9e899452cef2578645c65cd69bce76f8 100755 (executable)
@@ -7,26 +7,24 @@ fi
 shift
 
 NODES="./tests/nodes.txt"
-rm -f $NODES
 PUBLIC_ADDRESSES=./tests/public_addresses.txt
-rm -f $PUBLIC_ADDRESSES
+rm -f $NODES $PUBLIC_ADDRESSES
 for i in `seq 1 $NUMNODES`; do
   if [ "${CTDB_USE_IPV6}x" != "x" ]; then
     echo ::$i >> $NODES
     ip addr add ::$i/128 dev lo
   else
     echo 127.0.0.$i >> $NODES
-    #echo "127.0.1.$i/24 lo" >> $PUBLIC_ADDRESSES
-    #echo "127.0.1.$(($i + $NUMNODES))/24 lo" >> $PUBLIC_ADDRESSES
+    # 2 public addresses per node, just to make things interesting.
     echo "192.0.2.$i/24 lo" >> $PUBLIC_ADDRESSES
     echo "192.0.2.$(($i + $NUMNODES))/24 lo" >> $PUBLIC_ADDRESSES
   fi
 done
 
-killall -q ctdbd
+killall -q $PWD/bin/ctdbd
 rm -rf test.db/persistent/*
  
-CTDB_OPTIONS="--reclock=rec.lock --nlist $NODES --public-addresses $PUBLIC_ADDRESSES --event-script-dir=tests/events.d --logfile=- -d 0 --dbdir=test.db --dbdir-persistent=test.db/persistent $*"
+CTDB_OPTIONS="--reclock=rec.lock --nlist $NODES --public-addresses $PUBLIC_ADDRESSES --nopublicipcheck --event-script-dir=tests/events.d --logfile=- -d 0 --dbdir=test.db --dbdir-persistent=test.db/persistent $*"
 
 echo "Starting $NUMNODES ctdb daemons"
 for i in `seq 1 $NUMNODES`; do