You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2026-06-03 19:24:32 +02:00
Remove real/all integration tests now covered by unit tests.
Remove all check and stanza-* tests except for the ones that are intended to succeed. The successful tests show that the queries run with expected results against each version of PG which should also validate queries for the failure tests in the unit tests. Also remove the tests for --no-online backups since they don't require a database and are well tested in the unit tests.
This commit is contained in:
@@ -219,6 +219,14 @@
|
||||
|
||||
<release-test-list>
|
||||
<release-development-list>
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-reviewer id="cynthia.shang"/>
|
||||
</release-item-contributor-list>
|
||||
|
||||
<p>Remove <id>real/all</id> integration tests now covered by unit tests.</p>
|
||||
</release-item>
|
||||
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-reviewer id="cynthia.shang"/>
|
||||
|
||||
@@ -5,94 +5,14 @@ stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on missing archive.info file (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=0.1 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
full backup - fail on archive_mode=off (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive_mode=off (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=0.1 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive_mode=off (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
full backup - fail on invalid archive_command (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on invalid archive_command (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=0.1 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on invalid archive_command (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive timeout when archive-check=n (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=0.1 --no-archive-check --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - verify success (db-primary host)
|
||||
check db - verify check command runs successfully (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=5 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - verify success (backup host)
|
||||
check db - verify check command runs successfully (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive mismatch after upgrade (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=0.1 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive mismatch after upgrade (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive timeout (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=0.1 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on archive timeout (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=0.1 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on backup info mismatch (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=5 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - fail on backup info mismatch (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - verify success after backup (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --archive-timeout=5 --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
check db - verify success after backup (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --archive-timeout=5 --reset-pg2-host --reset-pg2-path --stanza=db check
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - fail on backup info file missing from non-empty dir (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - fail on database mismatch with directory (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-primary/db/testbase/ stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - successfully create stanza files to be upgraded (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --pg1-path=[TEST_PATH]/db-primary/db/testbase/ --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-upgrade db - upgrade stanza files online (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-upgrade
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
full backup - fail on backup lock exists (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -743,112 +663,6 @@ restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.con
|
||||
standby_mode = 'on'
|
||||
recovery_target_timeline = '4'
|
||||
|
||||
incr backup - fail on --no-online (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --reset-pg2-host --reset-pg2-path --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
incr backup - succeed on --no-online with --force (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --force --reset-pg2-host --reset-pg2-path --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-primary/pgbackrest.conf
|
||||
-----------------------------------------------------------
|
||||
[db]
|
||||
pg1-path=[TEST_PATH]/db-primary/db/base
|
||||
pg1-port=6543
|
||||
pg1-socket-path=[TEST_PATH]/db-primary/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-primary/lock
|
||||
log-level-console=detail
|
||||
log-level-file=[LOG-LEVEL-FILE]
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/db-primary/log
|
||||
log-subprocess=[LOG-SUBPROCESS]
|
||||
log-timestamp=n
|
||||
protocol-timeout=60
|
||||
repo1-host=backup
|
||||
repo1-host-cmd=[BACKREST-BIN]
|
||||
repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf
|
||||
repo1-host-user=[USER-1]
|
||||
spool-path=[TEST_PATH]/db-primary/spool
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-standby/pgbackrest.conf
|
||||
-----------------------------------------------------------
|
||||
[db]
|
||||
pg1-path=[TEST_PATH]/db-standby/db/base
|
||||
pg1-port=6544
|
||||
pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[db:restore]
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
log-level-file=[LOG-LEVEL-FILE]
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/db-standby/log
|
||||
log-subprocess=[LOG-SUBPROCESS]
|
||||
log-timestamp=n
|
||||
protocol-timeout=60
|
||||
repo1-host=backup
|
||||
repo1-host-cmd=[BACKREST-BIN]
|
||||
repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf
|
||||
repo1-host-user=[USER-1]
|
||||
spool-path=[TEST_PATH]/db-standby/spool
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/pgbackrest.conf
|
||||
-------------------------------------------------------
|
||||
[db]
|
||||
pg1-host=db-primary
|
||||
pg1-host-cmd=[BACKREST-BIN]
|
||||
pg1-host-config=[TEST_PATH]/db-primary/pgbackrest.conf
|
||||
pg1-host-user=[USER-1]
|
||||
pg1-path=[TEST_PATH]/db-primary/db/base
|
||||
pg1-port=6543
|
||||
pg2-host=bogus
|
||||
pg2-host-cmd=[BACKREST-BIN]
|
||||
pg2-host-config=[TEST_PATH]/db-standby/pgbackrest.conf
|
||||
pg2-host-user=[USER-1]
|
||||
pg2-path=[TEST_PATH]/db-standby/db/base
|
||||
pg8-host=db-standby
|
||||
pg8-host-cmd=[BACKREST-BIN]
|
||||
pg8-host-config=[TEST_PATH]/db-standby/pgbackrest.conf
|
||||
pg8-host-user=[USER-1]
|
||||
pg8-path=[TEST_PATH]/db-standby/db/base
|
||||
pg8-port=6544
|
||||
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=detail
|
||||
log-level-file=[LOG-LEVEL-FILE]
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
log-subprocess=[LOG-SUBPROCESS]
|
||||
log-timestamp=n
|
||||
protocol-timeout=60
|
||||
repo1-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
archive-copy=y
|
||||
start-fast=y
|
||||
|
||||
stop all stanzas (db-primary host)
|
||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf stop
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -138,151 +138,9 @@ sub run
|
||||
$oHostDbPrimary->sqlExecute('create database test1', {bAutoCommit => true});
|
||||
$oHostDbPrimary->sqlExecute('create database test2', {bAutoCommit => true});
|
||||
|
||||
# Test check command and stanza create
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# In this section the same comment can be used multiple times so make it a variable that can be set once and reused
|
||||
my $strComment = undef;
|
||||
|
||||
# Archive and backup info file names
|
||||
my $strArchiveInfoFile = $oHostBackup->repoArchivePath(ARCHIVE_INFO_FILE);
|
||||
my $strArchiveInfoCopyFile = $oHostBackup->repoArchivePath(ARCHIVE_INFO_FILE . INI_COPY_EXT);
|
||||
my $strArchiveInfoOldFile = "${strArchiveInfoFile}.old";
|
||||
my $strArchiveInfoCopyOldFile = "${strArchiveInfoCopyFile}.old";
|
||||
|
||||
my $strBackupInfoFile = $oHostBackup->repoBackupPath(FILE_BACKUP_INFO);
|
||||
my $strBackupInfoCopyFile = $oHostBackup->repoBackupPath(FILE_BACKUP_INFO . INI_COPY_EXT);
|
||||
my $strBackupInfoOldFile = "${strBackupInfoFile}.old";
|
||||
my $strBackupInfoCopyOldFile = "${strBackupInfoCopyFile}.old";
|
||||
|
||||
# Move the archive.info files to simulate missing file
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false});
|
||||
|
||||
$oHostDbPrimary->check(
|
||||
'fail on missing archive.info file',
|
||||
{iTimeout => 0.1, iExpectedExitStatus => ERROR_FILE_MISSING});
|
||||
|
||||
# Backup.info was created earlier so restore archive info files
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoOldFile, $strArchiveInfoFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoCopyOldFile, $strArchiveInfoCopyFile, {bRecurse => false});
|
||||
|
||||
# Check ERROR_ARCHIVE_DISABLED error
|
||||
$strComment = 'fail on archive_mode=off';
|
||||
$oHostDbPrimary->clusterRestart({bIgnoreLogError => true, bArchiveEnabled => false});
|
||||
|
||||
$oHostBackup->backup(CFGOPTVAL_BACKUP_TYPE_FULL, $strComment, {iExpectedExitStatus => ERROR_ARCHIVE_DISABLED});
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_DISABLED});
|
||||
|
||||
# Also run check on the backup host when present
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$oHostBackup->check(
|
||||
$strComment,
|
||||
{iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_DISABLED, strOptionalParam => $strBogusReset});
|
||||
}
|
||||
|
||||
# Check ERROR_ARCHIVE_COMMAND_INVALID error
|
||||
$strComment = 'fail on invalid archive_command';
|
||||
$oHostDbPrimary->clusterRestart({bIgnoreLogError => true, bArchive => false});
|
||||
|
||||
$oHostBackup->backup(CFGOPTVAL_BACKUP_TYPE_FULL, $strComment, {iExpectedExitStatus => ERROR_ARCHIVE_COMMAND_INVALID});
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_COMMAND_INVALID});
|
||||
|
||||
# Also run check on the backup host when present
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$oHostBackup->check(
|
||||
$strComment,
|
||||
{iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_COMMAND_INVALID, strOptionalParam => $strBogusReset});
|
||||
}
|
||||
|
||||
# When archive-check=n then ERROR_ARCHIVE_TIMEOUT will be raised instead of ERROR_ARCHIVE_COMMAND_INVALID
|
||||
# ??? But maybe we should error with the fact that that option is not valid
|
||||
$strComment = 'fail on archive timeout when archive-check=n';
|
||||
$oHostDbPrimary->check(
|
||||
$strComment,
|
||||
{iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_TIMEOUT, strOptionalParam => '--no-archive-check'});
|
||||
|
||||
# Stop the cluster ignoring any errors in the postgresql log
|
||||
$oHostDbPrimary->clusterStop({bIgnoreLogError => true});
|
||||
|
||||
# Providing a sufficient archive-timeout, verify that the check command runs successfully.
|
||||
$strComment = 'verify success';
|
||||
|
||||
$oHostDbPrimary->clusterStart();
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 5});
|
||||
|
||||
# Also run check on the backup host when present
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$oHostBackup->check($strComment, {iTimeout => 5, strOptionalParam => $strBogusReset});
|
||||
}
|
||||
|
||||
# Check archive mismatch due to upgrade error
|
||||
$strComment = 'fail on archive mismatch after upgrade';
|
||||
|
||||
# load the archive info file and munge it for testing by breaking the database version
|
||||
$oHostBackup->infoMunge(
|
||||
$oHostBackup->repoArchivePath(ARCHIVE_INFO_FILE),
|
||||
{&INFO_ARCHIVE_SECTION_DB => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'},
|
||||
&INFO_ARCHIVE_SECTION_DB_HISTORY => {1 => {&INFO_ARCHIVE_KEY_DB_VERSION => '8.0'}}});
|
||||
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_FILE_INVALID});
|
||||
|
||||
# Also run check on the backup host when present
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$oHostBackup->check(
|
||||
$strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => $strBogusReset});
|
||||
}
|
||||
|
||||
# Restore the file to its original condition
|
||||
$oHostBackup->infoRestore($oHostBackup->repoArchivePath(ARCHIVE_INFO_FILE));
|
||||
|
||||
# Check archive_timeout error when WAL segment is not found
|
||||
$strComment = 'fail on archive timeout';
|
||||
|
||||
$oHostDbPrimary->clusterRestart({bIgnoreLogError => true, bArchiveInvalid => true});
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_TIMEOUT});
|
||||
|
||||
# Also run check on the backup host when present
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$oHostBackup->check(
|
||||
$strComment,
|
||||
{iTimeout => 0.1, iExpectedExitStatus => ERROR_ARCHIVE_TIMEOUT, strOptionalParam => $strBogusReset});
|
||||
}
|
||||
|
||||
# Restart the cluster ignoring any errors in the postgresql log
|
||||
$oHostDbPrimary->clusterRestart({bIgnoreLogError => true});
|
||||
|
||||
# With a valid archive info, create the backup.info file by running a backup then munge the backup.info file.
|
||||
# Check backup mismatch error
|
||||
$strComment = 'fail on backup info mismatch';
|
||||
|
||||
# Load the backup.info file and munge it for testing by breaking the database version and system id
|
||||
$oHostBackup->infoMunge(
|
||||
$oHostBackup->repoBackupPath(FILE_BACKUP_INFO),
|
||||
{&INFO_BACKUP_SECTION_DB =>
|
||||
{&INFO_BACKUP_KEY_DB_VERSION => '8.0', &INFO_BACKUP_KEY_SYSTEM_ID => 6999999999999999999},
|
||||
&INFO_BACKUP_SECTION_DB_HISTORY =>
|
||||
{1 => {&INFO_BACKUP_KEY_DB_VERSION => '8.0', &INFO_BACKUP_KEY_SYSTEM_ID => 6999999999999999999}}});
|
||||
|
||||
# Run the test
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_FILE_INVALID});
|
||||
|
||||
# Also run check on the backup host when present
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$oHostBackup->check(
|
||||
$strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => $strBogusReset});
|
||||
}
|
||||
|
||||
# Restore the file to its original condition
|
||||
$oHostBackup->infoRestore($oHostBackup->repoBackupPath(FILE_BACKUP_INFO));
|
||||
|
||||
# ??? Removed temporarily until manifest build can be brought back into the check command
|
||||
# Create a directory in pg_data location that is only readable by root to ensure manifest->build is called by check
|
||||
# --------------------------------------------------------------------------------------------------------------------------
|
||||
# my $strDir = $oHostDbPrimary->dbBasePath() . '/rootreaddir';
|
||||
# executeTest('sudo mkdir ' . $strDir);
|
||||
# executeTest("sudo chown root:root ${strDir}");
|
||||
@@ -292,9 +150,8 @@ sub run
|
||||
# $oHostDbPrimary->check($strComment, {iTimeout => 5, iExpectedExitStatus => ERROR_PATH_OPEN});
|
||||
# executeTest("sudo rmdir ${strDir}");
|
||||
|
||||
# Providing a sufficient archive-timeout, verify that the check command runs successfully now with valid
|
||||
# archive.info and backup.info files
|
||||
$strComment = 'verify success after backup';
|
||||
# --------------------------------------------------------------------------------------------------------------------------
|
||||
my $strComment = 'verify check command runs successfully';
|
||||
|
||||
$oHostDbPrimary->check($strComment, {iTimeout => 5});
|
||||
|
||||
@@ -307,87 +164,6 @@ sub run
|
||||
# Restart the cluster ignoring any errors in the postgresql log
|
||||
$oHostDbPrimary->clusterRestart({bIgnoreLogError => true});
|
||||
|
||||
# Stanza Create
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
# Determine which pg index is the primary. When backing up to the standby the primary and standby indexes are switched
|
||||
# to provide coverage for cases where the primary is not first and because the local pg instance is always intended to
|
||||
# be index 1.
|
||||
my $strPrimaryIdx = $strBackupDestination eq HOST_DB_STANDBY ? '8' : '1';
|
||||
|
||||
# With data existing in the archive and backup directory, move info files and confirm failure
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoFile, $strBackupInfoOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoCopyFile, $strBackupInfoCopyOldFile, {bRecurse => false});
|
||||
|
||||
$oHostBackup->stanzaCreate(
|
||||
'fail on backup info file missing from non-empty dir', {iExpectedExitStatus => ERROR_PATH_NOT_EMPTY});
|
||||
|
||||
# Change the database version by copying a new pg_control file to a new pg-path to use for db mismatch test
|
||||
storageTest()->pathCreate(
|
||||
$oHostDbPrimary->dbPath() . '/testbase/' . DB_PATH_GLOBAL,
|
||||
{strMode => '0700', bIgnoreExists => true, bCreateParent => true});
|
||||
$self->controlGenerate(
|
||||
$oHostDbPrimary->dbPath() . '/testbase', $self->pgVersion() eq PG_VERSION_94 ? PG_VERSION_95 : PG_VERSION_94);
|
||||
|
||||
# Run stanza-create online to confirm proper handling of configValidation error against new pg-path
|
||||
$oHostBackup->stanzaCreate('fail on database mismatch with directory',
|
||||
{strOptionalParam => " --pg${strPrimaryIdx}-path=" . $oHostDbPrimary->dbPath() . '/testbase/',
|
||||
iExpectedExitStatus => ERROR_DB_MISMATCH});
|
||||
|
||||
# Remove the directories to be able to create the stanza
|
||||
forceStorageRemove(storageRepo(), $oHostBackup->repoBackupPath(), {bRecurse => true});
|
||||
forceStorageRemove(storageRepo(), $oHostBackup->repoArchivePath(), {bRecurse => true});
|
||||
|
||||
# Stanza Upgrade - tests configValidate code - all other tests in synthetic integration tests
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
# Change the database version by copying a new pg_control file to a new pg-path to use for db mismatch test
|
||||
if ($strBackupDestination eq HOST_DB_STANDBY)
|
||||
{
|
||||
storageTest()->pathCreate(
|
||||
$oHostDbStandby->dbPath() . '/testbase/' . DB_PATH_GLOBAL,
|
||||
{strMode => '0700', bIgnoreExists => true, bCreateParent => true});
|
||||
$self->controlGenerate(
|
||||
$oHostDbStandby->dbPath() . '/testbase', $self->pgVersion() eq PG_VERSION_94 ? PG_VERSION_95 : PG_VERSION_94);
|
||||
}
|
||||
|
||||
# Run stanza-create offline to create files needing to be upgraded (using new pg-path)
|
||||
$oHostBackup->stanzaCreate(
|
||||
'successfully create stanza files to be upgraded',
|
||||
{strOptionalParam =>
|
||||
" --pg1-path=" .
|
||||
($strBackupDestination eq HOST_DB_STANDBY ? $oHostDbStandby->dbPath() : $oHostDbPrimary->dbPath()) .
|
||||
'/testbase/ --no-online'});
|
||||
my $oArchiveInfo = new pgBackRestTest::Env::ArchiveInfo($oHostBackup->repoArchivePath());
|
||||
my $oBackupInfo = new pgBackRestTest::Env::BackupInfo($oHostBackup->repoBackupPath());
|
||||
|
||||
# Read info files to confirm the files were created with a different database version
|
||||
if ($self->pgVersion() eq PG_VERSION_94)
|
||||
{
|
||||
$self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef,
|
||||
PG_VERSION_95)}, true, 'archive upgrade forced with pg mismatch');
|
||||
$self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef,
|
||||
PG_VERSION_95)}, true, 'backup upgrade forced with pg mismatch');
|
||||
}
|
||||
else
|
||||
{
|
||||
$self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef,
|
||||
PG_VERSION_94)}, true, 'archive create forced with pg mismatch in prep for stanza-upgrade');
|
||||
$self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef,
|
||||
PG_VERSION_94)}, true, 'backup create forced with pg mismatch in prep for stanza-upgrade');
|
||||
}
|
||||
|
||||
# Run stanza-upgrade online with the default pg-path to correct the info files
|
||||
$oHostBackup->stanzaUpgrade('upgrade stanza files online');
|
||||
|
||||
# Reread the info files and confirm the result
|
||||
$oArchiveInfo = new pgBackRestTest::Env::ArchiveInfo($oHostBackup->repoArchivePath());
|
||||
$oBackupInfo = new pgBackRestTest::Env::BackupInfo($oHostBackup->repoBackupPath());
|
||||
$self->testResult(sub {$oArchiveInfo->test(INFO_ARCHIVE_SECTION_DB, INFO_ARCHIVE_KEY_DB_VERSION, undef,
|
||||
$self->pgVersion())}, true, 'archive upgrade online corrects db');
|
||||
$self->testResult(sub {$oBackupInfo->test(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_DB_VERSION, undef,
|
||||
$self->pgVersion())}, true, 'backup upgrade online corrects db');
|
||||
|
||||
# Full backup
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Create the table where test messages will be stored
|
||||
@@ -424,7 +200,7 @@ sub run
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
if ($bExpectVersion)
|
||||
{
|
||||
$oBackupInfo = new pgBackRestTest::Env::BackupInfo($oHostBackup->repoBackupPath());
|
||||
my $oBackupInfo = new pgBackRestTest::Env::BackupInfo($oHostBackup->repoBackupPath());
|
||||
push(my @backupLst1, $oBackupInfo->list());
|
||||
|
||||
$strFullBackup = $oHostBackup->backup(
|
||||
@@ -564,6 +340,8 @@ sub run
|
||||
# the expect version.
|
||||
if ($bExpectVersion)
|
||||
{
|
||||
confess "test must be performed on posix storage" if $strStorage ne POSIX;
|
||||
|
||||
$oHostDbPrimary->clusterRestart();
|
||||
|
||||
# Add backup for adhoc expire
|
||||
@@ -654,7 +432,7 @@ sub run
|
||||
# Restart the cluster ignoring any errors in the postgresql log
|
||||
$oHostDbPrimary->clusterRestart({bIgnoreLogError => true});
|
||||
|
||||
# Start a new backup to make the next test restart it
|
||||
# Start a new backup to make the next test restarts it
|
||||
$oHostDbPrimary->sqlSelectOne("select pg_start_backup('test backup that will be restarted', true)");
|
||||
}
|
||||
|
||||
@@ -982,25 +760,6 @@ sub run
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oHostDbPrimary->clusterStop();
|
||||
|
||||
# Test no-online backups
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Create a postmaster.pid file so it appears that the server is running
|
||||
storageTest()->put(
|
||||
($strBackupDestination eq HOST_DB_STANDBY ? $oHostDbStandby->dbBasePath() : $oHostDbPrimary->dbBasePath()) .
|
||||
'/postmaster.pid', '99999');
|
||||
|
||||
# Incr backup - make sure a --no-online backup fails
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$oHostBackup->backup(
|
||||
CFGOPTVAL_BACKUP_TYPE_INCR, 'fail on --no-online',
|
||||
{iExpectedExitStatus => ERROR_PG_RUNNING, strOptionalParam => '--no-online' . $strBogusReset});
|
||||
|
||||
# Incr backup - allow --no-online backup to succeed with --force
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$oHostBackup->backup(
|
||||
CFGOPTVAL_BACKUP_TYPE_INCR, 'succeed on --no-online with --force',
|
||||
{strOptionalParam => '--no-online --force' . $strBogusReset});
|
||||
|
||||
# Stanza-delete --force without access to pgbackrest on database host. This test is not version specific so is run on only
|
||||
# the expect version.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user