1
0
mirror of https://github.com/deajan/obackup.git synced 2024-11-15 04:03:41 +01:00
obackup/dev/tests/run_tests.sh

1001 lines
36 KiB
Bash
Raw Normal View History

2016-08-18 14:19:52 +02:00
#!/usr/bin/env bash
2019-07-11 13:49:08 +02:00
## obackup basic tests suite 2019071101
2018-10-02 19:48:04 +02:00
# Supported environment variables
# TRAVIS_RUN=[true|false]
# SSH_PORT=22
# SKIP_REMOTE=[true|false]
2016-12-31 00:00:32 +01:00
#TODO Encrypted Pull runs on F25 fail for decryption
2018-10-02 19:48:04 +02:00
# If gpg key generation hangs, please install and configure rngd service
#eg yum install rng-tools ; systemctl start rngd
2019-01-14 15:00:06 +01:00
# or yum install epel-release && yum innstall haveged && systemctl start haveged
2018-10-02 19:48:04 +02:00
2018-10-02 19:53:06 +02:00
if [ "$SKIP_REMOTE" == "" ]; then
SKIP_REMOTE=false
fi
2016-08-18 14:19:52 +02:00
2016-08-30 16:12:10 +02:00
OBACKUP_DIR="$(pwd)"
OBACKUP_DIR=${OBACKUP_DIR%%/dev*}
DEV_DIR="$OBACKUP_DIR/dev"
TESTS_DIR="$DEV_DIR/tests"
2016-09-02 13:22:24 +02:00
2016-12-23 19:25:26 +01:00
CONF_DIR="$TESTS_DIR/conf"
2016-09-02 13:13:53 +02:00
LOCAL_CONF="local.conf"
PULL_CONF="pull.conf"
PUSH_CONF="push.conf"
2016-12-28 22:15:44 +01:00
2016-09-09 12:36:30 +02:00
OLD_CONF="old.conf"
2016-10-23 19:00:03 +02:00
TMP_OLD_CONF="tmp.old.conf"
2017-01-02 12:37:07 +01:00
MAX_EXEC_CONF="max-exec-time.conf"
2016-08-18 14:19:52 +02:00
2016-10-23 19:00:03 +02:00
OBACKUP_EXECUTABLE="obackup.sh"
2016-11-30 13:59:01 +01:00
OBACKUP_DEV_EXECUTABLE="dev/n_obackup.sh"
2016-10-23 19:00:03 +02:00
OBACKUP_UPGRADE="upgrade-v1.x-2.1x.sh"
2016-11-30 13:59:01 +01:00
TMP_FILE="$DEV_DIR/tmp"
2016-08-30 18:12:59 +02:00
2016-08-30 16:12:10 +02:00
SOURCE_DIR="${HOME}/obackup-testdata"
TARGET_DIR="${HOME}/obackup-storage"
2016-08-18 14:19:52 +02:00
2016-12-28 22:15:44 +01:00
TARGET_DIR_SQL_LOCAL="$TARGET_DIR/sql-local"
TARGET_DIR_FILE_LOCAL="$TARGET_DIR/files-local"
TARGET_DIR_CRYPT_LOCAL="$TARGET_DIR/crypt-local"
2016-08-18 14:19:52 +02:00
2016-08-30 19:17:14 +02:00
TARGET_DIR_SQL_PULL="$TARGET_DIR/sql-pull"
TARGET_DIR_FILE_PULL="$TARGET_DIR/files-pull"
2016-12-28 22:15:44 +01:00
TARGET_DIR_CRYPT_PULL="$TARGET_DIR/crypt-pull"
2016-08-18 14:19:52 +02:00
2016-08-30 19:17:14 +02:00
TARGET_DIR_SQL_PUSH="$TARGET_DIR/sql-push"
TARGET_DIR_FILE_PUSH="$TARGET_DIR/files-push"
2016-12-28 22:15:44 +01:00
TARGET_DIR_CRYPT_PUSH="$TARGET_DIR/crypt-push"
2016-08-18 14:19:52 +02:00
2016-09-02 13:13:53 +02:00
2016-08-18 17:10:53 +02:00
SIMPLE_DIR="testData"
RECURSIVE_DIR="testDataRecursive"
2016-08-18 14:19:52 +02:00
2016-08-18 17:10:53 +02:00
S_DIR_1="dir rect ory"
R_EXCLUDED_DIR="Excluded"
R_DIR_1="a"
R_DIR_2="b"
R_DIR_3="c d"
2016-08-18 14:19:52 +02:00
2016-08-18 17:10:53 +02:00
S_FILE_1="some file"
R_FILE_1="file_1"
R_FILE_2="file 2"
R_FILE_3="file 3"
2016-09-02 13:13:53 +02:00
N_FILE_1="non recurse file"
2016-08-18 14:19:52 +02:00
2016-08-18 17:10:53 +02:00
EXCLUDED_FILE="exclu.ded"
DATABASE_1="mysql.sql.xz"
DATABASE_2="performance_schema.sql.xz"
DATABASE_EXCLUDED="information_schema.sql.xz"
2016-08-18 14:19:52 +02:00
2016-09-02 13:13:53 +02:00
CRYPT_EXTENSION=".obackup.gpg"
ROTATE_1_EXTENSION=".obackup.1"
2018-11-06 19:17:32 +01:00
ROTATE_2_EXTENSION=".obackup.2"
2016-09-02 13:13:53 +02:00
PASSFILE="passfile"
2016-12-23 22:12:07 +01:00
CRYPT_TESTFILE="testfile"
2016-09-02 13:13:53 +02:00
2016-12-23 19:25:26 +01:00
# Later populated variables
OBACKUP_VERSION=2.x
OBACKUP_MIN_VERSION=x
OBACKUP_IS_STABLE=maybe
function SetupSSH {
echo -e 'y\n'| ssh-keygen -t rsa -b 2048 -N "" -f "${HOME}/.ssh/id_rsa_local"
if ! grep "$(cat ${HOME}/.ssh/id_rsa_local.pub)" "${HOME}/.ssh/authorized_keys"; then
2017-02-09 12:21:11 +01:00
echo "from=\"*\",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=\"/usr/local/bin/ssh_filter.sh SomeAlphaNumericToken9\" $(cat ${HOME}/.ssh/id_rsa_local.pub)" >> "${HOME}/.ssh/authorized_keys"
2016-12-23 19:25:26 +01:00
fi
chmod 600 "${HOME}/.ssh/authorized_keys"
# Add localhost to known hosts so self connect works
if [ -z "$(ssh-keygen -F localhost)" ]; then
ssh-keyscan -H localhost >> "${HOME}/.ssh/known_hosts"
fi
# Update remote conf files with SSH port
sed -i.tmp 's#ssh://.*@localhost:[0-9]*/#ssh://'$REMOTE_USER'@localhost:'$SSH_PORT'/#' "$CONF_DIR/$PULL_CONF"
sed -i.tmp 's#ssh://.*@localhost:[0-9]*/#ssh://'$REMOTE_USER'@localhost:'$SSH_PORT'/#' "$CONF_DIR/$PUSH_CONF"
}
function RemoveSSH {
local pubkey
if [ -f "${HOME}/.ssh/id_rsa_local" ]; then
pubkey=$(cat "${HOME}/.ssh/id_rsa_local.pub")
2017-02-09 12:21:11 +01:00
sed -i.bak "s|.*$pubkey.*||g" "${HOME}/.ssh/authorized_keys"
2016-12-23 19:25:26 +01:00
rm -f "${HOME}/.ssh/{id_rsa_local.pub,id_rsa_local}"
fi
2016-09-02 13:13:53 +02:00
}
function SetupGPG {
2016-09-02 13:22:24 +02:00
if type gpg2 > /dev/null; then
2016-09-04 21:37:24 +02:00
CRYPT_TOOL=gpg2
2016-09-02 13:22:24 +02:00
elif type gpg > /dev/null; then
2016-09-04 21:37:24 +02:00
CRYPT_TOOL=gpg
2016-09-02 13:22:24 +02:00
else
echo "No gpg support"
2017-01-09 11:15:05 +01:00
assertEquals "Failed to detect gpg" "1" $?
2017-01-09 11:13:57 +01:00
return
2016-09-02 13:22:24 +02:00
fi
2016-12-31 00:00:32 +01:00
echo "Crypt tool=$CRYPT_TOOL"
2016-09-04 21:37:24 +02:00
if ! $CRYPT_TOOL --list-keys | grep "John Doe" > /dev/null; then
2016-09-02 13:13:53 +02:00
cat >gpgcommand <<EOF
%echo Generating a GPG Key
Key-Type: RSA
Key-Length: 4096
Name-Real: John Doe
Name-Comment: obackup-test-key
Name-Email: john@example.com
Expire-Date: 0
Passphrase: PassPhrase123
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF
if [ "$TRAVIS_RUN" == true ]; then
2019-01-14 15:00:06 +01:00
if type apt-get > /dev/null 2>&1; then
sudo apt-get install rng-tools
fi
# Setup fast entropy
if type rngd > /dev/null 2>&1; then
$SUDO_CMD rngd -r /dev/urandom
else
echo "No rngd support"
fi
2016-09-02 13:13:53 +02:00
fi
2016-09-04 21:37:24 +02:00
$CRYPT_TOOL --batch --gen-key gpgcommand
echo "Currently owned $CRYPT_TOOL keys"
echo $($CRYPT_TOOL --list-keys)
2016-09-02 13:13:53 +02:00
rm -f gpgcommand
fi
echo "PassPhrase123" > "$TESTS_DIR/$PASSFILE"
}
2016-08-18 14:19:52 +02:00
function oneTimeSetUp () {
2016-12-23 19:25:26 +01:00
START_TIME=$SECONDS
2016-08-18 14:19:52 +02:00
source "$DEV_DIR/ofunctions.sh"
2017-04-08 22:11:27 +02:00
# Set default umask because ofunctions set 0077
umask 0022
2016-12-23 19:25:26 +01:00
GetLocalOS
echo "Detected OS: $LOCAL_OS"
# Set some travis related changes
if [ "$TRAVIS_RUN" == true ]; then
echo "Running with travis settings"
REMOTE_USER="travis"
2019-02-26 14:22:09 +01:00
RHOST_PING=false
2016-12-23 19:25:26 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "REMOTE_3RD_PARTY_HOSTS" ""
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "REMOTE_3RD_PARTY_HOSTS" ""
2016-12-23 21:35:02 +01:00
# Config value didn't have S at the end in old files
SetConfFileValue "$CONF_DIR/$OLD_CONF" "REMOTE_3RD_PARTY_HOST" ""
2016-12-23 21:46:43 +01:00
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "REMOTE_HOST_PING" false
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "REMOTE_HOST_PING" false
SetConfFileValue "$CONF_DIR/$OLD_CONF" "REMOTE_HOST_PING" false
2016-12-23 19:25:26 +01:00
else
echo "Running with local settings"
REMOTE_USER="root"
2019-02-26 14:22:09 +01:00
RHOST_PING=true
2016-12-23 19:25:26 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "REMOTE_3RD_PARTY_HOSTS" "\"www.kernel.org www.google.com\""
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "REMOTE_3RD_PARTY_HOSTS" "\"www.kernel.org www.google.com\""
2016-12-23 21:35:02 +01:00
# Config value didn't have S at the end in old files
SetConfFileValue "$CONF_DIR/$OLD_CONF" "REMOTE_3RD_PARTY_HOST" "\"www.kernel.org www.google.com\""
2016-12-23 21:46:43 +01:00
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "REMOTE_HOST_PING" true
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "REMOTE_HOST_PING" true
SetConfFileValue "$CONF_DIR/$OLD_CONF" "REMOTE_HOST_PING" true
2016-12-23 19:25:26 +01:00
fi
# Get default ssh port from env
if [ "$SSH_PORT" == "" ]; then
SSH_PORT=22
fi
2017-02-09 12:21:11 +01:00
#TODO: Assuming that macos has the same syntax than bsd here
if [ "$LOCAL_OS" == "msys" ] || [ "$LOCAL_OS" == "Cygwin" ]; then
SUDO_CMD=""
elif [ "$LOCAL_OS" == "BSD" ] || [ "$LOCAL_OS" == "MacOSX" ]; then
SUDO_CMD=""
else
SUDO_CMD="sudo"
fi
2016-09-02 13:13:53 +02:00
SetupGPG
2018-10-02 19:48:04 +02:00
if [ "$SKIP_REMOTE" != true ]; then
2016-12-28 22:15:44 +01:00
SetupSSH
fi
2016-12-23 19:25:26 +01:00
# Get OBACKUP version
OBACKUP_VERSION=$(GetConfFileValue "$OBACKUP_DIR/$OBACKUP_DEV_EXECUTABLE" "PROGRAM_VERSION")
OBACKUP_VERSION="${OBACKUP_VERSION##*=}"
OBACKUP_MIN_VERSION="${OBACKUP_VERSION:2:1}"
OBACKUP_IS_STABLE=$(GetConfFileValue "$OBACKUP_DIR/$OBACKUP_DEV_EXECUTABLE" "IS_STABLE")
echo "Running with $OBACKUP_VERSION ($OBACKUP_MIN_VERSION) STABLE=$OBACKUP_IS_STABLE"
2017-01-02 12:37:07 +01:00
# Set basic values that could get changed later
for i in "$LOCAL_CONF" "$PULL_CONF" "$PUSH_CONF"; do
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "ENCRYPTION" false
SetConfFileValue "$CONF_DIR/$i" "DATABASES_ALL" true
2017-01-02 12:37:07 +01:00
SetConfFileValue "$CONF_DIR/$i" "DATABASES_LIST" "mysql"
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "FILE_BACKUP" true
2017-01-02 12:37:07 +01:00
SetConfFileValue "$CONF_DIR/$i" "DIRECTORY_LIST" "${HOME}/obackup-testdata/testData"
SetConfFileValue "$CONF_DIR/$i" "RECURSIVE_DIRECTORY_LIST" "${HOME}/obackup-testdata/testDataRecursive"
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "SQL_BACKUP" true
2017-01-02 12:37:07 +01:00
done
2016-12-23 19:25:26 +01:00
}
function oneTimeTearDown () {
SetConfFileValue "$OBACKUP_DIR/$OBACKUP_EXECUTABLE" "IS_STABLE" "$OBACKUP_IS_STABLE"
2018-10-02 19:48:04 +02:00
if [ "$SKIP_REMOTE" != true ]; then
RemoveSSH
fi
2016-12-23 19:25:26 +01:00
#TODO: uncomment this when dev is done
2016-12-23 22:12:07 +01:00
#rm -rf "$SOURCE_DIR"
#rm -rf "$TARGET_DIR"
2016-12-23 19:25:26 +01:00
rm -f "$TMP_FILE"
2017-02-09 12:48:20 +01:00
cd "$OBACKUP_DIR"
2017-02-09 12:21:11 +01:00
$SUDO_CMD ./install.sh --remove --silent --no-stats
assertEquals "Uninstall failed" "0" $?
2016-12-23 19:25:26 +01:00
ELAPSED_TIME=$(($SECONDS - $START_TIME))
echo "It took $ELAPSED_TIME seconds to run these tests."
2016-09-02 13:13:53 +02:00
}
2016-12-23 19:25:26 +01:00
2016-09-02 13:38:35 +02:00
function setUp () {
2016-09-02 13:13:53 +02:00
rm -rf "$SOURCE_DIR"
2016-09-04 21:11:05 +02:00
rm -rf "$TARGET_DIR"
2016-08-18 14:19:52 +02:00
2016-08-18 17:10:53 +02:00
mkdir -p "$SOURCE_DIR/$SIMPLE_DIR/$S_DIR_1"
mkdir -p "$SOURCE_DIR/$RECURSIVE_DIR/$R_EXCLUDED_DIR"
mkdir -p "$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_1"
mkdir -p "$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_2"
mkdir -p "$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_3"
touch "$SOURCE_DIR/$SIMPLE_DIR/$S_DIR_1/$S_FILE_1"
touch "$SOURCE_DIR/$SIMPLE_DIR/$EXCLUDED_FILE"
2016-09-02 13:13:53 +02:00
touch "$SOURCE_DIR/$RECURSIVE_DIR/$N_FILE_1"
2016-08-18 17:10:53 +02:00
touch "$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_1/$R_FILE_1"
touch "$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_2/$R_FILE_2"
dd if=/dev/urandom of="$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_3/$R_FILE_3" bs=1048576 count=2
2017-01-09 11:15:05 +01:00
assertEquals "dd file creation" "0" $?
2016-08-18 17:10:53 +02:00
touch "$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_3/$EXCLUDED_FILE"
FilePresence=(
"$SOURCE_DIR/$SIMPLE_DIR/$S_DIR_1/$S_FILE_1"
2016-09-02 13:13:53 +02:00
"$SOURCE_DIR/$RECURSIVE_DIR/$N_FILE_1"
2016-08-18 17:10:53 +02:00
"$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_1/$R_FILE_1"
"$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_2/$R_FILE_2"
"$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_3/$R_FILE_3"
)
DatabasePresence=(
"$DATABASE_1"
"$DATABASE_2"
)
FileExcluded=(
"$SOURCE_DIR/$SIMPLE_DIR/$EXCLUDED_FILE"
"$SOURCE_DIR/$RECURSIVE_DIR/$R_DIR_3/$R_EXCLUDED_FILE"
)
DatabaseExcluded=(
"$DATABASE_EXCLUDED"
)
DirectoriesExcluded=(
"$RECURSIVE_DIR/$R_EXCLUDED_DIR"
)
2016-08-18 14:19:52 +02:00
}
2016-08-30 16:26:30 +02:00
function test_Merge () {
cd "$DEV_DIR"
2017-06-20 15:22:57 +02:00
./merge.sh obackup
2016-08-30 16:26:30 +02:00
assertEquals "Merging code" "0" $?
2016-12-23 19:25:26 +01:00
2017-02-09 12:48:20 +01:00
cd "$OBACKUP_DIR"
2017-02-09 12:21:11 +01:00
$SUDO_CMD ./install.sh --silent --no-stats
assertEquals "Install failed" "0" $?
2016-12-23 19:25:26 +01:00
# Set obackup version to stable while testing to avoid warning message
2019-02-26 14:22:09 +01:00
SetConfFileValue "$OBACKUP_DIR/$OBACKUP_EXECUTABLE" "IS_STABLE" true
2016-08-30 16:26:30 +02:00
}
2016-08-18 17:10:53 +02:00
2016-12-31 00:00:32 +01:00
# Keep this function to check GPG behavior depending on OS. (GPG 2.1 / GPG 2.0x / GPG 1.4 don't behave the same way)
function test_GPG () {
2016-09-04 22:20:18 +02:00
echo "Encrypting file"
2016-12-23 22:12:07 +01:00
$CRYPT_TOOL --out "$TESTS_DIR/$CRYPT_TESTFILE$CRYPT_EXTENSION" --recipient "John Doe" --batch --yes --encrypt "$TESTS_DIR/$PASSFILE"
2016-09-04 21:37:24 +02:00
assertEquals "Encrypt file" "0" $?
2016-12-31 00:00:32 +01:00
# Detect if GnuPG >= 2.1 that does not allow automatic pin entry anymore
cryptToolVersion=$($CRYPT_TOOL --version | head -1 | awk '{print $3}')
cryptToolMajorVersion=${cryptToolVersion%%.*}
cryptToolSubVersion=${cryptToolVersion#*.}
cryptToolSubVersion=${cryptToolSubVersion%.*}
2019-07-11 13:49:08 +02:00
echo "$CRYPT_TOOL is $cryptToolVersion"
2016-12-31 00:00:32 +01:00
if [ $cryptToolMajorVersion -eq 2 ] && [ $cryptToolSubVersion -ge 1 ]; then
additionalParameters="--pinentry-mode loopback"
fi
if [ "$CRYPT_TOOL" == "gpg2" ]; then
options="--batch --yes"
elif [ "$CRYPT_TOOL" == "gpg" ]; then
options="--no-use-agent --batch"
fi
2016-09-04 22:20:18 +02:00
echo "Decrypt using passphrase file"
2019-07-11 13:49:08 +02:00
echo $CRYPT_TOOL $options --out "$TESTS_DIR/$CRYPT_TESTFILE" --batch --yes $additionalParameters --passphrase-file="$TESTS_DIR/$PASSFILE" --decrypt "$TESTS_DIR/$CRYPT_TESTFILE$CRYPT_EXTENSION"
2016-12-31 00:00:32 +01:00
$CRYPT_TOOL $options --out "$TESTS_DIR/$CRYPT_TESTFILE" --batch --yes $additionalParameters --passphrase-file="$TESTS_DIR/$PASSFILE" --decrypt "$TESTS_DIR/$CRYPT_TESTFILE$CRYPT_EXTENSION"
2016-09-04 21:37:24 +02:00
assertEquals "Decrypt file using passfile" "0" $?
2016-09-04 22:20:18 +02:00
echo "Decrypt using passphrase"
2016-12-31 00:00:32 +01:00
$CRYPT_TOOL $options --out "$TESTS_DIR/$CRYPT_TESTFILE" --batch --yes $additionalParameters --passphrase PassPhrase123 --decrypt "$TESTS_DIR/$CRYPT_TESTFILE$CRYPT_EXTENSION"
2016-09-04 21:37:24 +02:00
assertEquals "Decrypt file using passphrase" "0" $?
2016-09-04 22:20:18 +02:00
echo "Decrypt using passphrase file with cat"
2016-12-31 00:00:32 +01:00
$CRYPT_TOOL $options --out "$TESTS_DIR/$CRYPT_TESTFILE" --batch --yes $additionalParameters --passphrase $(cat "$TESTS_DIR/$PASSFILE") --decrypt "$TESTS_DIR/$CRYPT_TESTFILE$CRYPT_EXTENSION"
2016-09-04 22:20:18 +02:00
assertEquals "Decrypt file using passphrase" "0" $?
2016-09-04 21:37:24 +02:00
}
2016-12-24 13:01:31 +01:00
function test_LocalRun () {
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$LOCAL_CONF" "ENCRYPTION" false
2016-08-18 14:19:52 +02:00
# Basic return code tests. Need to go deep into file presence testing
2016-08-30 16:26:30 +02:00
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$LOCAL_CONF"
2016-08-18 14:19:52 +02:00
assertEquals "Return code" "0" $?
2016-08-18 17:10:53 +02:00
for file in "${FilePresence[@]}"; do
[ -f "$TARGET_DIR_FILE_LOCAL/$file" ]
assertEquals "File Presence [$TARGET_DIR_FILE_LOCAL/$file]" "0" $?
done
for file in "${FileExcluded[@]}"; do
[ -f "$TARGET_DIR_FILE_LOCAL/$file" ]
assertEquals "File Excluded [$TARGET_DIR_FILE_LOCAL/$file]" "1" $?
done
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_LOCAL/$file" ]
assertEquals "Database Presence [$TARGET_DIR_SQL_LOCAL/$file]" "0" $?
done
for file in "${DatabaseExcluded[@]}"; do
[ -f "$TARGET_DIR_SQL_LOCAL/$file" ]
assertEquals "Database Excluded [$TARGET_DIR_SQL_LOCAL/$file]" "1" $?
done
for directory in "${DirectoriesExcluded[@]}"; do
[ -d "$TARGET_DIR_FILE_LOCAL/$directory" ]
assertEquals "Directory Excluded [$TARGET_DIR_FILE_LOCAL/$directory]" "1" $?
done
2016-08-18 14:19:52 +02:00
2016-12-28 22:15:44 +01:00
diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-local/$SOURCE_DIR" | grep -i Exclu
2018-11-05 21:43:25 +01:00
[ $(diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-local/$SOURCE_DIR" | grep -i Exclu | wc -l) -eq 3 ]
2016-12-28 22:15:44 +01:00
assertEquals "Diff should only output excluded files" "0" $?
2016-09-02 13:13:53 +02:00
# Tests presence of rotated files
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$LOCAL_CONF"
2016-08-18 14:19:52 +02:00
assertEquals "Return code" "0" $?
2016-08-18 17:10:53 +02:00
for file in "${DatabasePresence[@]}"; do
2016-09-02 13:13:53 +02:00
[ -f "$TARGET_DIR_SQL_LOCAL/$file$ROTATE_1_EXTENSION" ]
2018-11-06 19:17:32 +01:00
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_LOCAL/$file$ROTATE_1_EXTENSION]" "0" $?
2016-08-18 17:10:53 +02:00
done
2016-08-18 14:19:52 +02:00
2016-09-02 13:13:53 +02:00
[ -d "$TARGET_DIR_FILE_LOCAL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_LOCAL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION]" "0" $?
2018-11-06 19:17:32 +01:00
# Second test of rotated files
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$LOCAL_CONF"
assertEquals "Return code" "0" $?
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_LOCAL/$file$ROTATE_1_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_LOCAL/$file$ROTATE_1_EXTENSION]" "0" $?
[ -f "$TARGET_DIR_SQL_LOCAL/$file$ROTATE_2_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_LOCAL/$file$ROTATE_2_EXTENSION]" "0" $?
done
[ -d "$TARGET_DIR_FILE_LOCAL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_LOCAL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION]" "0" $?
[ -d "$TARGET_DIR_FILE_LOCAL/$(dirname $SOURCE_DIR)$ROTATE_2_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_LOCAL/$(dirname $SOURCE_DIR)$ROTATE_2_EXTENSION]" "0" $?
2016-08-18 14:19:52 +02:00
}
2016-08-30 19:17:14 +02:00
2016-12-24 13:01:31 +01:00
function test_PullRun () {
2018-10-02 19:48:04 +02:00
if [ "$SKIP_REMOTE" == true ]; then
2016-12-28 22:15:44 +01:00
return 0
fi
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "ENCRYPTION" false
2016-08-18 14:19:52 +02:00
# Basic return code tests. Need to go deep into file presence testing
2016-08-30 16:26:30 +02:00
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PULL_CONF"
2016-08-18 14:19:52 +02:00
assertEquals "Return code" "0" $?
2016-08-18 17:10:53 +02:00
for file in "${FilePresence[@]}"; do
[ -f "$TARGET_DIR_FILE_PULL/$file" ]
assertEquals "File Presence [$TARGET_DIR_FILE_PULL/$file]" "0" $?
done
for file in "${FileExcluded[@]}"; do
[ -f "$TARGET_DIR_FILE_PULL/$file" ]
assertEquals "File Excluded [$TARGET_DIR_FILE_PULL/$file]" "1" $?
done
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PULL/$file" ]
assertEquals "Database Presence [$TARGET_DIR_SQL_PULL/$file]" "0" $?
done
for file in "${DatabaseExcluded[@]}"; do
[ -f "$TARGET_DIR_SQL_PULL/$file" ]
assertEquals "Database Excluded [$TARGET_DIR_SQL_PULL/$file]" "1" $?
done
for directory in "${DirectoriesExcluded[@]}"; do
[ -d "$TARGET_DIR_FILE_PULL/$directory" ]
assertEquals "Directory Excluded [$TARGET_DIR_FILE_PULL/$directory]" "1" $?
done
2016-08-18 14:19:52 +02:00
2016-12-28 22:15:44 +01:00
diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-pull/$SOURCE_DIR" | grep -i Exclu
2018-11-05 21:43:25 +01:00
[ $(diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-pull/$SOURCE_DIR" | grep -i Exclu | wc -l) -eq 3 ]
2016-12-28 22:15:44 +01:00
assertEquals "Diff should only output excluded files" "0" $?
2016-09-02 13:13:53 +02:00
# Tests presence of rotated files
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PULL_CONF"
2016-08-18 14:19:52 +02:00
assertEquals "Return code" "0" $?
2016-08-18 17:10:53 +02:00
for file in "${DatabasePresence[@]}"; do
2016-09-02 13:13:53 +02:00
[ -f "$TARGET_DIR_SQL_PULL/$file$ROTATE_1_EXTENSION" ]
2016-09-04 21:11:05 +02:00
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PULL/$file$ROTATE_1_EXTENSION]" "0" $?
2016-08-18 17:10:53 +02:00
done
2016-08-18 14:19:52 +02:00
2016-09-02 13:13:53 +02:00
[ -d "$TARGET_DIR_FILE_PULL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION" ]
2016-09-04 21:11:05 +02:00
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PULL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
2018-11-06 19:17:32 +01:00
# Second test of presence of rotated files
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PULL_CONF"
assertEquals "Return code" "0" $?
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PULL/$file$ROTATE_1_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PULL/$file$ROTATE_1_EXTENSION]" "0" $?
[ -f "$TARGET_DIR_SQL_PULL/$file$ROTATE_2_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PULL/$file$ROTATE_2_EXTENSION]" "0" $?
done
[ -d "$TARGET_DIR_FILE_PULL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PULL/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION]" "0" $?
[ -d "$TARGET_DIR_FILE_PULL/$(dirname $SOURCE_DIR)$ROTATE_2_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PULL/$(dirname $SOURCE_DIR)$ROTATE_2_EXTENSION]" "0" $?
2016-08-18 14:19:52 +02:00
}
2016-12-24 13:01:31 +01:00
function test_PushRun () {
2018-10-02 19:48:04 +02:00
if [ "$SKIP_REMOTE" == true ]; then
2016-12-28 22:15:44 +01:00
return 0
fi
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "ENCRYPTION" false
2016-08-18 14:19:52 +02:00
# Basic return code tests. Need to go deep into file presence testing
2016-08-30 16:26:30 +02:00
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PUSH_CONF"
2016-08-18 14:19:52 +02:00
assertEquals "Return code" "0" $?
2016-08-18 17:10:53 +02:00
for file in "${FilePresence[@]}"; do
[ -f "$TARGET_DIR_FILE_PUSH/$file" ]
assertEquals "File Presence [$TARGET_DIR_FILE_PUSH/$file]" "0" $?
done
for file in "${FileExcluded[@]}"; do
[ -f "$TARGET_DIR_FILE_PUSH/$file" ]
assertEquals "File Excluded [$TARGET_DIR_FILE_PUSH/$file]" "1" $?
done
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PUSH/$file" ]
assertEquals "Database Presence [$TARGET_DIR_SQL_PUSH/$file]" "0" $?
done
for file in "${DatabaseExcluded[@]}"; do
[ -f "$TARGET_DIR_SQL_PUSH/$file" ]
assertEquals "Database Excluded [$TARGET_DIR_SQL_PUSH/$file]" "1" $?
done
for directory in "${DirectoriesExcluded[@]}"; do
[ -d "$TARGET_DIR_FILE_PUSH/$directory" ]
assertEquals "Directory Excluded [$TARGET_DIR_FILE_PUSH/$directory]" "1" $?
done
2016-08-18 14:19:52 +02:00
2016-12-28 22:15:44 +01:00
diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-push/$SOURCE_DIR" | grep -i Exclu
2018-11-05 21:43:25 +01:00
[ $(diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-push/$SOURCE_DIR" | grep -i Exclu | wc -l) -eq 3 ]
2016-12-28 22:15:44 +01:00
assertEquals "Diff should only output excluded files" "0" $?
2016-09-02 13:13:53 +02:00
# Tests presence of rotated files
2018-11-06 19:17:32 +01:00
2018-11-06 22:51:29 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PUSH_CONF"
2018-11-06 19:17:32 +01:00
assertEquals "Return code" "0" $?
for file in "${DatabasePresence[@]}"; do
2018-11-06 22:51:29 +01:00
[ -f "$TARGET_DIR_SQL_PUSH/$file$ROTATE_1_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PUSH/$file$ROTATE_1_EXTENSION]" "0" $?
2018-11-06 19:17:32 +01:00
done
2018-11-06 22:51:29 +01:00
[ -d "$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION]" "0" $?
2018-11-06 19:17:32 +01:00
# Second test of presence of rotated files
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PUSH_CONF"
2016-08-18 14:19:52 +02:00
assertEquals "Return code" "0" $?
2016-08-18 17:10:53 +02:00
for file in "${DatabasePresence[@]}"; do
2016-09-02 13:13:53 +02:00
[ -f "$TARGET_DIR_SQL_PUSH/$file$ROTATE_1_EXTENSION" ]
2016-09-04 21:11:05 +02:00
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PUSH/$file$ROTATE_1_EXTENSION]" "0" $?
2018-11-06 19:17:32 +01:00
[ -f "$TARGET_DIR_SQL_PUSH/$file$ROTATE_2_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PUSH/$file$ROTATE_2_EXTENSION]" "0" $?
2016-08-18 17:10:53 +02:00
done
2016-08-18 14:19:52 +02:00
2016-09-02 13:13:53 +02:00
[ -d "$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION" ]
2016-09-04 21:11:05 +02:00
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$ROTATE_1_EXTENSION]" "0" $?
2018-11-06 19:17:32 +01:00
[ -d "$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$ROTATE_2_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$ROTATE_2_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
}
2016-12-24 13:01:31 +01:00
function test_EncryptLocalRun () {
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$LOCAL_CONF" "ENCRYPTION" true
2016-09-02 13:13:53 +02:00
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$LOCAL_CONF"
2016-09-02 13:13:53 +02:00
for file in "${FilePresence[@]}"; do
2016-12-28 22:15:44 +01:00
[ -f "$TARGET_DIR_CRYPT_LOCAL/$file$CRYPT_EXTENSION" ]
assertEquals "File Presence [$TARGET_DIR_CRYPT_LOCAL/$file$CRYPT_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
done
# TODO: Exclusion lists don't work with encrypted files yet
# for file in "${FileExcluded[@]}"; do
2016-12-28 22:15:44 +01:00
# [ -f "$TARGET_DIR_CRYPT_LOCAL/$file$CRYPT_EXTENSION" ]
# assertEquals "File Excluded [$TARGET_DIR_CRYPT_LOCAL/$file$CRYPT_EXTENSION]" "1" $?
2016-09-02 13:13:53 +02:00
# done
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_LOCAL/$file$CRYPT_EXTENSION" ]
assertEquals "Database Presence [$TARGET_DIR_SQL_LOCAL/$file$CRYPT_EXTENSION]" "0" $?
done
# for file in "${DatabaseExcluded[@]}"; do
# [ -f "$TARGET_DIR_SQL_LOCAL/$file$CRYPT_EXTENSION" ]
# assertEquals "Database Excluded [$TARGET_DIR_SQL_LOCAL/$file$CRYPT_EXTENSION]" "1" $?
# done
# for directory in "${DirectoriesExcluded[@]}"; do
2016-12-28 22:15:44 +01:00
# [ -d "$TARGET_DIR_CRYPT_LOCAL/$directory" ]
# assertEquals "Directory Excluded [$TARGET_DIR_CRYPT_LOCAL/$directory]" "1" $?
2016-09-02 13:13:53 +02:00
# done
2016-12-28 22:15:44 +01:00
diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-local/$SOURCE_DIR" | grep -i Exclu
[ $(diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-local/$SOURCE_DIR" | grep -i Exclu | wc -l) -eq 5 ]
assertEquals "Diff should only output excluded files" "0" $?
2016-09-02 13:13:53 +02:00
# Tests presence of rotated files
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$LOCAL_CONF"
2016-09-02 13:13:53 +02:00
assertEquals "Return code" "0" $?
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_LOCAL/$file$CRYPT_EXTENSION$ROTATE_1_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_LOCAL/$file$CRYPT_EXTENSION$ROTATE_1_EXTENSION]" "0" $?
done
2016-12-28 22:15:44 +01:00
[ -d "$TARGET_DIR_CRYPT_LOCAL/$(dirname $SOURCE_DIR)$CRYPT_EXTENSION$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_CRYPT_LOCAL/$(dirname $SOURCE_DIR)$CRYPT_EXTENSION$ROTATE_1_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE --decrypt="$TARGET_DIR_SQL_LOCAL" --passphrase-file="$TESTS_DIR/$PASSFILE"
2016-09-02 23:20:48 +02:00
assertEquals "Decrypt sql storage in [$TARGET_DIR_SQL_LOCAL]" "0" $?
2016-09-02 13:13:53 +02:00
2016-12-28 22:15:44 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE --decrypt="$TARGET_DIR_CRYPT_LOCAL" --passphrase-file="$TESTS_DIR/$PASSFILE"
assertEquals "Decrypt file storage in [$TARGET_DIR_CRYPT_LOCAL]" "0" $?
2017-01-02 12:37:07 +01:00
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$LOCAL_CONF" "ENCRYPTION" false
2016-09-02 13:13:53 +02:00
}
2016-12-24 13:01:31 +01:00
function test_EncryptPullRun () {
2018-10-02 19:48:04 +02:00
if [ "$SKIP_REMOTE" == true ]; then
2016-12-28 22:15:44 +01:00
return 0
fi
2016-09-02 13:13:53 +02:00
# Basic return code tests. Need to go deep into file presence testing
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "ENCRYPTION" true
2016-12-28 22:15:44 +01:00
2016-09-02 13:13:53 +02:00
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PULL_CONF"
2016-09-02 13:13:53 +02:00
assertEquals "Return code" "0" $?
for file in "${FilePresence[@]}"; do
2016-12-28 22:15:44 +01:00
[ -f "$TARGET_DIR_CRYPT_PULL/$file$CRYPT_EXTENSION" ]
assertEquals "File Presence [$TARGET_DIR_CRYPT_PULL/$file$CRYPT_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
done
# for file in "${FileExcluded[@]}"; do
2016-12-28 22:15:44 +01:00
# [ -f "$TARGET_DIR_CRYPT_PULL/$file$CRYPT_EXTENSION" ]
# assertEquals "File Excluded [$TARGET_DIR_CRYPT_PULL/$file$CRYPT_EXTENSION]" "1" $?
2016-09-02 13:13:53 +02:00
# done
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PULL/$file$CRYPT_EXTENSION" ]
assertEquals "Database Presence [$TARGET_DIR_SQL_PULL/$file$CRYPT_EXTENSION]" "0" $?
done
# for file in "${DatabaseExcluded[@]}"; do
# [ -f "$TARGET_DIR_SQL_PULL/$file$CRYPT_EXTENSION" ]
# assertEquals "Database Excluded [$TARGET_DIR_SQL_PULL/$file$CRYPT_EXTENSION]" "1" $?
# done
# for directory in "${DirectoriesExcluded[@]}"; do
# [ -d "$TARGET_DIR_FILE_PULL/$directory" ]
# assertEquals "Directory Excluded [$TARGET_DIR_FILE_PULL/$directory]" "1" $?
# done
2016-12-28 22:15:44 +01:00
# Only excluded files should be listed here
diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-pull/$SOURCE_DIR" | grep -i Exclu
2018-11-05 21:43:25 +01:00
[ $(diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-pull/$SOURCE_DIR" | grep -i Exclu | wc -l) -eq 3 ]
2016-12-28 22:15:44 +01:00
assertEquals "Diff should only output excluded files" "0" $?
2016-09-02 13:13:53 +02:00
# Tests presence of rotated files
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PULL_CONF"
2016-09-02 13:13:53 +02:00
assertEquals "Return code" "0" $?
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PULL/$file$CRYPT_EXTENSION$ROTATE_1_EXTENSION" ]
2016-09-03 14:18:03 +02:00
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PULL/$file$CRYPT_EXTENSION$ROTATE_1_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
done
2016-09-02 16:08:23 +02:00
[ -d "$TARGET_DIR_FILE_CRYPT/$(dirname $SOURCE_DIR)$CRYPT_EXTENSION$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_CRYPT/$(dirname $SOURCE_DIR)$CRYPT_EXTENSION$ROTATE_1_EXTENSION]" "0" $?
2016-09-02 13:13:53 +02:00
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE --decrypt="$TARGET_DIR_SQL_PULL" --passphrase-file="$TESTS_DIR/$PASSFILE"
2016-09-02 23:20:48 +02:00
assertEquals "Decrypt sql storage in [$TARGET_DIR_SQL_PULL]" "0" $?
2016-09-02 13:13:53 +02:00
2016-12-28 22:15:44 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE --decrypt="$TARGET_DIR_CRYPT_PULL" --passphrase-file="$TESTS_DIR/$PASSFILE"
assertEquals "Decrypt file storage in [$TARGET_DIR_CRYPT_PULL]" "0" $?
2017-01-02 12:37:07 +01:00
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PULL_CONF" "ENCRYPTION" false
2016-09-02 13:13:53 +02:00
}
2016-12-24 13:01:31 +01:00
function test_EncryptPushRun () {
2018-10-02 19:48:04 +02:00
if [ "$SKIP_REMOTE" == true ]; then
2016-12-28 22:15:44 +01:00
return 0
fi
2016-09-02 13:13:53 +02:00
# Basic return code tests. Need to go deep into file presence testing
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "ENCRYPTION" true
2016-12-28 22:15:44 +01:00
2016-09-02 13:13:53 +02:00
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PUSH_CONF"
2016-09-02 13:13:53 +02:00
assertEquals "Return code" "0" $?
2016-12-28 22:15:44 +01:00
# Same here, why do we check for crypt extension in file_push instead of file_crypt
2016-09-02 13:13:53 +02:00
for file in "${FilePresence[@]}"; do
[ -f "$TARGET_DIR_FILE_PUSH/$file$CRYPT_EXTENSION" ]
assertEquals "File Presence [$TARGET_DIR_FILE_PUSH/$file$CRYPT_EXTENSION]" "0" $?
done
# for file in "${FileExcluded[@]}"; do
# [ -f "$TARGET_DIR_FILE_PUSH/$file$CRYPT_EXTENSION" ]
# assertEquals "File Excluded [$TARGET_DIR_FILE_PUSH/$file$CRYPT_EXTENSION]" "1" $?
# done
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PUSH/$file$CRYPT_EXTENSION" ]
assertEquals "Database Presence [$TARGET_DIR_SQL_PUSH/$file$CRYPT_EXTENSION]" "0" $?
done
# for file in "${DatabaseExcluded[@]}"; do
# [ -f "$TARGET_DIR_SQL_PUSH/$file$CRYPT_EXTENSION" ]
# assertEquals "Database Excluded [$TARGET_DIR_SQL_PUSH/$file$CRYPT_EXTENSION]" "1" $?
# done
# for directory in "${DirectoriesExcluded[@]}"; do
# [ -d "$TARGET_DIR_FILE_PUSH/$directory" ]
# assertEquals "Directory Excluded [$TARGET_DIR_FILE_PUSH/$directory]" "1" $?
# done
2016-12-28 22:15:44 +01:00
diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-push/$SOURCE_DIR" | grep -i Exclu
[ $(diff -qr "$SOURCE_DIR" "$TARGET_DIR/files-push/$SOURCE_DIR" | grep -i Exclu | wc -l) -eq 5 ]
assertEquals "Diff should only output excluded files" "0" $?
2016-09-02 13:13:53 +02:00
# Tests presence of rotated files
cd "$OBACKUP_DIR"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$PUSH_CONF"
2016-09-02 13:13:53 +02:00
assertEquals "Return code" "0" $?
for file in "${DatabasePresence[@]}"; do
[ -f "$TARGET_DIR_SQL_PUSH/$file$CRYPT_EXTENSION$ROTATE_1_EXTENSION" ]
assertEquals "Database rotated Presence [$TARGET_DIR_SQL_PUSH/$file$CRYPT_EXTENSION]" "0" $?
done
[ -d "$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$CRYPT_EXTENSION$ROTATE_1_EXTENSION" ]
assertEquals "File rotated Presence [$TARGET_DIR_FILE_PUSH/$(dirname $SOURCE_DIR)$CRYPT_EXTENSION$ROTATE_1_EXTENSION]" "0" $?
2016-12-28 22:15:44 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE --decrypt="$TARGET_DIR_SQL_PUSH" --passphrase-file="$TESTS_DIR/$PASSFILE" --verbose
2016-09-02 23:20:48 +02:00
assertEquals "Decrypt sql storage in [$TARGET_DIR_SQL_PUSH]" "0" $?
2016-09-02 13:13:53 +02:00
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE --decrypt="$TARGET_DIR_FILE_PUSH" --passphrase-file="$TESTS_DIR/$PASSFILE"
2016-09-02 23:20:48 +02:00
assertEquals "Decrypt file storage in [$TARGET_DIR_FILE_PUSH]" "0" $?
2017-01-02 12:37:07 +01:00
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$PUSH_CONF" "ENCRYPTION" false
2017-01-02 12:37:07 +01:00
}
function test_missing_databases () {
cd "$OBACKUP_DIR"
# Prepare files for missing databases
for i in "$LOCAL_CONF" "$PUSH_CONF" "$PULL_CONF"; do
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "DATABASES_ALL" false
2017-01-02 12:37:07 +01:00
SetConfFileValue "$CONF_DIR/$i" "DATABASES_LIST" "\"zorglub;mysql\""
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "SQL_BACKUP" true
SetConfFileValue "$CONF_DIR/$i" "FILE_BACKUP" false
2017-01-02 12:37:07 +01:00
2017-01-02 12:46:47 +01:00
REMOTE_HOST=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$i"
2017-01-02 12:37:07 +01:00
assertEquals "Missing databases should trigger error with [$i]" "1" $?
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "DATABASES_ALL" true
2017-01-02 12:37:07 +01:00
SetConfFileValue "$CONF_DIR/$i" "DATABASES_LIST" "mysql"
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "FILE_BACKUP" true
2017-01-02 12:37:07 +01:00
done
for i in "$LOCAL_CONF" "$PUSH_CONF" "$PULL_CONF"; do
SetConfFileValue "$CONF_DIR/$i" "DIRECTORY_LIST" "${HOME}/obackup-testdata/nonPresentData"
SetConfFileValue "$CONF_DIR/$i" "RECURSIVE_DIRECTORY_LIST" "${HOME}/obackup-testdata/nonPresentDataRecursive"
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "SQL_BACKUP" false
SetConfFileValue "$CONF_DIR/$i" "FILE_BACKUP" true
2017-01-02 12:37:07 +01:00
REMOTE_HOST=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$i"
assertEquals "Missing files should trigger error with [$i]" "1" $?
echo "glob"
return
echo "nope"
SetConfFileValue "$CONF_DIR/$i" "DIRECTORY_LIST" "${HOME}/obackup-testdata/testData"
SetConfFileValue "$CONF_DIR/$i" "RECURSIVE_DIRECTORY_LIST" "${HOME}/obackup-testdata/testDataRecursive"
2019-02-26 14:22:09 +01:00
SetConfFileValue "$CONF_DIR/$i" "SQL_BACKUP" true
2017-01-02 12:37:07 +01:00
done
2016-08-18 14:19:52 +02:00
}
2016-12-28 22:20:59 +01:00
function test_timed_execution () {
2016-12-23 22:25:15 +01:00
cd "$OBACKUP_DIR"
2016-12-23 22:29:02 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_DB_TASK" 1
2016-12-23 21:46:43 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_TOTAL" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_TOTAL" 1000
2016-12-24 12:43:37 +01:00
SLEEP_TIME=2 REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$MAX_EXEC_CONF"
2016-12-23 21:46:43 +01:00
assertEquals "Soft max exec time db reached in obackup Return code" "2" $?
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_DB_TASK" 1000
2016-12-23 22:29:02 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_DB_TASK" 1
2016-12-23 21:46:43 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_TOTAL" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_TOTAL" 1000
2016-12-24 12:43:37 +01:00
SLEEP_TIME=2 REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$MAX_EXEC_CONF"
2016-12-23 21:46:43 +01:00
assertEquals "Hard max exec time db reached in obackup Return code" "1" $?
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_DB_TASK" 1000
2016-12-23 22:29:02 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_FILE_TASK" 1
2016-12-23 21:46:43 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_TOTAL" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_TOTAL" 1000
2016-12-24 12:43:37 +01:00
SLEEP_TIME=2 REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$MAX_EXEC_CONF"
2016-12-23 21:46:43 +01:00
assertEquals "Soft max exec time file reached in obackup Return code" "2" $?
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_FILE_TASK" 1000
2016-12-23 22:29:02 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_FILE_TASK" 1
2016-12-23 21:46:43 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_TOTAL" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_TOTAL" 1000
2016-12-24 12:43:37 +01:00
SLEEP_TIME=2 REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$MAX_EXEC_CONF"
2016-12-23 21:46:43 +01:00
assertEquals "Hard max exec time file reached in obackup Return code" "1" $?
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_FILE_TASK" 1000
2016-12-23 22:29:02 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_TOTAL" 1
2016-12-23 21:46:43 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_TOTAL" 1000
2016-12-23 22:29:02 +01:00
SLEEP_TIME=1.5 REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$MAX_EXEC_CONF"
2016-12-23 21:46:43 +01:00
assertEquals "Soft max exec time total reached in obackup Return code" "2" $?
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_DB_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_FILE_TASK" 1000
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "SOFT_MAX_EXEC_TIME_TOTAL" 1000
2016-12-23 22:29:02 +01:00
SetConfFileValue "$CONF_DIR/$MAX_EXEC_CONF" "HARD_MAX_EXEC_TIME_TOTAL" 1
2016-12-23 21:46:43 +01:00
2016-12-24 12:43:37 +01:00
SLEEP_TIME=2 REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$MAX_EXEC_CONF"
2016-12-23 21:46:43 +01:00
assertEquals "Hard max exec time total reached in obackup Return code" "1" $?
2016-12-23 20:43:58 +01:00
}
2016-12-28 22:20:59 +01:00
function test_WaitForTaskCompletion () {
2016-11-30 13:59:01 +01:00
local pids
2016-08-18 22:38:28 +02:00
# Standard wait
2016-09-04 08:07:17 +02:00
sleep 1 &
2016-08-18 14:19:52 +02:00
pids="$!"
2016-09-04 08:07:17 +02:00
sleep 2 &
2016-08-18 14:19:52 +02:00
pids="$pids;$!"
2016-11-30 13:59:01 +01:00
WaitForTaskCompletion $pids 0 0 $SLEEP_TIME $KEEP_LOGGING true true false ${FUNCNAME[0]}
2016-08-18 14:19:52 +02:00
assertEquals "WaitForTaskCompletion test 1" "0" $?
2016-08-18 22:38:28 +02:00
# Standard wait with warning
2016-09-04 08:07:17 +02:00
sleep 2 &
2016-08-18 14:19:52 +02:00
pids="$!"
2016-09-04 08:07:17 +02:00
sleep 5 &
2016-08-18 14:19:52 +02:00
pids="$pids;$!"
2016-11-30 13:59:01 +01:00
WaitForTaskCompletion $pids 3 0 $SLEEP_TIME $KEEP_LOGGING true true false ${FUNCNAME[0]}
2016-08-18 14:19:52 +02:00
assertEquals "WaitForTaskCompletion test 2" "0" $?
2016-08-18 22:38:28 +02:00
# Both pids are killed
2016-09-04 08:07:17 +02:00
sleep 5 &
2016-08-18 14:19:52 +02:00
pids="$!"
2016-09-04 08:07:17 +02:00
sleep 5 &
2016-08-18 14:19:52 +02:00
pids="$pids;$!"
2016-11-30 13:59:01 +01:00
WaitForTaskCompletion $pids 0 2 $SLEEP_TIME $KEEP_LOGGING true true false ${FUNCNAME[0]}
2016-08-18 14:19:52 +02:00
assertEquals "WaitForTaskCompletion test 3" "2" $?
2016-08-18 22:38:28 +02:00
# One of two pids are killed
2016-09-04 08:07:17 +02:00
sleep 2 &
2016-08-18 14:19:52 +02:00
pids="$!"
2016-08-18 17:10:53 +02:00
sleep 10 &
2016-08-18 14:19:52 +02:00
pids="$pids;$!"
2016-11-30 13:59:01 +01:00
WaitForTaskCompletion $pids 0 3 $SLEEP_TIME $KEEP_LOGGING true true false ${FUNCNAME[0]}
2016-08-18 14:19:52 +02:00
assertEquals "WaitForTaskCompletion test 4" "1" $?
2016-08-18 22:38:28 +02:00
# Count since script begin, the following should output two warnings and both pids should get killed
2016-09-04 08:07:17 +02:00
sleep 20 &
2016-08-18 22:38:28 +02:00
pids="$!"
2016-09-04 08:07:17 +02:00
sleep 20 &
2016-08-18 22:38:28 +02:00
pids="$pids;$!"
2016-11-30 13:59:01 +01:00
WaitForTaskCompletion $pids 3 5 $SLEEP_TIME $KEEP_LOGGING false true false ${FUNCNAME[0]}
2016-08-18 22:38:28 +02:00
assertEquals "WaitForTaskCompletion test 5" "2" $?
2016-08-18 14:19:52 +02:00
}
2016-12-28 22:20:59 +01:00
function test_ParallelExec () {
2016-11-30 13:59:01 +01:00
local cmd
# Test if parallelExec works correctly in array mode
2016-08-30 21:50:04 +02:00
2016-09-02 13:13:53 +02:00
cmd="sleep 2;sleep 2;sleep 2;sleep 2"
2016-08-30 21:50:04 +02:00
ParallelExec 4 "$cmd"
assertEquals "ParallelExec test 1" "0" $?
2016-09-02 13:13:53 +02:00
cmd="sleep 2;du /none;sleep 2"
2016-08-30 21:50:04 +02:00
ParallelExec 2 "$cmd"
assertEquals "ParallelExec test 2" "1" $?
2016-09-02 13:13:53 +02:00
cmd="sleep 4;du /none;sleep 3;du /none;sleep 2"
2016-08-30 21:50:04 +02:00
ParallelExec 3 "$cmd"
assertEquals "ParallelExec test 3" "2" $?
2016-11-30 13:59:01 +01:00
# Test if parallelExec works correctly in file mode
echo "sleep 2" > "$TMP_FILE"
echo "sleep 2" >> "$TMP_FILE"
echo "sleep 2" >> "$TMP_FILE"
echo "sleep 2" >> "$TMP_FILE"
ParallelExec 4 "$TMP_FILE" true
assertEquals "ParallelExec test 4" "0" $?
echo "sleep 2" > "$TMP_FILE"
echo "du /nome" >> "$TMP_FILE"
echo "sleep 2" >> "$TMP_FILE"
ParallelExec 2 "$TMP_FILE" true
assertEquals "ParallelExec test 5" "1" $?
echo "sleep 4" > "$TMP_FILE"
echo "du /none" >> "$TMP_FILE"
echo "sleep 3" >> "$TMP_FILE"
echo "du /none" >> "$TMP_FILE"
echo "sleep 2" >> "$TMP_FILE"
ParallelExec 3 "$TMP_FILE" true
assertEquals "ParallelExec test 6" "2" $?
#function ParallelExec $numberOfProcesses $commandsArg $readFromFile $softTime $HardTime $sleepTime $keepLogging $counting $Spinner $noError $callerName
# Test if parallelExec works correctly in array mode with full time control
cmd="sleep 5;sleep 5;sleep 5;sleep 5;sleep 5"
ParallelExec 4 "$cmd" false 1 0 .05 3600 true true false ${FUNCNAME[0]}
assertEquals "ParallelExec full test 1" "0" $?
cmd="sleep 2;du /none;sleep 2;sleep 2;sleep 4"
ParallelExec 2 "$cmd" false 0 0 .1 2 true false false ${FUNCNAME[0]}
assertEquals "ParallelExec full test 2" "1" $?
cmd="sleep 4;du /none;sleep 3;du /none;sleep 2"
ParallelExec 3 "$cmd" false 1 2 .05 7000 true true false ${FUNCNAME[0]}
assertNotEquals "ParallelExec full test 3" "0" $?
2016-08-30 21:50:04 +02:00
}
2016-12-28 22:20:59 +01:00
function test_UpgradeConfPullRun () {
2016-09-09 12:36:30 +02:00
# Basic return code tests. Need to go deep into file presence testing
cd "$OBACKUP_DIR"
2016-10-23 19:00:03 +02:00
# Make a security copy of the old config file
cp "$CONF_DIR/$OLD_CONF" "$CONF_DIR/$TMP_OLD_CONF"
./$OBACKUP_UPGRADE "$CONF_DIR/$TMP_OLD_CONF"
2016-09-09 12:36:30 +02:00
assertEquals "Conf file upgrade" "0" $?
2016-12-23 21:29:02 +01:00
# Update remote conf files with SSH port
sed -i.tmp 's#ssh://.*@localhost:[0-9]*/#ssh://'$REMOTE_USER'@localhost:'$SSH_PORT'/#' "$CONF_DIR/$TMP_OLD_CONF"
2016-12-23 20:43:58 +01:00
REMOTE_HOST_PING=$RHOST_PING ./$OBACKUP_EXECUTABLE "$CONF_DIR/$TMP_OLD_CONF"
2016-09-09 12:36:30 +02:00
assertEquals "Upgraded conf file execution test" "0" $?
2016-10-23 19:00:03 +02:00
rm -f "$CONF_DIR/$TMP_OLD_CONF"
rm -f "$CONF_DIR/$TMP_OLD_CONF.save"
2016-09-09 12:36:30 +02:00
}
2016-08-30 16:12:10 +02:00
. "$TESTS_DIR/shunit2/shunit2"
2016-09-03 14:18:03 +02:00