mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-12 10:04:14 +02:00
Add HRN_PG_CONTROL_PUT() and HRN_PG_CONTROL_TIME().
These macros simplify management of pg_control test files. Centralize time updates for pg_control in the command/backup module. This caused some time updates in the logs. Finally, move the postgres module after the storage module so it can use storage macros.
This commit is contained in:
parent
01ac6b6cac
commit
0895cfcdf7
@ -427,27 +427,6 @@ unit:
|
||||
coverage:
|
||||
- common/lock
|
||||
|
||||
# ********************************************************************************************************************************
|
||||
- name: postgres
|
||||
|
||||
test:
|
||||
# ----------------------------------------------------------------------------------------------------------------------------
|
||||
- name: client
|
||||
total: 1
|
||||
harness: pq
|
||||
|
||||
coverage:
|
||||
- postgres/client
|
||||
|
||||
# ----------------------------------------------------------------------------------------------------------------------------
|
||||
- name: interface
|
||||
total: 9
|
||||
harness: postgres
|
||||
|
||||
coverage:
|
||||
- postgres/interface
|
||||
- postgres/interface/page
|
||||
|
||||
# ********************************************************************************************************************************
|
||||
- name: protocol
|
||||
|
||||
@ -596,6 +575,27 @@ unit:
|
||||
- storage/storage
|
||||
- storage/write
|
||||
|
||||
# ********************************************************************************************************************************
|
||||
- name: postgres
|
||||
|
||||
test:
|
||||
# ----------------------------------------------------------------------------------------------------------------------------
|
||||
- name: client
|
||||
total: 1
|
||||
harness: pq
|
||||
|
||||
coverage:
|
||||
- postgres/client
|
||||
|
||||
# ----------------------------------------------------------------------------------------------------------------------------
|
||||
- name: interface
|
||||
total: 9
|
||||
harness: postgres
|
||||
|
||||
coverage:
|
||||
- postgres/interface
|
||||
- postgres/interface/page
|
||||
|
||||
# ********************************************************************************************************************************
|
||||
- name: build
|
||||
|
||||
|
@ -7,6 +7,8 @@ Harness for PostgreSQL Interface
|
||||
#include "postgres/interface.h"
|
||||
#include "postgres/version.h"
|
||||
|
||||
#include "common/harnessStorage.h"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Control file size used to create pg_control
|
||||
***********************************************************************************************************************************/
|
||||
@ -46,6 +48,19 @@ System id constants by version
|
||||
#define HRN_PG_SYSTEMID_14 (10000000000000000000ULL + (uint64_t)PG_VERSION_14)
|
||||
#define HRN_PG_SYSTEMID_14_Z "10000000000000140000"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Put a control file to storage
|
||||
***********************************************************************************************************************************/
|
||||
#define HRN_PG_CONTROL_PUT(storageParam, versionParam, ...) \
|
||||
HRN_STORAGE_PUT( \
|
||||
storageParam, PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = versionParam, __VA_ARGS__}))
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Update control file time
|
||||
***********************************************************************************************************************************/
|
||||
#define HRN_PG_CONTROL_TIME(storageParam, timeParam, ...) \
|
||||
HRN_STORAGE_TIME(storageParam, PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, timeParam)
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Functions
|
||||
***********************************************************************************************************************************/
|
||||
|
@ -150,8 +150,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("no segments to find");
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_10}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_10);
|
||||
|
||||
HRN_INFO_PUT(
|
||||
storageRepoWrite(), INFO_ARCHIVE_PATH_FILE,
|
||||
@ -623,8 +622,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("no valid repo");
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_10}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_10);
|
||||
|
||||
strLstAddZ(argList, TEST_PATH "/pg/pg_wal/RECOVERYXLOG");
|
||||
HRN_CFG_LOAD(cfgCmdArchiveGet, argList, .exeBogus = true);
|
||||
@ -780,8 +778,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("pg version does not match archive.info");
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_11}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_11);
|
||||
|
||||
HRN_INFO_PUT(
|
||||
storageRepoWrite(), INFO_ARCHIVE_PATH_FILE,
|
||||
@ -810,9 +807,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("pg system id does not match archive.info");
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_10, .systemId = 1}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_10, .systemId = 1);
|
||||
|
||||
TEST_ERROR(cmdArchiveGet(), RepoInvalidError, "unable to find a valid repository");
|
||||
|
||||
@ -823,8 +818,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("file is missing");
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_10}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_10);
|
||||
|
||||
TEST_RESULT_INT(cmdArchiveGet(), 1, "get");
|
||||
|
||||
|
@ -104,8 +104,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("mismatched pg_control and archive.info - pg version");
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storageTest, "pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_96}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_96);
|
||||
|
||||
// Create incorrect archive info
|
||||
HRN_INFO_PUT(
|
||||
@ -288,8 +287,7 @@ testRun(void)
|
||||
strLstAddZ(argListTemp, "pg_wal/000000010000000100000001");
|
||||
HRN_CFG_LOAD(cfgCmdArchivePush, argListTemp);
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storageTest, "pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_11}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_11);
|
||||
|
||||
HRN_INFO_PUT(
|
||||
storageRepoIdxWrite(0), INFO_ARCHIVE_PATH_FILE,
|
||||
@ -669,8 +667,7 @@ testRun(void)
|
||||
hrnCfgArgRawZ(argList, cfgOptRepoPath, TEST_PATH "/repo");
|
||||
hrnCfgArgRawBool(argList, cfgOptLogSubprocess, true);
|
||||
|
||||
HRN_STORAGE_PUT(
|
||||
storageTest, "pg/" PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_94}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_94);
|
||||
|
||||
HRN_INFO_PUT(
|
||||
storageTest, "repo/archive/test/archive.info",
|
||||
|
@ -274,6 +274,9 @@ testBackupPqScript(unsigned int pgVersion, time_t backupTimeStart, TestBackupPqS
|
||||
const char *lsnStopStr = strZ(pgLsnToStr(lsnStop));
|
||||
const char *walSegmentStop = strZ(pgLsnToWalSegment(param.timeline, lsnStop, pgControl.walSegmentSize));
|
||||
|
||||
// Update pg_control on primary with the backup time
|
||||
HRN_PG_CONTROL_TIME(storagePgIdxWrite(0), backupTimeStart);
|
||||
|
||||
// Write WAL segments to the archive
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
if (!param.noPriorWal)
|
||||
@ -1010,8 +1013,7 @@ testRun(void)
|
||||
TEST_TITLE("warn and reset when backup from standby used in offline mode");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_92}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_92);
|
||||
|
||||
argList = strLstNew();
|
||||
hrnCfgArgRawZ(argList, cfgOptStanza, "test1");
|
||||
@ -1034,8 +1036,7 @@ testRun(void)
|
||||
TEST_TITLE("error when pg_control does not match stanza");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_10}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_10);
|
||||
|
||||
argList = strLstNew();
|
||||
hrnCfgArgRawZ(argList, cfgOptStanza, "test1");
|
||||
@ -1062,8 +1063,7 @@ testRun(void)
|
||||
TEST_TITLE("reset start-fast when PostgreSQL < 8.4");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_83}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_83);
|
||||
|
||||
argList = strLstNew();
|
||||
hrnCfgArgRawZ(argList, cfgOptStanza, "test1");
|
||||
@ -1085,8 +1085,7 @@ testRun(void)
|
||||
TEST_TITLE("reset stop-auto when PostgreSQL < 9.3");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_84}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_84);
|
||||
|
||||
argList = strLstNew();
|
||||
hrnCfgArgRawZ(argList, cfgOptStanza, "test1");
|
||||
@ -1108,8 +1107,7 @@ testRun(void)
|
||||
TEST_TITLE("reset checksum-page when the cluster does not have checksums enabled");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_93}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_93);
|
||||
|
||||
// Create stanza
|
||||
argList = strLstNew();
|
||||
@ -1151,9 +1149,7 @@ testRun(void)
|
||||
TEST_TITLE("ok if cluster checksums are enabled and checksum-page is any value");
|
||||
|
||||
// Create pg_control with page checksums
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_93, .pageChecksum = true}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_93, .pageChecksum = true);
|
||||
|
||||
argList = strLstNew();
|
||||
hrnCfgArgRawZ(argList, cfgOptStanza, "test1");
|
||||
@ -1178,8 +1174,7 @@ testRun(void)
|
||||
TEST_RESULT_BOOL(cfgOptionBool(cfgOptChecksumPage), false, "check checksum-page");
|
||||
|
||||
// Create pg_control without page checksums
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_93}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_93);
|
||||
|
||||
harnessPqScriptSet((HarnessPq [])
|
||||
{
|
||||
@ -1203,8 +1198,7 @@ testRun(void)
|
||||
TEST_TITLE("sleep retries and stall error");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_93}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_93);
|
||||
|
||||
// Create stanza
|
||||
StringList *argList = strLstNew();
|
||||
@ -1482,8 +1476,7 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdStanzaCreate, argList);
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_84}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_84);
|
||||
|
||||
cmdStanzaCreate();
|
||||
TEST_RESULT_LOG("P00 INFO: stanza-create for stanza 'test1' on repo1");
|
||||
@ -1732,9 +1725,7 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdStanzaCreate, argList);
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_95}),
|
||||
.timeModified = backupTimeStart);
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_95);
|
||||
|
||||
cmdStanzaCreate();
|
||||
TEST_RESULT_LOG("P00 INFO: stanza-create for stanza 'test1' on repo1");
|
||||
@ -1981,7 +1972,7 @@ testRun(void)
|
||||
"[target:file]\n"
|
||||
"pg_data/PG_VERSION={\"checksum\":\"06d06bb31b570b94d7b4325f511f853dbe771c21\",\"size\":3"
|
||||
",\"timestamp\":1570000000}\n"
|
||||
"pg_data/global/pg_control={\"size\":8192,\"timestamp\":1570000000}\n"
|
||||
"pg_data/global/pg_control={\"size\":8192,\"timestamp\":1570100000}\n"
|
||||
"pg_data/not-in-resume={\"checksum\":\"984816fd329622876e14907634264e6f332e9fb3\",\"size\":4"
|
||||
",\"timestamp\":1570100000}\n"
|
||||
"pg_data/pg_xlog/0000000105D95D3000000000={\"size\":16777216,\"timestamp\":1570100002}\n"
|
||||
@ -2139,7 +2130,7 @@ testRun(void)
|
||||
"[target:file]\n"
|
||||
"pg_data/PG_VERSION={\"checksum\":\"06d06bb31b570b94d7b4325f511f853dbe771c21\",\"reference\":\"20191003-105320F\""
|
||||
",\"size\":3,\"timestamp\":1570000000}\n"
|
||||
"pg_data/global/pg_control={\"reference\":\"20191003-105320F\",\"size\":8192,\"timestamp\":1570000000}\n"
|
||||
"pg_data/global/pg_control={\"reference\":\"20191003-105320F\",\"size\":8192,\"timestamp\":1570200000}\n"
|
||||
"pg_data/postgresql.conf={\"checksum\":\"e3db315c260e79211b7b52587123b7aa060f30ab\""
|
||||
",\"reference\":\"20191003-105320F\",\"size\":11,\"timestamp\":1570000000}\n"
|
||||
"pg_data/resume-ref={\"size\":0,\"timestamp\":1570200000}\n"
|
||||
@ -2164,9 +2155,7 @@ testRun(void)
|
||||
|
||||
{
|
||||
// Update pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_96}),
|
||||
.timeModified = backupTimeStart);
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_96);
|
||||
|
||||
// Update version
|
||||
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_PGVERSION, PG_VERSION_96_STR, .timeModified = backupTimeStart);
|
||||
@ -2307,10 +2296,7 @@ testRun(void)
|
||||
|
||||
{
|
||||
// Update pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_11, .pageChecksum = true, .walSegmentSize = 1024 * 1024}),
|
||||
.timeModified = backupTimeStart);
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_11, .pageChecksum = true, .walSegmentSize = 1024 * 1024);
|
||||
|
||||
// Update version
|
||||
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_PGVERSION, PG_VERSION_11_STR, .timeModified = backupTimeStart);
|
||||
@ -2522,8 +2508,6 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("error when pg_control not present");
|
||||
|
||||
backupTimeStart = BACKUP_EPOCH + 2300000;
|
||||
|
||||
{
|
||||
// Load options
|
||||
StringList *argList = strLstNew();
|
||||
@ -2535,8 +2519,11 @@ testRun(void)
|
||||
hrnCfgArgRawBool(argList, cfgOptRepoHardlink, true);
|
||||
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
||||
|
||||
// Preserve prior timestamp on pg_control
|
||||
testBackupPqScriptP(PG_VERSION_11, BACKUP_EPOCH + 2300000, .errorAfterStart = true);
|
||||
HRN_PG_CONTROL_TIME(storagePg(), backupTimeStart);
|
||||
|
||||
// Run backup
|
||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .errorAfterStart = true);
|
||||
TEST_ERROR(
|
||||
cmdBackup(), FileMissingError,
|
||||
"pg_control must be present in all online backups\n"
|
||||
@ -2574,9 +2561,6 @@ testRun(void)
|
||||
hrnCfgArgRawBool(argList, cfgOptRepoHardlink, true);
|
||||
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
||||
|
||||
// Update pg_control timestamp
|
||||
HRN_STORAGE_TIME(storagePg(), "global/pg_control", backupTimeStart);
|
||||
|
||||
// Run backup. Make sure that the timeline selected converts to hexdecimal that can't be interpreted as decimal.
|
||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .timeline = 0x2C, .walTotal = 2);
|
||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
||||
|
@ -150,8 +150,7 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdCheck, argList);
|
||||
|
||||
// Create pg_control for standby
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_92}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_92);
|
||||
|
||||
// Standby database path doesn't match pg_control
|
||||
harnessPqScriptSet((HarnessPq [])
|
||||
@ -175,9 +174,7 @@ testRun(void)
|
||||
TEST_TITLE("standby and primary database - error on primary but standby check ok");
|
||||
|
||||
// Create pg_control for primary
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgIdxWrite(1), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_92}));
|
||||
HRN_PG_CONTROL_PUT(storagePgIdxWrite(1), PG_VERSION_92);
|
||||
|
||||
// Create info files
|
||||
HRN_INFO_PUT(
|
||||
@ -571,9 +568,7 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdStanzaCreate, argList);
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgIdxWrite(0), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_96}));
|
||||
HRN_PG_CONTROL_PUT(storagePgIdxWrite(0), PG_VERSION_96);
|
||||
|
||||
// Create info files
|
||||
TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - encryption");
|
||||
|
@ -61,8 +61,7 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdStanzaCreate, argList);
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_96}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_96);
|
||||
|
||||
TEST_RESULT_VOID(cmdStanzaCreate(), "stanza create - one repo, no files exist");
|
||||
TEST_RESULT_LOG("P00 INFO: stanza-create for stanza 'db' on repo1");
|
||||
@ -527,8 +526,7 @@ testRun(void)
|
||||
TEST_TITLE("pgControl and database match");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_92}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_92);
|
||||
|
||||
harnessPqScriptSet((HarnessPq [])
|
||||
{
|
||||
@ -566,9 +564,7 @@ testRun(void)
|
||||
TEST_TITLE("pg_control and version mismatch");
|
||||
|
||||
// Create pg_control with different version
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_91}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_91);
|
||||
|
||||
harnessPqScriptSet((HarnessPq [])
|
||||
{
|
||||
@ -586,8 +582,7 @@ testRun(void)
|
||||
TEST_TITLE("pg_control and path mismatch");
|
||||
|
||||
// Create pg_control
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_92}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_92);
|
||||
|
||||
harnessPqScriptSet((HarnessPq [])
|
||||
{
|
||||
@ -614,14 +609,10 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdStanzaCreate, argList);
|
||||
|
||||
// Create pg_control for primary
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgIdxWrite(1), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_92}));
|
||||
HRN_PG_CONTROL_PUT(storagePgIdxWrite(1), PG_VERSION_92);
|
||||
|
||||
// Create pg_control for standby
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgIdxWrite(0), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL,
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_94}));
|
||||
HRN_PG_CONTROL_PUT(storagePgIdxWrite(0), PG_VERSION_94);
|
||||
|
||||
harnessPqScriptSet((HarnessPq [])
|
||||
{
|
||||
@ -661,8 +652,7 @@ testRun(void)
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
// Create pg_control for the rest of the tests
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_96}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_96);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("stanza-upgrade - info file mismatch: db-id");
|
||||
@ -909,8 +899,7 @@ testRun(void)
|
||||
HRN_CFG_LOAD(cfgCmdStanzaCreate, argList);
|
||||
|
||||
// Create pg_control for stanza-create
|
||||
HRN_STORAGE_PUT(
|
||||
storagePgWrite(), PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL, hrnPgControlToBuffer((PgControl){.version = PG_VERSION_96}));
|
||||
HRN_PG_CONTROL_PUT(storagePgWrite(), PG_VERSION_96);
|
||||
|
||||
TEST_RESULT_VOID(cmdStanzaCreate(), "create a stanza that will not be deleted");
|
||||
TEST_RESULT_LOG("P00 INFO: stanza-create for stanza 'otherstanza' on repo1");
|
||||
|
@ -47,8 +47,6 @@ testRun(void)
|
||||
TEST_RESULT_UINT(pgInterface[0].version, PG_VERSION_MAX, "check max version");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
const String *controlFile = STRDEF(PG_PATH_GLOBAL "/" PG_FILE_PGCONTROL);
|
||||
|
||||
// Create a bogus control file
|
||||
Buffer *result = bufNew(HRN_PG_CONTROL_SIZE);
|
||||
memset(bufPtr(result), 0, bufSize(result));
|
||||
@ -65,9 +63,7 @@ testRun(void)
|
||||
"unexpected control version = 501 and catalog version = 19780101\nHINT: is this version of PostgreSQL supported?");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
storagePutP(
|
||||
storageNewWriteP(storageTest, controlFile),
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_11, .systemId = 0xFACEFACE, .walSegmentSize = 1024 * 1024}));
|
||||
HRN_PG_CONTROL_PUT(storageTest, PG_VERSION_11, .systemId = 0xFACEFACE, .walSegmentSize = 1024 * 1024);
|
||||
|
||||
PgControl info = {0};
|
||||
TEST_ASSIGN(info, pgControlFromFile(storageTest), "get control info v11");
|
||||
@ -76,26 +72,19 @@ testRun(void)
|
||||
TEST_RESULT_UINT(info.catalogVersion, 201809051, " check catalog version");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
storagePutP(
|
||||
storageNewWriteP(storageTest, controlFile),
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_93, .walSegmentSize = 1024 * 1024}));
|
||||
HRN_PG_CONTROL_PUT(storageTest, PG_VERSION_93, .walSegmentSize = 1024 * 1024);
|
||||
|
||||
TEST_ERROR(
|
||||
pgControlFromFile(storageTest), FormatError, "wal segment size is 1048576 but must be 16777216 for PostgreSQL <= 10");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
storagePutP(
|
||||
storageNewWriteP(storageTest, controlFile),
|
||||
hrnPgControlToBuffer((PgControl){.version = PG_VERSION_95, .pageSize = 32 * 1024}));
|
||||
HRN_PG_CONTROL_PUT(storageTest, PG_VERSION_95, .pageSize = 32 * 1024);
|
||||
|
||||
TEST_ERROR(pgControlFromFile(storageTest), FormatError, "page size is 32768 but must be 8192");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------------------
|
||||
storagePutP(
|
||||
storageNewWriteP(storageTest, controlFile),
|
||||
hrnPgControlToBuffer(
|
||||
(PgControl){
|
||||
.version = PG_VERSION_83, .systemId = 0xEFEFEFEFEF, .catalogVersion = hrnPgCatalogVersion(PG_VERSION_83)}));
|
||||
HRN_PG_CONTROL_PUT(
|
||||
storageTest, PG_VERSION_83, .systemId = 0xEFEFEFEFEF, .catalogVersion = hrnPgCatalogVersion(PG_VERSION_83));
|
||||
|
||||
TEST_ASSIGN(info, pgControlFromFile(storageTest), "get control info v83");
|
||||
TEST_RESULT_UINT(info.systemId, 0xEFEFEFEFEF, " check system id");
|
||||
|
Loading…
Reference in New Issue
Block a user