ctdb-tools: Add database config options to config tool
authorMartin Schwenke <martin@meltin.net>
Fri, 11 May 2018 12:42:42 +0000 (22:42 +1000)
committerAmitay Isaacs <amitay@samba.org>
Thu, 17 May 2018 02:04:31 +0000 (04:04 +0200)
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/common/conf_tool.c
ctdb/tests/cunit/config_test_001.sh
ctdb/tests/cunit/config_test_005.sh [new file with mode: 0755]
ctdb/wscript

index 44994194d72df1d34083d9bfd8d85e989d4b1594..5a8800b049ef69aa03533f59205584bb0a428682 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "common/logging_conf.h"
 #include "cluster/cluster_conf.h"
+#include "database/database_conf.h"
 #include "event/event_conf.h"
 
 #include "common/conf_tool.h"
@@ -239,6 +240,7 @@ int conf_tool_run(struct conf_tool_context *ctx, int *result)
        /* Call functions to initialize config sections/variables */
        logging_conf_init(ctx->conf, NULL);
        cluster_conf_init(ctx->conf);
+       database_conf_init(ctx->conf);
        event_conf_init(ctx->conf);
 
        if (! conf_valid(ctx->conf)) {
index f24b2326b0f57ec0b75408f9af0f9a39ccb0c2ab..3627122baeb1200558cec303e37cb08b54b30239 100755 (executable)
@@ -17,6 +17,15 @@ test_cleanup remove_files
 
 # Get the default values that are dependent on install prefix
 logging_location=$(ctdb-config get "logging" "location")
+database_volatile_dbdir=$(ctdb-config get \
+                                     "database" \
+                                     "volatile database directory")
+database_persistent_dbdir=$(ctdb-config get \
+                                       "database" \
+                                       "persistent database directory")
+database_state_dbdir=$(ctdb-config get \
+                                  "database" \
+                                  "state database directory")
 
 ok <<EOF
 [logging]
@@ -26,6 +35,11 @@ ok <<EOF
        # transport = tcp
        # node address = 
        # recovery lock = 
+[database]
+       # volatile database directory = ${database_volatile_dbdir}
+       # persistent database directory = ${database_persistent_dbdir}
+       # state database directory = ${database_state_dbdir}
+       # lock debug script = 
 [event]
        # debug script = 
 EOF
diff --git a/ctdb/tests/cunit/config_test_005.sh b/ctdb/tests/cunit/config_test_005.sh
new file mode 100755 (executable)
index 0000000..df63676
--- /dev/null
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+PATH="$PATH:$CTDB_SCRIPTS_HELPER_BINDIR"
+
+setup_ctdb_base "${TEST_VAR_DIR}" "cunit"
+
+conffile="${CTDB_BASE}/ctdb.conf"
+scriptfile="${CTDB_BASE}/debug_locks.sh"
+dbdir="${CTDB_BASE}/dbdir"
+dbdir_volatile="${dbdir}/volatile"
+dbdir_persistent="${dbdir}/persistent"
+dbdir_state="${dbdir}/state"
+
+remove_files ()
+{
+       rm -f "$conffile" "$scriptfile"
+}
+
+test_cleanup remove_files
+
+cat > "$conffile" <<EOF
+[database]
+    volatile database directory = ${dbdir_volatile}
+    persistent database directory = ${dbdir_persistent}
+    state database directory = ${dbdir_state}
+EOF
+
+required_result 22 <<EOF
+volatile database directory "${dbdir_volatile}" does not exist
+conf: validation for option "volatile database directory" failed
+Failed to load config file $conffile
+EOF
+unit_test ctdb-config validate
+
+mkdir -p "$dbdir_volatile"
+
+required_result 22 <<EOF
+persistent database directory "${dbdir_persistent}" does not exist
+conf: validation for option "persistent database directory" failed
+Failed to load config file $conffile
+EOF
+unit_test ctdb-config validate
+
+mkdir -p "$dbdir_persistent"
+
+required_result 22 <<EOF
+state database directory "${dbdir_state}" does not exist
+conf: validation for option "state database directory" failed
+Failed to load config file $conffile
+EOF
+unit_test ctdb-config validate
+
+mkdir -p "$dbdir_state"
+
+required_result 0 <<EOF
+EOF
+unit_test ctdb-config validate
+
+ok <<EOF
+EOF
+unit_test ctdb-config get "database" "lock debug script"
+
+cat > "$conffile" <<EOF
+[database]
+    lock debug script = $scriptfile
+EOF
+
+touch "$scriptfile"
+
+required_result 22 <<EOF
+lock debug script $scriptfile is not executable
+conf: validation for option "lock debug script" failed
+Failed to load config file $conffile
+EOF
+unit_test ctdb-config validate
+
+chmod +x "$scriptfile"
+
+ok_null
+unit_test ctdb-config validate
+
+rm -f "$scriptfile"
+
+required_result 22 <<EOF
+lock debug script $scriptfile does not exist
+conf: validation for option "lock debug script" failed
+Failed to load config file $conffile
+EOF
+unit_test ctdb-config validate
index 490982f10e400338675e3bddb52524137ae2586e..1e9b32aa2a33d0590fa75a662d73a7384e7d12fb 100644 (file)
@@ -482,6 +482,7 @@ def build(bld):
                      deps='''ctdb-logging-conf
                              ctdb-event-conf
                              ctdb-cluster-conf
+                             ctdb-database-conf
                              ctdb-util samba-util talloc replace popt''',
                      install_path='${CTDB_HELPER_BINDIR}')