tdb: expose transaction lock infrastructure for ctdb
[sahlberg/ctdb.git] / tests / recover.sh
index 79fe70f2a4baf3848b3e1fbe9829005124957990..c626441786b050a47e59527c2db5702e2bb80873 100755 (executable)
@@ -3,21 +3,22 @@
 killall -q ctdbd
 
 echo "Starting 4 ctdb daemons"
-bin/ctdbd --nlist direct/4nodes.txt
-bin/ctdbd --nlist direct/4nodes.txt
-bin/ctdbd --nlist direct/4nodes.txt
-bin/ctdbd --nlist direct/4nodes.txt
+bin/ctdbd --recovery-daemon --nlist tests/4nodes.txt
+bin/ctdbd --recovery-daemon --nlist tests/4nodes.txt --listen=127.0.0.2 --socket=/tmp/ctdb.socket.127.0.0.2
+bin/ctdbd --recovery-daemon --nlist tests/4nodes.txt --listen=127.0.0.3 --socket=/tmp/ctdb.socket.127.0.0.3
+bin/ctdbd --recovery-daemon --nlist tests/4nodes.txt --listen=127.0.0.4 --socket=/tmp/ctdb.socket.127.0.0.4
 
+echo
 echo "Attaching to some databases"
-bin/ctdb_control --socket=/tmp/ctdb.socket attach test1.tdb || exit 1
-bin/ctdb_control --socket=/tmp/ctdb.socket attach test2.tdb || exit 1
-bin/ctdb_control --socket=/tmp/ctdb.socket attach test3.tdb || exit 1
-bin/ctdb_control --socket=/tmp/ctdb.socket attach test4.tdb || exit 1
+bin/ctdb_control attach test1.tdb || exit 1
+bin/ctdb_control attach test2.tdb || exit 1
+bin/ctdb_control attach test3.tdb || exit 1
+bin/ctdb_control attach test4.tdb || exit 1
 
 echo "Clearing all databases to make sure they are all empty"
-bin/ctdb_control --socket=/tmp/ctdb.socket getdbmap 0 | egrep "^dbid:" | sed -e "s/^dbid://" -e "s/ .*$//" | while read DB; do
+bin/ctdb_control getdbmap 0 | egrep "^dbid:" | sed -e "s/^dbid://" -e "s/ .*$//" | while read DB; do
        seq 0 3 | while read NODE; do
-               bin/ctdb_control --socket=/tmp/ctdb.socket cleardb $NODE $DB
+               bin/ctdb_control cleardb $NODE $DB
        done
 done
 
@@ -26,60 +27,60 @@ echo
 echo
 echo "Printing all databases on all nodes. they should all be empty"
 echo "============================================================="
-bin/ctdb_control --socket=/tmp/ctdb.socket getdbmap 0 | egrep "^dbid:" | sed -e "s/^dbid://" -e "s/ .*$//" | while read DB; do
+bin/ctdb_control getdbmap 0 | egrep "^dbid:" | sed -e "s/^.*name://" -e "s/ .*$//" | while read DBNAME; do
        seq 0 3 | while read NODE; do
-               echo "Content of DB:$DB NODE:$NODE :"
-               bin/ctdb_control --socket=/tmp/ctdb.socket catdb $NODE $DB
+               echo "Content of DBNAME:$DBNAME NODE:$NODE :"
+               bin/ctdb_control catdb $DBNAME $NODE
        done
 done
 
-
 echo
 echo
 echo "Populating the databases"
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 0 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket setdmaster 0 0x220c2a7b 1
+./bin/ctdb_control writerecord 0 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control setdmaster 0 0x220c2a7b 1
 
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 1 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 1 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket setdmaster 1 0x220c2a7b 2
+./bin/ctdb_control writerecord 1 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control writerecord 1 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control setdmaster 1 0x220c2a7b 2
 
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 2 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 2 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 2 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket setdmaster 2 0x220c2a7b 3
+./bin/ctdb_control writerecord 2 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control writerecord 2 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control writerecord 2 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control setdmaster 2 0x220c2a7b 3
 
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 3 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 3 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 3 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket writerecord 3 0x220c2a7b testkey1 testdata1
-./bin/ctdb_control --socket=/tmp/ctdb.socket setdmaster 3 0x220c2a7b 3
+./bin/ctdb_control writerecord 3 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control writerecord 3 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control writerecord 3 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control writerecord 3 0x220c2a7b testkey1 testdata1
+./bin/ctdb_control setdmaster 3 0x220c2a7b 3
 
 
 echo
 echo
 echo "Printing all databases on all nodes. there should be a record there"
 echo "============================================================="
-bin/ctdb_control --socket=/tmp/ctdb.socket getdbmap 0 | egrep "^dbid:" | sed -e "s/^dbid://" -e "s/ .*$//" | while read DB; do
+bin/ctdb_control getdbmap 0 | egrep "^dbid:" | sed -e "s/^.*name://" -e "s/ .*$//" | while read DBNAME; do
        seq 0 3 | while read NODE; do
-               echo "Content of DB:$DB NODE:$NODE :"
-               bin/ctdb_control --socket=/tmp/ctdb.socket catdb $NODE $DB
+               echo "Content of DBNAME:$DBNAME NODE:$NODE :"
+               bin/ctdb_control catdb $DBNAME $NODE
        done
 done
 
 echo
 echo
-echo "killing off node #0"
+echo "killing off node #2"
 echo "==================="
-CTDBPID=`ps aux | grep ctdbd | grep -v grep | head -1 | sed -e "s/^[^ ]* *//" -e "s/ .*$//"`
+CTDBPID=`./bin/ctdb_control getpid 2 | sed -e "s/Pid://"`
 kill $CTDBPID
 sleep 1
 
+
 echo
 echo
-echo "Recovery the cluster"
-echo "===================="
-./bin/ctdb_control --socket=/tmp/ctdb.socket recover 2 0x220c2a7b
+echo "wait 3 seconds to let the recovery daemon do its job"
+echo "===================================================="
+sleep 3
 
 echo
 echo
@@ -87,15 +88,19 @@ echo "Printing all databases on all nodes."
 echo "The databases should be the same now on all nodes"
 echo "and the record will have been migrated to node 0"
 echo "================================================="
+echo "Node 0:"
+bin/ctdb_control catdb test4.tdb 0
 echo "Node 1:"
-bin/ctdb_control --socket=/tmp/ctdb.socket catdb 1 0x220c2a7b
-echo "Node 2:"
-bin/ctdb_control --socket=/tmp/ctdb.socket catdb 2 0x220c2a7b
+bin/ctdb_control catdb test4.tdb 1
 echo "Node 3:"
-bin/ctdb_control --socket=/tmp/ctdb.socket catdb 3 0x220c2a7b
+bin/ctdb_control catdb test4.tdb 3
 echo "nodemap:"
-bin/ctdb_control --socket=/tmp/ctdb.socket getnodemap 3
+bin/ctdb_control getnodemap 0
 
+echo
+echo
+echo "Traverse the cluster and dump the database"
+bin/ctdb_control catdb test4.tdb
 
 
 #leave the ctdb daemons running   so one can look at the box in more detail