diff options
author | Martin Schwenke <martin@meltin.net> | 2013-11-06 13:43:53 +1100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2013-11-27 18:46:16 +0100 |
commit | e850cddcc4757298103b0cef0bd3734eec07f808 (patch) | |
tree | bd0ca49cd62878a6fd0b0b3c9c22c60035c9d0c7 /ctdb/tests/simple | |
parent | 297a4a640dbb48fae50d24c9d7aff397df9b988a (diff) | |
download | samba-e850cddcc4757298103b0cef0bd3734eec07f808.tar.gz samba-e850cddcc4757298103b0cef0bd3734eec07f808.tar.xz samba-e850cddcc4757298103b0cef0bd3734eec07f808.zip |
ctdb-tools/ctdb: New ptrans command
Also add test.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'ctdb/tests/simple')
-rwxr-xr-x | ctdb/tests/simple/55_ctdb_ptrans.sh | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/ctdb/tests/simple/55_ctdb_ptrans.sh b/ctdb/tests/simple/55_ctdb_ptrans.sh new file mode 100755 index 00000000000..14de67efa6f --- /dev/null +++ b/ctdb/tests/simple/55_ctdb_ptrans.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +test_info() +{ + cat <<EOF +Verify that the ctdb ptrans works as expected + +Prerequisites: + +* An active CTDB cluster with at least 2 active nodes. + +Steps: + +1. Verify that the status on all of the ctdb nodes is 'OK'. +2. Pipe some operation to ctdb ptrans and validate the TDB contents with ctdb catdb + +Expected results: + +* ctdb ptrans works as expected. +EOF +} + +. "${TEST_SCRIPTS_DIR}/integration.bash" + +ctdb_test_init "$@" + +set -e + +cluster_is_healthy + +TESTDB="ptrans_test.tdb" + +# Create a temporary persistent database to test with +echo "create persistent test database $TESTDB" +try_command_on_node 0 $CTDB attach $TESTDB persistent + +# Wipe Test database +echo "wipe test database" +try_command_on_node 0 $CTDB wipedb $TESTDB + +########## + +echo "Adding 3 records" + +items='\ +"key1" "value1" +"key2" "value1" +"key3" "value1"' + +echo "$items" | try_command_on_node -i 0 $CTDB ptrans "$TESTDB" + +try_command_on_node 0 $CTDB catdb "$TESTDB" + +n=$(echo "$out" | grep -c '^key.*= "key.*"' || true) + +if [ $n -ne 3 ] ; then + echo "BAD: expected 3 keys in..." + echo "$out" + exit 1 +else + echo "GOOD: 3 records were inserted" +fi + +########## + +echo "Deleting 1 record, updating 1, adding 1 new record, 1 bogus input line" + +items='\ +"key1" "" +"key2" "value2" +"key3" +"key4" "value1"' + +echo "$items" | try_command_on_node -i 0 $CTDB ptrans "$TESTDB" + +try_command_on_node 0 $CTDB catdb "$TESTDB" + +n=$(echo "$out" | grep -c '^key.*= "key.*"' || true) + +if [ $n -ne 3 ] ; then + echo "BAD: expected 3 keys in..." + echo "$out" + exit 1 +else + echo "GOOD: 3 records found" +fi + +########## + +echo "Verifying records" + +while read key value ; do + try_command_on_node 0 $CTDB pfetch "$TESTDB" "$key" + if [ "$value" != "$out" ] ; then + echo "BAD: for key \"$key\" expected \"$value\" but got \"$out\"" + exit 1 + else + echo "GOOD: for key \"$key\" got \"$out\"" + fi +done <<EOF +key2 value2 +key3 value1 +key4 value1 +EOF + +########## + +echo "Deleting all records" + +items='\ +"key2" "" +"key3" "" +"key4" ""' + +echo "$items" | try_command_on_node -i 0 $CTDB ptrans "$TESTDB" + +try_command_on_node 0 $CTDB catdb "$TESTDB" + +n=$(echo "$out" | grep -c '^key.*= "key.*"' || true) + +if [ $n -ne 0 ] ; then + echo "BAD: expected 0 keys in..." + echo "$out" + exit 1 +else + echo "GOOD: 0 records found" +fi |