summaryrefslogtreecommitdiffstats
path: root/ctdb
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2015-02-27 15:13:23 +1100
committerAmitay Isaacs <amitay@samba.org>2015-03-04 10:42:26 +0100
commitd057ca04a9eec0f2aa3d792da0a4648e3716685a (patch)
treec7ffb24a89cd9ed6bdc333eabe599ee06b3ccd8a /ctdb
parent89788dd3193633f5e88ff194219ad838dcdfab96 (diff)
downloadsamba-d057ca04a9eec0f2aa3d792da0a4648e3716685a.tar.gz
samba-d057ca04a9eec0f2aa3d792da0a4648e3716685a.tar.xz
samba-d057ca04a9eec0f2aa3d792da0a4648e3716685a.zip
ctdb-tests: Extend ctdb stub to support "ptrans", "pdelete", "catdb"
Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rwxr-xr-xctdb/tests/eventscripts/stubs/ctdb101
1 files changed, 87 insertions, 14 deletions
diff --git a/ctdb/tests/eventscripts/stubs/ctdb b/ctdb/tests/eventscripts/stubs/ctdb
index cdb60134d6..5baef4a9ce 100755
--- a/ctdb/tests/eventscripts/stubs/ctdb
+++ b/ctdb/tests/eventscripts/stubs/ctdb
@@ -66,12 +66,6 @@ ctdb_killtcp ()
done
}
-setup_pstore ()
-{
- pstore_dir="$CTDB_VARDIR/fake-ctdb/pstore/$1"
- mkdir -p "$pstore_dir"
-}
-
parse_nodespec ()
{
if [ "$nodespec" = "all" ] ; then
@@ -326,6 +320,88 @@ ctdb_setvar ()
return 1
}
+######################################################################
+
+_t_setup ()
+{
+ _t_dir="$CTDB_VARDIR/fake-ctdb/fake-tdb/$1"
+ mkdir -p "$_t_dir"
+}
+
+_t_put ()
+{
+ echo "$2" >"${_t_dir}/$1"
+}
+
+_t_get ()
+{
+ cat "${_t_dir}/$1"
+}
+
+_t_del ()
+{
+ rm -f "${_t_dir}/$1"
+}
+
+ctdb_pstore ()
+{
+ _t_setup "$2"
+ _t_put "$3" "$4"
+}
+
+ctdb_pdelete ()
+{
+ _t_setup "$2"
+ _t_del "$3"
+}
+
+ctdb_pfetch ()
+{
+ _t_setup "$2"
+ _t_get "$3" >"$4" 2>/dev/null
+}
+
+ctdb_ptrans ()
+{
+ _t_setup "$2"
+
+ while IFS="" read _line ; do
+ _k=$(echo "$_line" | sed -n -e 's@^"\([^"]*\)" "[^"]*"$@\1@p')
+ _v=$(echo "$_line" | sed -e 's@^"[^"]*" "\([^"]*\)"$@\1@')
+ [ -n "$_k" ] || die "ctdb ptrans: bad line \"${line}\""
+ if [ -n "$_v" ] ; then
+ _t_put "$_k" "$_v"
+ else
+ _t_del "$_k"
+ fi
+ done
+}
+
+ctdb_catdb ()
+{
+ _t_setup "$2"
+
+ # This will break on keys with spaces but we don't have any of
+ # those yet.
+ _count=0
+ for _i in "${_t_dir}/"* ; do
+ [ -r "$_i" ] || continue
+ _k="${_i##*/}" # basename
+ _v=$(_t_get "$_k")
+ _kn=$(echo -n "$_k" | wc -c)
+ _vn=$(echo -n "$_v" | wc -c)
+ cat <<EOF
+key(${_kn}) = "${_k}"
+dmaster: 0
+rsn: 1
+data(${_vn}) = "${_v}"
+
+EOF
+ _count=$(($_count + 1))
+ done
+
+ echo "Dumped ${_count} records"
+}
######################################################################
@@ -346,14 +422,11 @@ case "$1" in
_t=$(grep -F -v "$2 $3" "$tickles_file")
echo "$_t" >"$tickles_file"
;;
- pstore)
- setup_pstore "$2"
- cat "$4" >"${pstore_dir}/$3"
- ;;
- pfetch)
- setup_pstore "$2"
- cat "${pstore_dir}/$3" >"$4" 2>/dev/null
- ;;
+ pstore) ctdb_pstore "$@" ;;
+ pdelete) ctdb_pdelete "$@" ;;
+ pfetch) ctdb_pfetch "$@" ;;
+ ptrans) ctdb_ptrans "$@" ;;
+ catdb) ctdb_catdb "$@" ;;
ifaces)
# Assume -Y.
echo "|Name|LinkStatus|References|"