You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-06-18 23:57:33 +02:00
Configuration rules are now pulled from the C library when present.
This commit is contained in:
@ -27,78 +27,86 @@ sub run
|
||||
|
||||
my $oConfig = {};
|
||||
my $strConfigFile = $self->testPath() . '/pgbackrest.conf';
|
||||
optionSet(OPTION_CONFIG, $strConfigFile, true);
|
||||
commandSet(CMD_ARCHIVE_GET);
|
||||
cfgCommandSet(CFGCMD_ARCHIVE_GET);
|
||||
cfgOptionSet(CFGOPT_CONFIG, $strConfigFile, true);
|
||||
|
||||
if ($self->begin('Config::configFileValidate()'))
|
||||
{
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&OPTION_DB_PORT} = 1234;
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_DB_PORT)} = 1234;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false,
|
||||
'valid option ' . OPTION_DB_PORT . ' under invalid section',
|
||||
$self->testResult(sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, false,
|
||||
'valid option ' . cfgOptionName(CFGOPT_DB_PORT) . ' under invalid section',
|
||||
{strLogExpect =>
|
||||
"WARN: $strConfigFile valid option '" . OPTION_DB_PORT . "' is a stanza section option and is not valid in" .
|
||||
" section " . CONFIG_SECTION_GLOBAL . "\nHINT: global options can be specified in global or stanza sections but" .
|
||||
" not visa-versa"});
|
||||
"WARN: $strConfigFile valid option '" . cfgOptionName(CFGOPT_DB_PORT) . "' is a stanza section option and is not" .
|
||||
" valid in section " . CFGDEF_SECTION_GLOBAL . "\n" .
|
||||
"HINT: global options can be specified in global or stanza sections but not visa-versa"});
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL . ':' . &CMD_BACKUP}{&OPTION_DB_PORT} = 1234;
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_BACKUP)}{cfgOptionName(CFGOPT_DB_PORT)} = 1234;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false,
|
||||
'valid option ' . OPTION_DB_PORT . ' for command ' . CMD_BACKUP . ' under invalid global section',
|
||||
$self->testResult(sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, false,
|
||||
'valid option ' . cfgOptionName(CFGOPT_DB_PORT) . ' for command ' . cfgCommandName(CFGCMD_BACKUP) .
|
||||
' under invalid global section',
|
||||
{strLogExpect =>
|
||||
"WARN: $strConfigFile valid option '" . OPTION_DB_PORT . "' is a stanza section option and is not valid in" .
|
||||
" section " . CONFIG_SECTION_GLOBAL ."\nHINT: global options can be specified in global or stanza sections but" .
|
||||
" not visa-versa"});
|
||||
"WARN: $strConfigFile valid option '" . cfgOptionName(CFGOPT_DB_PORT) . "' is a stanza section option and is not" .
|
||||
" valid in section " . CFGDEF_SECTION_GLOBAL . "\n" .
|
||||
"HINT: global options can be specified in global or stanza sections but not visa-versa"});
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{$self->stanza() . ':' . &CMD_ARCHIVE_PUSH}{&OPTION_DB_PORT} = 1234;
|
||||
$$oConfig{$self->stanza() . ':' . cfgCommandName(CFGCMD_ARCHIVE_PUSH)}{cfgOptionName(CFGOPT_DB_PORT)} = 1234;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false,
|
||||
'valid option ' . OPTION_DB_PORT . ' under invalid stanza section command',
|
||||
$self->testResult(sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, false,
|
||||
'valid option ' . cfgOptionName(CFGOPT_DB_PORT) . ' under invalid stanza section command',
|
||||
{strLogExpect =>
|
||||
"WARN: $strConfigFile valid option '" . OPTION_DB_PORT . "' is not valid for command '" . CMD_ARCHIVE_PUSH ."'"});
|
||||
"WARN: $strConfigFile valid option '" . cfgOptionName(CFGOPT_DB_PORT) . "' is not valid for command '" .
|
||||
cfgCommandName(CFGCMD_ARCHIVE_PUSH) ."'"});
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&BOGUS} = BOGUS;
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL}{&BOGUS} = BOGUS;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false, 'invalid option ' . $$oConfig{&CONFIG_SECTION_GLOBAL}{&BOGUS},
|
||||
$self->testResult(
|
||||
sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, false,
|
||||
'invalid option ' . $$oConfig{&CFGDEF_SECTION_GLOBAL}{&BOGUS},
|
||||
{strLogExpect => "WARN: $strConfigFile file contains invalid option '" . BOGUS . "'"});
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{'thread-max'} = 3;
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL}{'thread-max'} = 3;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'valid alt name found');
|
||||
$self->testResult(sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, true, 'valid alt name found');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&OPTION_LOG_LEVEL_STDERR} = OPTION_DEFAULT_LOG_LEVEL_STDERR;
|
||||
$$oConfig{$self->stanza()}{&OPTION_DB_PATH} = '/db';
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL . ':' . &CMD_ARCHIVE_PUSH}{&OPTION_PROCESS_MAX} = 2;
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_LEVEL_STDERR)} =
|
||||
cfgRuleOptionDefault(CFGCMD_ARCHIVE_PUSH, CFGOPT_LOG_LEVEL_STDERR);
|
||||
$$oConfig{$self->stanza()}{cfgOptionName(CFGOPT_DB_PATH)} = '/db';
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_ARCHIVE_PUSH)}{cfgOptionName(CFGOPT_PROCESS_MAX)} = 2;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'valid config file');
|
||||
$self->testResult(sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, true, 'valid config file');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&OPTION_LOG_LEVEL_STDERR} = OPTION_DEFAULT_LOG_LEVEL_STDERR;
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL . ':' . &CMD_ARCHIVE_PUSH}{&OPTION_PROCESS_MAX} = 2;
|
||||
$$oConfig{'unusual-section^name!:' . &CMD_CHECK}{&OPTION_DB_PATH} = '/db';
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_LOG_LEVEL_STDERR)} =
|
||||
cfgRuleOptionDefault(CFGCMD_ARCHIVE_PUSH, CFGOPT_LOG_LEVEL_STDERR);
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL . ':' . cfgCommandName(CFGCMD_ARCHIVE_PUSH)}{cfgOptionName(CFGOPT_PROCESS_MAX)} = 2;
|
||||
$$oConfig{'unusual-section^name!:' . cfgCommandName(CFGCMD_CHECK)}{cfgOptionName(CFGOPT_DB_PATH)} = '/db';
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'valid unusual section name');
|
||||
$self->testResult(sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, true, 'valid unusual section name');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&BOGUS} = BOGUS;
|
||||
$$oConfig{&CFGDEF_SECTION_GLOBAL}{&BOGUS} = BOGUS;
|
||||
|
||||
# Change command to indicate remote
|
||||
commandSet(CMD_REMOTE);
|
||||
cfgCommandSet(CFGCMD_REMOTE);
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'invalid option but config file not validated on remote');
|
||||
$self->testResult(
|
||||
sub {pgBackRest::Config::Config::configFileValidate($oConfig)}, true,
|
||||
'invalid option but config file not validated on remote');
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user