You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-07-01 00:25:06 +02:00
Refactor command/expire unit test module.
Add titles and use a Buffer to store backup.info instead of a String.
This commit is contained in:
committed by
David Steele
parent
f9c86b11a5
commit
e170c53e7e
@ -600,6 +600,9 @@ unit:
|
|||||||
coverage:
|
coverage:
|
||||||
command/expire/expire: full
|
command/expire/expire: full
|
||||||
|
|
||||||
|
include:
|
||||||
|
- info/infoBackup
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------------------------------------------------------
|
||||||
- name: help
|
- name: help
|
||||||
total: 4
|
total: 4
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Test Expire Command
|
Test Expire Command
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
|
#include "common/io/bufferRead.h"
|
||||||
#include "storage/posix/storage.h"
|
#include "storage/posix/storage.h"
|
||||||
|
|
||||||
#include "common/harnessConfig.h"
|
#include "common/harnessConfig.h"
|
||||||
@ -83,7 +84,8 @@ testRun(void)
|
|||||||
StringList *argListAvoidWarn = strLstDup(argListBase);
|
StringList *argListAvoidWarn = strLstDup(argListBase);
|
||||||
strLstAddZ(argListAvoidWarn, "--repo1-retention-full=1"); // avoid warning
|
strLstAddZ(argListAvoidWarn, "--repo1-retention-full=1"); // avoid warning
|
||||||
|
|
||||||
String *backupInfoBase = strNew(
|
const Buffer *backupInfoBase = harnessInfoChecksumZ
|
||||||
|
(
|
||||||
"[backup:current]\n"
|
"[backup:current]\n"
|
||||||
"20181119-152138F={"
|
"20181119-152138F={"
|
||||||
"\"backrest-format\":5,\"backrest-version\":\"2.08dev\","
|
"\"backrest-format\":5,\"backrest-version\":\"2.08dev\","
|
||||||
@ -144,13 +146,17 @@ testRun(void)
|
|||||||
"\n"
|
"\n"
|
||||||
"[db:history]\n"
|
"[db:history]\n"
|
||||||
"1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702,"
|
"1={\"db-catalog-version\":201409291,\"db-control-version\":942,\"db-system-id\":6625592122879095702,"
|
||||||
"\"db-version\":\"9.4\"}");
|
"\"db-version\":\"9.4\"}"
|
||||||
|
);
|
||||||
|
|
||||||
// *****************************************************************************************************************************
|
// *****************************************************************************************************************************
|
||||||
if (testBegin("expireBackup()"))
|
if (testBegin("expireBackup()"))
|
||||||
{
|
{
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("manifest file removal");
|
||||||
|
|
||||||
// Create backup.info
|
// Create backup.info
|
||||||
storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(backupInfoBase));
|
TEST_RESULT_VOID(storagePutP(storageNewWriteP(storageTest, backupInfoFileName), backupInfoBase), "write backup.info");
|
||||||
|
|
||||||
InfoBackup *infoBackup = NULL;
|
InfoBackup *infoBackup = NULL;
|
||||||
TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info");
|
TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info");
|
||||||
@ -199,10 +205,11 @@ testRun(void)
|
|||||||
if (testBegin("expireFullBackup()"))
|
if (testBegin("expireFullBackup()"))
|
||||||
{
|
{
|
||||||
// Create backup.info
|
// Create backup.info
|
||||||
storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(backupInfoBase));
|
|
||||||
|
|
||||||
InfoBackup *infoBackup = NULL;
|
InfoBackup *infoBackup = NULL;
|
||||||
TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info");
|
TEST_ASSIGN(infoBackup, infoBackupNewLoad(ioBufferReadNew(backupInfoBase)), "get backup.info");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-full not set - nothing expired");
|
||||||
|
|
||||||
// Load Parameters
|
// Load Parameters
|
||||||
StringList *argList = strLstDup(argListBase);
|
StringList *argList = strLstDup(argListBase);
|
||||||
@ -215,6 +222,8 @@ testRun(void)
|
|||||||
"set option 'repo1-retention-full' to the maximum.");
|
"set option 'repo1-retention-full' to the maximum.");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-full set - full backup no dependencies expired");
|
||||||
|
|
||||||
strLstAddZ(argList, "--repo1-retention-full=2");
|
strLstAddZ(argList, "--repo1-retention-full=2");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
|
|
||||||
@ -228,6 +237,8 @@ testRun(void)
|
|||||||
harnessLogResult("P00 INFO: expire full backup 20181119-152138F");
|
harnessLogResult("P00 INFO: expire full backup 20181119-152138F");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-full set - full backup with dependencies expired");
|
||||||
|
|
||||||
argList = strLstDup(argListBase);
|
argList = strLstDup(argListBase);
|
||||||
strLstAddZ(argList, "--repo1-retention-full=1");
|
strLstAddZ(argList, "--repo1-retention-full=1");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
@ -242,6 +253,8 @@ testRun(void)
|
|||||||
"20181119-152800F_20181119-152155I");
|
"20181119-152800F_20181119-152155I");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-full set - no backups expired");
|
||||||
|
|
||||||
TEST_RESULT_UINT(expireFullBackup(infoBackup), 0, "retention-full=1 - not enough backups to expire any");
|
TEST_RESULT_UINT(expireFullBackup(infoBackup), 0, "retention-full=1 - not enough backups to expire any");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152900F, 20181119-152900F_20181119-152600D",
|
strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "), "20181119-152900F, 20181119-152900F_20181119-152600D",
|
||||||
@ -252,10 +265,11 @@ testRun(void)
|
|||||||
if (testBegin("expireDiffBackup()"))
|
if (testBegin("expireDiffBackup()"))
|
||||||
{
|
{
|
||||||
// Create backup.info
|
// Create backup.info
|
||||||
storagePutP(storageNewWriteP(storageTest, backupInfoFileName), harnessInfoChecksum(backupInfoBase));
|
|
||||||
|
|
||||||
InfoBackup *infoBackup = NULL;
|
InfoBackup *infoBackup = NULL;
|
||||||
TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), "get backup.info");
|
TEST_ASSIGN(infoBackup, infoBackupNewLoad(ioBufferReadNew(backupInfoBase)), "get backup.info");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-diff not set");
|
||||||
|
|
||||||
// Load Parameters
|
// Load Parameters
|
||||||
StringList *argList = strLstDup(argListAvoidWarn);
|
StringList *argList = strLstDup(argListAvoidWarn);
|
||||||
@ -265,6 +279,8 @@ testRun(void)
|
|||||||
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 6, "current backups not expired");
|
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 6, "current backups not expired");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-diff set - nothing yet to expire");
|
||||||
|
|
||||||
// Add retention-diff
|
// Add retention-diff
|
||||||
StringList *argListTemp = strLstDup(argList);
|
StringList *argListTemp = strLstDup(argList);
|
||||||
strLstAddZ(argListTemp, "--repo1-retention-diff=6");
|
strLstAddZ(argListTemp, "--repo1-retention-diff=6");
|
||||||
@ -274,10 +290,12 @@ testRun(void)
|
|||||||
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 6, "current backups not expired");
|
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 6, "current backups not expired");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-diff set - diff and dependent incr expired");
|
||||||
|
|
||||||
strLstAddZ(argList, "--repo1-retention-diff=2");
|
strLstAddZ(argList, "--repo1-retention-diff=2");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
|
|
||||||
TEST_RESULT_UINT(expireDiffBackup(infoBackup), 2, "retention-diff set - full considered in diff");
|
TEST_RESULT_UINT(expireDiffBackup(infoBackup), 2, "retention-diff=2 - full considered in diff");
|
||||||
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 4, "current backups reduced by 1 diff and dependent increment");
|
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 4, "current backups reduced by 1 diff and dependent increment");
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "),
|
strLstJoin(infoBackupDataLabelList(infoBackup, NULL), ", "),
|
||||||
@ -290,6 +308,8 @@ testRun(void)
|
|||||||
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 4, "current backups not reduced");
|
TEST_RESULT_UINT(infoBackupDataTotal(infoBackup), 4, "current backups not reduced");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-diff set - diff with no dependents expired");
|
||||||
|
|
||||||
// Create backup.info with two diff - oldest to be expired - no "set:"
|
// Create backup.info with two diff - oldest to be expired - no "set:"
|
||||||
storagePutP(
|
storagePutP(
|
||||||
storageNewWriteP(storageTest, backupInfoFileName),
|
storageNewWriteP(storageTest, backupInfoFileName),
|
||||||
@ -349,6 +369,9 @@ testRun(void)
|
|||||||
// *****************************************************************************************************************************
|
// *****************************************************************************************************************************
|
||||||
if (testBegin("removeExpiredBackup()"))
|
if (testBegin("removeExpiredBackup()"))
|
||||||
{
|
{
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("remove expired backup from disk - backup not in current backup");
|
||||||
|
|
||||||
// Create backup.info
|
// Create backup.info
|
||||||
storagePutP(
|
storagePutP(
|
||||||
storageNewWriteP(storageTest, backupInfoFileName),
|
storageNewWriteP(storageTest, backupInfoFileName),
|
||||||
@ -413,6 +436,8 @@ testRun(void)
|
|||||||
"remaining file/directories correct");
|
"remaining file/directories correct");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("remove expired backup from disk - no current backups");
|
||||||
|
|
||||||
// Create backup.info without current backups
|
// Create backup.info without current backups
|
||||||
storagePutP(
|
storagePutP(
|
||||||
storageNewWriteP(storageTest, backupInfoFileName),
|
storageNewWriteP(storageTest, backupInfoFileName),
|
||||||
@ -441,6 +466,9 @@ testRun(void)
|
|||||||
// *****************************************************************************************************************************
|
// *****************************************************************************************************************************
|
||||||
if (testBegin("removeExpiredArchive() & cmdExpire()"))
|
if (testBegin("removeExpiredArchive() & cmdExpire()"))
|
||||||
{
|
{
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive not set");
|
||||||
|
|
||||||
// Load Parameters
|
// Load Parameters
|
||||||
StringList *argList = strLstDup(argListBase);
|
StringList *argList = strLstDup(argListBase);
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
@ -471,6 +499,8 @@ testRun(void)
|
|||||||
"P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired");
|
"P00 INFO: option 'repo1-retention-archive' is not set - archive logs will not be expired");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive set - no current backups");
|
||||||
|
|
||||||
// Set archive retention, archive retention type default but no current backups - code path test
|
// Set archive retention, archive retention type default but no current backups - code path test
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=4");
|
strLstAddZ(argList, "--repo1-retention-archive=4");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
@ -482,6 +512,8 @@ testRun(void)
|
|||||||
"set option 'repo1-retention-full' to the maximum.");
|
"set option 'repo1-retention-full' to the maximum.");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive set - no archive on disk");
|
||||||
|
|
||||||
// Create backup.info with current backups spread over different timelines
|
// Create backup.info with current backups spread over different timelines
|
||||||
storagePutP(storageNewWriteP(storageTest, backupInfoFileName),
|
storagePutP(storageNewWriteP(storageTest, backupInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
@ -574,6 +606,8 @@ testRun(void)
|
|||||||
TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "no archive on disk");
|
TEST_RESULT_VOID(removeExpiredArchive(infoBackup), "no archive on disk");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive set - remove archives across timelines");
|
||||||
|
|
||||||
archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000100000000");
|
archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000100000000");
|
||||||
archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000200000000");
|
archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "9.4-1", "0000000200000000");
|
||||||
archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "10-2", "0000000100000000");
|
archiveGenerate(storageTest, archiveStanzaPath, 1, 10, "10-2", "0000000100000000");
|
||||||
@ -599,6 +633,8 @@ testRun(void)
|
|||||||
"P00 INFO: full backup total < 4 - using oldest full backup for 10-2 archive retention");
|
"P00 INFO: full backup total < 4 - using oldest full backup for 10-2 archive retention");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive set - latest archive not expired");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=2");
|
strLstAddZ(argList, "--repo1-retention-archive=2");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
@ -622,6 +658,8 @@ testRun(void)
|
|||||||
"none removed from 10-2/0000000100000000");
|
"none removed from 10-2/0000000100000000");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive set to lowest - keep PITR for each archiveId");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=1");
|
strLstAddZ(argList, "--repo1-retention-archive=1");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
@ -644,6 +682,8 @@ testRun(void)
|
|||||||
archiveExpectList(3, 10, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
archiveExpectList(3, 10, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive, retention-archive-type=diff, retention-diff set");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=2");
|
strLstAddZ(argList, "--repo1-retention-archive=2");
|
||||||
strLstAddZ(argList, "--repo1-retention-archive-type=diff");
|
strLstAddZ(argList, "--repo1-retention-archive-type=diff");
|
||||||
@ -678,6 +718,8 @@ testRun(void)
|
|||||||
archiveExpectList(3, 10, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
archiveExpectList(3, 10, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive, retention-archive-type=incr");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=4");
|
strLstAddZ(argList, "--repo1-retention-archive=4");
|
||||||
strLstAddZ(argList, "--repo1-retention-archive-type=incr");
|
strLstAddZ(argList, "--repo1-retention-archive-type=incr");
|
||||||
@ -711,6 +753,8 @@ testRun(void)
|
|||||||
archiveExpectList(3, 10, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
archiveExpectList(3, 10, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("expire command - dry run");
|
||||||
|
|
||||||
argList = strLstDup(argListBase);
|
argList = strLstDup(argListBase);
|
||||||
strLstAddZ(argList, "--repo1-retention-full=2");
|
strLstAddZ(argList, "--repo1-retention-full=2");
|
||||||
strLstAddZ(argList, "--repo1-retention-diff=3");
|
strLstAddZ(argList, "--repo1-retention-diff=3");
|
||||||
@ -762,6 +806,8 @@ testRun(void)
|
|||||||
storageNewWriteP(storageTest, strNewFmt("%s%s", strPtr(archiveInfoFileName), ".save")));
|
storageNewWriteP(storageTest, strNewFmt("%s%s", strPtr(archiveInfoFileName), ".save")));
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("expire via backup command");
|
||||||
|
|
||||||
argList = strLstDup(argListBase);
|
argList = strLstDup(argListBase);
|
||||||
strLstAddZ(argList, "--repo1-retention-full=2");
|
strLstAddZ(argList, "--repo1-retention-full=2");
|
||||||
strLstAddZ(argList, "--repo1-retention-diff=3");
|
strLstAddZ(argList, "--repo1-retention-diff=3");
|
||||||
@ -779,6 +825,8 @@ testRun(void)
|
|||||||
"P00 INFO: remove expired backup 20181119-152138F");
|
"P00 INFO: remove expired backup 20181119-152138F");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("expire command - no dry run");
|
||||||
|
|
||||||
argList = strLstDup(argListBase);
|
argList = strLstDup(argListBase);
|
||||||
strLstAddZ(argList, "--repo1-retention-full=2");
|
strLstAddZ(argList, "--repo1-retention-full=2");
|
||||||
strLstAddZ(argList, "--repo1-retention-diff=3");
|
strLstAddZ(argList, "--repo1-retention-diff=3");
|
||||||
@ -809,6 +857,8 @@ testRun(void)
|
|||||||
"P00 INFO: remove expired backup 20181119-152138F");
|
"P00 INFO: remove expired backup 20181119-152138F");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("expire command - dry run: archive and backups not removed");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=1");
|
strLstAddZ(argList, "--repo1-retention-archive=1");
|
||||||
strLstAddZ(argList, "--dry-run");
|
strLstAddZ(argList, "--dry-run");
|
||||||
@ -836,6 +886,9 @@ testRun(void)
|
|||||||
"P00 INFO: [DRY-RUN] remove expired backup 20181119-152800F\n"
|
"P00 INFO: [DRY-RUN] remove expired backup 20181119-152800F\n"
|
||||||
"P00 INFO: [DRY-RUN] remove archive path: %s/%s/9.4-1", testPath(), strPtr(archiveStanzaPath))));
|
"P00 INFO: [DRY-RUN] remove archive path: %s/%s/9.4-1", testPath(), strPtr(archiveStanzaPath))));
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("expire via backup command - archive and backups removed");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=1");
|
strLstAddZ(argList, "--repo1-retention-archive=1");
|
||||||
strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath()));
|
strLstAdd(argList, strNewFmt("--pg1-path=%s/pg", testPath()));
|
||||||
@ -861,6 +914,9 @@ testRun(void)
|
|||||||
strLstJoin(strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderAsc), ", "),
|
strLstJoin(strLstSort(infoBackupDataLabelList(infoBackup, NULL), sortOrderAsc), ", "),
|
||||||
"20181119-152900F, 20181119-152900F_20181119-152500I", "remaining current backups correct");
|
"20181119-152900F, 20181119-152900F_20181119-152500I", "remaining current backups correct");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("expire command - archive removed");
|
||||||
|
|
||||||
archiveGenerate(storageTest, archiveStanzaPath, 1, 1, "9.4-1", "0000000100000000");
|
archiveGenerate(storageTest, archiveStanzaPath, 1, 1, "9.4-1", "0000000100000000");
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=1");
|
strLstAddZ(argList, "--repo1-retention-archive=1");
|
||||||
@ -915,6 +971,9 @@ testRun(void)
|
|||||||
|
|
||||||
archiveGenerate(storageTest, archiveStanzaPath, 1, 5, "9.4-1", "0000000100000000");
|
archiveGenerate(storageTest, archiveStanzaPath, 1, 5, "9.4-1", "0000000100000000");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention backup no archive-start");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=2");
|
strLstAddZ(argList, "--repo1-retention-archive=2");
|
||||||
strLstAddZ(argList, "--repo1-retention-archive-type=full");
|
strLstAddZ(argList, "--repo1-retention-archive-type=full");
|
||||||
@ -927,6 +986,9 @@ testRun(void)
|
|||||||
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "),
|
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "9.4-1", "0000000100000000")), sortOrderAsc), ", "),
|
||||||
archiveExpectList(1, 5, "0000000100000000"), "nothing removed from 9.4-1/0000000100000000");
|
archiveExpectList(1, 5, "0000000100000000"), "nothing removed from 9.4-1/0000000100000000");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("retention-archive-type=incr");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=4");
|
strLstAddZ(argList, "--repo1-retention-archive=4");
|
||||||
strLstAddZ(argList, "--repo1-retention-archive-type=incr");
|
strLstAddZ(argList, "--repo1-retention-archive-type=incr");
|
||||||
@ -941,6 +1003,9 @@ testRun(void)
|
|||||||
harnessLogResult(
|
harnessLogResult(
|
||||||
"P00 INFO: full backup total < 4 - using oldest full backup for 9.4-1 archive retention");
|
"P00 INFO: full backup total < 4 - using oldest full backup for 9.4-1 archive retention");
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("prior backup has no archive-start");
|
||||||
|
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
strLstAddZ(argList, "--repo1-retention-archive=1");
|
strLstAddZ(argList, "--repo1-retention-archive=1");
|
||||||
strLstAddZ(argList, "--repo1-retention-archive-type=full");
|
strLstAddZ(argList, "--repo1-retention-archive-type=full");
|
||||||
@ -960,13 +1025,14 @@ testRun(void)
|
|||||||
// *****************************************************************************************************************************
|
// *****************************************************************************************************************************
|
||||||
if (testBegin("info files mismatch"))
|
if (testBegin("info files mismatch"))
|
||||||
{
|
{
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("archive.info has only current db with different db history id as backup.info");
|
||||||
|
|
||||||
// Load Parameters
|
// Load Parameters
|
||||||
StringList *argList = strLstDup(argListBase);
|
StringList *argList = strLstDup(argListBase);
|
||||||
strLstAddZ(argList, "--repo1-retention-full=2");
|
strLstAddZ(argList, "--repo1-retention-full=2");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
|
|
||||||
// archive.info has only current db with different db history id as backup.info
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
|
||||||
storagePutP(storageNewWriteP(storageTest, backupInfoFileName),
|
storagePutP(storageNewWriteP(storageTest, backupInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
"[backup:current]\n"
|
"[backup:current]\n"
|
||||||
@ -1049,8 +1115,9 @@ testRun(void)
|
|||||||
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "),
|
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-2", "0000000100000000")), sortOrderAsc), ", "),
|
||||||
archiveExpectList(1, 7, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
archiveExpectList(1, 7, "0000000100000000"), "none removed from 10-2/0000000100000000");
|
||||||
|
|
||||||
// archive.info old history db system id not the same as backup.info
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("archive.info old history db system id not the same as backup.info");
|
||||||
|
|
||||||
storagePutP(
|
storagePutP(
|
||||||
storageNewWriteP(storageTest, archiveInfoFileName),
|
storageNewWriteP(storageTest, archiveInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
@ -1065,8 +1132,9 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match");
|
TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match");
|
||||||
|
|
||||||
// archive.info old history db version not the same as backup.info
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("archive.info old history db version not the same as backup.info");
|
||||||
|
|
||||||
storagePutP(
|
storagePutP(
|
||||||
storageNewWriteP(storageTest, archiveInfoFileName),
|
storageNewWriteP(storageTest, archiveInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
@ -1081,8 +1149,9 @@ testRun(void)
|
|||||||
|
|
||||||
TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match");
|
TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match");
|
||||||
|
|
||||||
// archive.info has only current db with same db history id as backup.info
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("archive.info has only current db with same db history id as backup.info");
|
||||||
|
|
||||||
storagePutP(storageNewWriteP(storageTest, backupInfoFileName),
|
storagePutP(storageNewWriteP(storageTest, backupInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
"[backup:current]\n"
|
"[backup:current]\n"
|
||||||
@ -1175,6 +1244,9 @@ testRun(void)
|
|||||||
// *****************************************************************************************************************************
|
// *****************************************************************************************************************************
|
||||||
if (testBegin("archiveIdComparator()"))
|
if (testBegin("archiveIdComparator()"))
|
||||||
{
|
{
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("archiveId comparator sorting");
|
||||||
|
|
||||||
StringList *list = strLstNewParam(archiveIdComparator);
|
StringList *list = strLstNewParam(archiveIdComparator);
|
||||||
|
|
||||||
strLstAddZ(list, "10-4");
|
strLstAddZ(list, "10-4");
|
||||||
|
Reference in New Issue
Block a user