1#!/bin/sh
2#
3# This systemtest tests the Percona plugin functionality
4# of the Bareos FD by using the supplied module
5#   BareosFdPluginPerconaXtraBackup.py
6#
7TestName="$(basename "$(pwd)")"
8export TestName
9
10JobName=backup-bareos-fd
11#shellcheck source=../environment.in
12. ./environment
13
14JobName=backup-bareos-fd
15#shellcheck source=../scripts/functions
16. "${rscripts}"/functions
17"${rscripts}"/cleanup
18"${rscripts}"/setup
19
20xtrabackup_test_db="${db_name}_xtrabackup"
21
22start_test
23
24echo "drop database ${xtrabackup_test_db}" | mysql
25echo "create database ${xtrabackup_test_db}" | mysql
26echo "CREATE TABLE test ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, data VARCHAR(100), created TIMESTAMP DEFAULT NOW())  " | mysql ${xtrabackup_test_db}
27echo "insert into test (data) VALUES ('test entry 1') " | mysql ${xtrabackup_test_db}
28
29
30run_bareos "$@"
31
32echo "@$out $tmp/log1.out"  | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
33
34COMMAND="run job=$JobName"
35echo "$COMMAND yes" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
36echo "wait JobName=$JobName" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
37echo "status dir" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
38# insert data and run incremental
39echo "insert into test (data) VALUES ('test entry 2') " | mysql ${xtrabackup_test_db}
40
41COMMAND="$COMMAND level=Incremental"
42echo "$COMMAND yes" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf #| grep "Job queued. JobId="
43echo "wait JobName=$JobName" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
44echo "status dir" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
45
46
47# run incremental again without any new data
48echo "$COMMAND yes" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf #| grep "Job queued. JobId="
49echo "wait JobName=$JobName" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
50echo "status dir" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
51
52
53# run restore
54RESTORECMD="restore client=bareos-fd fileset=PerconaXtraBackupTest yes restorejob=RestoreFile select all done"
55
56echo "@$out $tmp/log2.out"  | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf
57
58JOBID=$(echo "$RESTORECMD" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf | grep "Job queued. JobId=" | sed s'/.*=//')
59
60if ! echo "wait jobid=$JOBID" | $BAREOS_BCONSOLE_BINARY -c "$conf"/bconsole.conf | grep -q "JobStatus=OK";
61then
62    echo "Restore Job $JOBID failed"
63    estat=1
64fi
65
66# Check, if xtrabackup has extracted some files at least
67# TODO: verify that xtrabackup --prepare works and eventually do complete datbase restore
68ls -lR  $tmp/bareos-restores/_percona/
69if [ -z "$(ls -A $tmp/bareos-restores/_percona/)" ]; then
70       echo "No restore data found"
71       estat=1
72fi
73
74
75
76
77
78check_for_zombie_jobs storage=File
79stop_bareos
80
81check_two_logs
82
83end_test
84