tests: New function ctdb_set_pnn() to change PNN
authorMartin Schwenke <martin@meltin.net>
Sat, 18 Apr 2015 11:55:50 +0000 (21:55 +1000)
committerMartin Schwenke <martin@meltin.net>
Wed, 24 Feb 2016 10:44:13 +0000 (21:44 +1100)
ctdb_get_pnn() incorrectly caches to the same file regardless of what
node is selected via FAKE_CTDB_PNN.

Instead, set the PNN using new function ctdb_get_pnn(), which also
makes CTDB_VARDIR point to a node-specific subdirectory.  This means
that ctdb_get_pnn() will correctly cache to the node-specific
directory.

Fake tickle and TDB files/directories used by the ctdb stub need to be
the same across all PNNs, so change these to use
$EVENTSCRIPTS_TESTS_VAR_DIR instead of node-specific $CTDB_VARDIR.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(Imported from commit af93ae1a540003824b32301d3c9f09c713f1fa7a)

tests/eventscripts/scripts/local.sh
tests/eventscripts/statd-callout.005.sh
tests/eventscripts/statd-callout.006.sh
tests/eventscripts/stubs/ctdb

index aa7d3764cc4d4d222b5034ffd9f5ebe54ca1f20b..c73121913923901dba493b1eed3173243bd5055c 100644 (file)
@@ -307,6 +307,18 @@ setup_public_addresses ()
 EOF
 }
 
+# Need to cope with ctdb_get_pnn().  If a test changes PNN then it
+# needs to be using a different state directory, otherwise the wrong
+# PNN can already be cached in the state directory.
+ctdb_set_pnn ()
+{
+    export FAKE_CTDB_PNN="$1"
+    echo "Setting up PNN ${FAKE_CTDB_PNN}"
+
+    export CTDB_VARDIR="$EVENTSCRIPTS_TESTS_VAR_DIR/ctdb/${FAKE_CTDB_PNN}"
+    mkdir -p "${CTDB_VARDIR}/state"
+}
+
 setup_ctdb ()
 {
     setup_generic
@@ -314,8 +326,7 @@ setup_ctdb ()
     export FAKE_CTDB_NUMNODES="${1:-3}"
     echo "Setting up CTDB with ${FAKE_CTDB_NUMNODES} fake nodes"
 
-    export FAKE_CTDB_PNN="${2:-0}"
-    echo "Setting up CTDB with PNN ${FAKE_CTDB_PNN}"
+    ctdb_set_pnn "${2:-0}"
 
     setup_public_addresses
 
@@ -749,10 +760,6 @@ setup_samba ()
        export FAKE_TCP_LISTEN=""
        export FAKE_WBINFO_FAIL="yes"
     fi
-
-    # This is ugly but if this file isn't removed before each test
-    # then configuration changes between tests don't stick.
-    rm -f "$CTDB_VARDIR/state/samba/smb.conf.cache"
 }
 
 setup_winbind ()
index ceb4445fb759d1502f26478659e2c5b92094ca3b..06d4a1f43fad006bb967d96d934dedd859047066 100755 (executable)
@@ -12,16 +12,16 @@ ok_null
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
-FAKE_CTDB_PNN=1
+ctdb_set_pnn 1
 
 ok_null
 simple_test_event "add-client" "192.168.123.46"
 simple_test_event "update"
 
-FAKE_CTDB_PNN=0
+ctdb_set_pnn 0
 
 check_statd_callout_smnotify "192.168.123.45"
 
-FAKE_CTDB_PNN=1
+ctdb_set_pnn 1
 
 check_ctdb_tdb_statd_state "192.168.123.46"
index 0db86fee0ff13da17c18487016b46f0a88e66cfc..edeeda872863f91150e7d9e5ebd9f657683d1cd9 100755 (executable)
@@ -12,17 +12,17 @@ ok_null
 simple_test_event "add-client" "192.168.123.45"
 simple_test_event "update"
 
-FAKE_CTDB_PNN=1
+ctdb_set_pnn 1
 
 ok_null
 simple_test_event "add-client" "192.168.123.46"
 simple_test_event "update"
 
-FAKE_CTDB_PNN=0
+ctdb_set_pnn 0
 
 check_statd_callout_smnotify "192.168.123.45"
 
-FAKE_CTDB_PNN=1
+ctdb_set_pnn 1
 
 check_statd_callout_smnotify "192.168.123.46"
 
index 7dbb6b41f45ddadf448f4f0a4e70fb2ded7c4351..aa3ac730ddf8039fe38460725007c6946934db44 100755 (executable)
@@ -54,7 +54,7 @@ done
 setup_tickles ()
 {
     # Make sure tickles file exists.
-    tickles_file="$CTDB_VARDIR/fake-ctdb/tickles"
+    tickles_file="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-ctdb/tickles"
     mkdir -p $(dirname "$tickles_file")
     touch "$tickles_file"
 }
@@ -336,7 +336,7 @@ ctdb_setvar ()
 
 _t_setup ()
 {
-    _t_dir="$CTDB_VARDIR/fake-ctdb/fake-tdb/$1"
+    _t_dir="$EVENTSCRIPTS_TESTS_VAR_DIR/fake-ctdb/fake-tdb/$1"
     mkdir -p "$_t_dir"
 }