You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-07-15 01:04:37 +02:00
Update command/backup tests to use standard patterns.
Includes backup and backupCommon tests. Some tests in backupTest were split out where they were originally combined into a single boolean check - which made it difficult to determine which part of the conditional failed. String values were also removed where they were no longer needed.
This commit is contained in:
@ -216,6 +216,9 @@
|
|||||||
<github-pull-request id="1456"/>
|
<github-pull-request id="1456"/>
|
||||||
</commit>
|
</commit>
|
||||||
<commit subject="Add cipher parameters to TEST_STORAGE_GET() macro."/>
|
<commit subject="Add cipher parameters to TEST_STORAGE_GET() macro."/>
|
||||||
|
<commit subject="Update command/backup tests to use standard patterns.">
|
||||||
|
<github-pull-request id="1463"/>
|
||||||
|
</commit>
|
||||||
|
|
||||||
<release-item-contributor-list>
|
<release-item-contributor-list>
|
||||||
<release-item-contributor id="cynthia.shang"/>
|
<release-item-contributor id="cynthia.shang"/>
|
||||||
|
@ -24,86 +24,107 @@ testRun(void)
|
|||||||
const String *diff = STRDEF("20181119-152138F_20181119-152152D");
|
const String *diff = STRDEF("20181119-152138F_20181119-152152D");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - error");
|
||||||
|
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
backupRegExpP(0),
|
backupRegExpP(0),
|
||||||
AssertError, "assertion 'param.full || param.differential || param.incremental' failed");
|
AssertError, "assertion 'param.full || param.differential || param.incremental' failed");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match full");
|
||||||
|
|
||||||
String *filter = backupRegExpP(.full = true);
|
String *filter = backupRegExpP(.full = true);
|
||||||
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F$", "full backup regex with anchors");
|
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F$", "full backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, " does not exactly match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, "does not exactly match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, " does not exactly match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, "does not exactly match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " exactly matches full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, "exactly matches full");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match full, incremental");
|
||||||
|
|
||||||
filter = backupRegExpP(.full = true, .incremental = true);
|
filter = backupRegExpP(.full = true, .incremental = true);
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}I){0,1}$", "full and optional incr backup regex with anchors");
|
filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}I){0,1}$", "full and optional incr backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, "match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, " does not match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, "does not match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " match full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, "match full");
|
||||||
TEST_RESULT_BOOL(
|
TEST_RESULT_BOOL(
|
||||||
regExpMatchOne(
|
regExpMatchOne(
|
||||||
filter, STRDEF("12341234-123123F_12341234-123123IG")), false, " does not match with trailing character");
|
filter, STRDEF("12341234-123123F_12341234-123123IG")), false, "does not match with trailing character");
|
||||||
TEST_RESULT_BOOL(
|
TEST_RESULT_BOOL(
|
||||||
regExpMatchOne(
|
regExpMatchOne(
|
||||||
filter, STRDEF("A12341234-123123F_12341234-123123I")), false, " does not match with leading character");
|
filter, STRDEF("A12341234-123123F_12341234-123123I")), false, "does not match with leading character");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match full, differential");
|
||||||
|
|
||||||
filter = backupRegExpP(.full = true, .differential = true);
|
filter = backupRegExpP(.full = true, .differential = true);
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}D){0,1}$", "full and optional diff backup regex with anchors");
|
filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}D){0,1}$", "full and optional diff backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, " does not match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, "does not match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, "match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " match full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, "match full");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match full, incremental, differential");
|
||||||
|
|
||||||
filter = backupRegExpP(.full = true, .incremental = true, .differential = true);
|
filter = backupRegExpP(.full = true, .incremental = true, .differential = true);
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(
|
TEST_RESULT_STR_Z(
|
||||||
filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}(D|I)){0,1}$",
|
filter, "^[0-9]{8}\\-[0-9]{6}F(\\_[0-9]{8}\\-[0-9]{6}(D|I)){0,1}$",
|
||||||
"full, optional diff and incr backup regex with anchors");
|
"full, optional diff and incr backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, "match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, "match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, " match full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), true, "match full");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match incremental, differential without end anchor");
|
||||||
|
|
||||||
filter = backupRegExpP(.incremental = true, .differential = true, .noAnchorEnd = true);
|
filter = backupRegExpP(.incremental = true, .differential = true, .noAnchorEnd = true);
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}(D|I)", "diff and incr backup regex with anchors");
|
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}(D|I)", "diff and incr backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, "match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, "match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, " does not match full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, "does not match full");
|
||||||
TEST_RESULT_BOOL(
|
TEST_RESULT_BOOL(
|
||||||
regExpMatchOne(
|
regExpMatchOne(
|
||||||
filter, STRDEF("A12341234-123123F_12341234-123123I")), false, " does not match with leading character");
|
filter, STRDEF("A12341234-123123F_12341234-123123I")), false, "does not match with leading character");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match incremental");
|
||||||
|
|
||||||
filter = backupRegExpP(.incremental = true);
|
filter = backupRegExpP(.incremental = true);
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}I$", "incr backup regex with anchors");
|
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}I$", "incr backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, " match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), true, "match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, " does not match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), false, "does not match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, " does not match full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, "does not match full");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("regular expression - match differential");
|
||||||
|
|
||||||
filter = backupRegExpP(.differential = true);
|
filter = backupRegExpP(.differential = true);
|
||||||
|
|
||||||
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}D$", "diff backup regex with anchors");
|
TEST_RESULT_STR_Z(filter, "^[0-9]{8}\\-[0-9]{6}F\\_[0-9]{8}\\-[0-9]{6}D$", "diff backup regex with anchors");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, " does not match incr");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, incr), false, "does not match incr");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, " match diff");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, diff), true, "match diff");
|
||||||
TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, " does not match full");
|
TEST_RESULT_BOOL(regExpMatchOne(filter, full), false, "does not match full");
|
||||||
}
|
}
|
||||||
|
|
||||||
// *****************************************************************************************************************************
|
// *****************************************************************************************************************************
|
||||||
if (testBegin("PageChecksum"))
|
if (testBegin("PageChecksum"))
|
||||||
{
|
{
|
||||||
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("segment page default");
|
||||||
|
|
||||||
TEST_RESULT_UINT(PG_SEGMENT_PAGE_DEFAULT, 131072, "check pages per segment");
|
TEST_RESULT_UINT(PG_SEGMENT_PAGE_DEFAULT, 131072, "check pages per segment");
|
||||||
|
|
||||||
// Test pages with all zeros (these are considered valid)
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("pages with all zeroes");
|
||||||
|
|
||||||
|
// Test pages with all zeros (these are considered valid)
|
||||||
Buffer *buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 3);
|
Buffer *buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 3);
|
||||||
Buffer *bufferOut = bufNew(0);
|
Buffer *bufferOut = bufNew(0);
|
||||||
bufUsedSet(buffer, bufSize(buffer));
|
bufUsedSet(buffer, bufSize(buffer));
|
||||||
@ -122,8 +143,9 @@ testRun(void)
|
|||||||
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
||||||
"{\"align\":true,\"valid\":true}", "all zero pages");
|
"{\"align\":true,\"valid\":true}", "all zero pages");
|
||||||
|
|
||||||
// Single valid page
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("single valid page");
|
||||||
|
|
||||||
buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 1);
|
buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 1);
|
||||||
bufUsedSet(buffer, bufSize(buffer));
|
bufUsedSet(buffer, bufSize(buffer));
|
||||||
memset(bufPtr(buffer), 0, bufSize(buffer));
|
memset(bufPtr(buffer), 0, bufSize(buffer));
|
||||||
@ -156,8 +178,9 @@ testRun(void)
|
|||||||
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
||||||
"{\"align\":true,\"valid\":true}", "single valid page");
|
"{\"align\":true,\"valid\":true}", "single valid page");
|
||||||
|
|
||||||
// Single checksum error
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("single checksum error");
|
||||||
|
|
||||||
buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 1);
|
buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 1);
|
||||||
bufUsedSet(buffer, bufSize(buffer));
|
bufUsedSet(buffer, bufSize(buffer));
|
||||||
memset(bufPtr(buffer), 0, bufSize(buffer));
|
memset(bufPtr(buffer), 0, bufSize(buffer));
|
||||||
@ -187,8 +210,9 @@ testRun(void)
|
|||||||
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
||||||
"{\"align\":true,\"error\":[0],\"valid\":false}", "single checksum error");
|
"{\"align\":true,\"error\":[0],\"valid\":false}", "single checksum error");
|
||||||
|
|
||||||
// Various checksum errors some of which will be skipped because of the LSN
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("various checksum errors some of which will be skipped because of the LSN");
|
||||||
|
|
||||||
buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 8 - (PG_PAGE_SIZE_DEFAULT - 512));
|
buffer = bufNew(PG_PAGE_SIZE_DEFAULT * 8 - (PG_PAGE_SIZE_DEFAULT - 512));
|
||||||
bufUsedSet(buffer, bufSize(buffer));
|
bufUsedSet(buffer, bufSize(buffer));
|
||||||
memset(bufPtr(buffer), 0, bufSize(buffer));
|
memset(bufPtr(buffer), 0, bufSize(buffer));
|
||||||
@ -278,8 +302,9 @@ testRun(void)
|
|||||||
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
||||||
"{\"align\":false,\"error\":[0,[2,4],[6,7]],\"valid\":false}", "various checksum errors");
|
"{\"align\":false,\"error\":[0,[2,4],[6,7]],\"valid\":false}", "various checksum errors");
|
||||||
|
|
||||||
// Impossibly misaligned page
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("impossibly misaligned page");
|
||||||
|
|
||||||
buffer = bufNew(256);
|
buffer = bufNew(256);
|
||||||
bufUsedSet(buffer, bufSize(buffer));
|
bufUsedSet(buffer, bufSize(buffer));
|
||||||
memset(bufPtr(buffer), 0, bufSize(buffer));
|
memset(bufPtr(buffer), 0, bufSize(buffer));
|
||||||
@ -296,8 +321,9 @@ testRun(void)
|
|||||||
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
jsonFromVar(ioFilterGroupResult(ioWriteFilterGroup(write), PAGE_CHECKSUM_FILTER_TYPE_STR)),
|
||||||
"{\"align\":false,\"valid\":false}", "misalignment");
|
"{\"align\":false,\"valid\":false}", "misalignment");
|
||||||
|
|
||||||
// Two misaligned buffers in a row
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("two misaligned buffers in a row");
|
||||||
|
|
||||||
buffer = bufNew(513);
|
buffer = bufNew(513);
|
||||||
bufUsedSet(buffer, bufSize(buffer));
|
bufUsedSet(buffer, bufSize(buffer));
|
||||||
memset(bufPtr(buffer), 0, bufSize(buffer));
|
memset(bufPtr(buffer), 0, bufSize(buffer));
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user