diff --git a/.travis.yml b/.travis.yml index 050252c2b..2674d528c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ env: - PGB_CI="--vm=co6 test" - PGB_CI="--vm=u16 test" - PGB_CI="--vm=co7 test" - - PGB_CI="--vm=u14 test" + - PGB_CI="--vm=u12 test" - PGB_CI="doc" before_install: diff --git a/README.md b/README.md index a4eda3254..f2ee33657 100644 --- a/README.md +++ b/README.md @@ -76,9 +76,9 @@ File and directory links are supported for any file or directory in the PostgreS pgBackRest repositories can be stored on Amazon S3 to allow for virtually unlimited capacity and retention. -### Compatibility with PostgreSQL >= 8.4 +### Compatibility with PostgreSQL >= 8.3 -pgBackRest includes support for versions down to 8.4, since older versions of PostgreSQL are still regularly utilized. +pgBackRest includes support for versions down to 8.3, since older versions of PostgreSQL are still regularly utilized. ## Getting Started diff --git a/doc/xml/index.xml b/doc/xml/index.xml index f8fa685a4..3c6c8aef7 100644 --- a/doc/xml/index.xml +++ b/doc/xml/index.xml @@ -131,9 +131,9 @@
- Compatibility with <postgres/> >= 8.4 + Compatibility with <postgres/> >= 8.3 -

includes support for versions down to 8.4, since older versions of PostgreSQL are still regularly utilized.

+

includes support for versions down to 8.3, since older versions of PostgreSQL are still regularly utilized.

diff --git a/doc/xml/release.xml b/doc/xml/release.xml index 1aab59d5b..71adc3e83 100644 --- a/doc/xml/release.xml +++ b/doc/xml/release.xml @@ -165,8 +165,6 @@ -

IMPORTANT NOTE: Support for 8.3 has been removed in this release as no currently supported systems include it.

- @@ -204,10 +202,6 @@

Rename Archive modules to remove redundancy.

- -

Remove support for 8.3.

-
-

Improve S3 error reporting.

@@ -279,11 +273,7 @@ -

Deprecate Ubuntu 12.04 now that it is EOL.

-
- - -

Remove Debian 8 from CI because it does not provide additional coverage over Ubuntu 14.04 and Ubuntu 16.04.

+

Remove Debian 8 from CI because it does not provide additional coverage over Ubuntu 12.04, 14.04, 16.04.

diff --git a/lib/pgBackRest/Archive/Common.pm b/lib/pgBackRest/Archive/Common.pm index 8f1a56d56..181eefe85 100644 --- a/lib/pgBackRest/Archive/Common.pm +++ b/lib/pgBackRest/Archive/Common.pm @@ -48,6 +48,7 @@ use constant PG_WAL_SEGMENT_SIZE => 16777216; #################################################################################################################################### my $oWalMagicHash = { + hex('0xD062') => PG_VERSION_83, hex('0xD063') => PG_VERSION_84, hex('0xD064') => PG_VERSION_90, hex('0xD066') => PG_VERSION_91, diff --git a/lib/pgBackRest/Db.pm b/lib/pgBackRest/Db.pm index 4271dd75c..d7fedf0fe 100644 --- a/lib/pgBackRest/Db.pm +++ b/lib/pgBackRest/Db.pm @@ -41,6 +41,7 @@ use constant DB_BACKUP_ADVISORY_LOCK => '12340078 my $oPgControlVersionHash = { # iControlVersion => {iCatalogVersion => strDbVersion} + 833 => {200711281 => PG_VERSION_83}, 843 => {200904091 => PG_VERSION_84}, 903 => { diff --git a/lib/pgBackRest/DbVersion.pm b/lib/pgBackRest/DbVersion.pm index ed58dbf00..23620c5bf 100644 --- a/lib/pgBackRest/DbVersion.pm +++ b/lib/pgBackRest/DbVersion.pm @@ -27,6 +27,8 @@ use constant PG_WAL_SIZE => 16777216; #################################################################################################################################### # PostgreSQL version numbers #################################################################################################################################### +use constant PG_VERSION_83 => '8.3'; + push @EXPORT, qw(PG_VERSION_83); use constant PG_VERSION_84 => '8.4'; push @EXPORT, qw(PG_VERSION_84); use constant PG_VERSION_90 => '9.0'; @@ -61,8 +63,8 @@ sub versionSupport # Assign function parameters, defaults, and log debug info my ($strOperation) = logDebugParam(__PACKAGE__ . '->versionSupport'); - my @strySupportVersion = ( - PG_VERSION_84, PG_VERSION_90, PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, PG_VERSION_94, PG_VERSION_95, PG_VERSION_96); + my @strySupportVersion = (PG_VERSION_83, PG_VERSION_84, PG_VERSION_90, PG_VERSION_91, PG_VERSION_92, PG_VERSION_93, + PG_VERSION_94, PG_VERSION_95, PG_VERSION_96); # Return from function and log return values if any return logDebugReturn diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index e05ad4852..c82901f44 100755 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -481,7 +481,7 @@ sub containerBuild } #--------------------------------------------------------------------------------------------------------------------------- - if (!$bDeprecated && $strOS ne VM_CO6) + if (!$bDeprecated && $strOS ne VM_CO6 && $strOS ne VM_U12) { $strScript .= s3ServerSetup($strOS); } @@ -566,7 +566,7 @@ sub containerBuild $strImage = "${strOS}-s3-server"; $strCopy = undef; - if ($strOS ne VM_CO6) + if ($strOS ne VM_CO6 && $strOS ne VM_U12) { $strImageParent = containerRepo() . ":${strOS}-base"; $strScript = ''; diff --git a/test/lib/pgBackRestTest/Common/VmTest.pm b/test/lib/pgBackRestTest/Common/VmTest.pm index 4a9946f58..f1d587f81 100644 --- a/test/lib/pgBackRestTest/Common/VmTest.pm +++ b/test/lib/pgBackRestTest/Common/VmTest.pm @@ -82,7 +82,7 @@ use constant VM_HOST_DEFAULT => VM_U16; push @EXPORT, qw(VM_HOST_DEFAULT); # Lists valid VMs -use constant VM_LIST => (VM_CO6, VM_U16, VM_CO7, VM_U14); +use constant VM_LIST => (VM_CO6, VM_U16, VM_CO7, VM_U12); push @EXPORT, qw(VM_LIST); my $oyVm = @@ -138,16 +138,22 @@ my $oyVm = &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/x86_64-linux-gnu/perl/5.20.2', }, - # Ubuntu 12.04 (DEPRECATED) + # Ubuntu 12.04 &VM_U12 => { - &VM_DEPRECATED => true, &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'precise', &VM_IMAGE => 'ubuntu:12.04', &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/perl/5.14.2', + + &VM_DB => + [ + PG_VERSION_83, + PG_VERSION_84, + PG_VERSION_92, + ], }, # Ubuntu 14.04 @@ -162,7 +168,6 @@ my $oyVm = &VM_DB => [ - PG_VERSION_84, PG_VERSION_94, ], }, @@ -179,8 +184,8 @@ my $oyVm = &VM_DB => [ - PG_VERSION_92, PG_VERSION_93, + PG_VERSION_94, ], }, }; diff --git a/test/lib/pgBackRestTest/Module/Storage/StorageS3CertTest.pm b/test/lib/pgBackRestTest/Module/Storage/StorageS3CertTest.pm index e854af4e6..025b08c83 100644 --- a/test/lib/pgBackRestTest/Module/Storage/StorageS3CertTest.pm +++ b/test/lib/pgBackRestTest/Module/Storage/StorageS3CertTest.pm @@ -51,52 +51,59 @@ sub run ################################################################################################################################ if ($self->begin('validation')) { - #--------------------------------------------------------------------------------------------------------------------------- - if ($self->vm() eq VM_CO7) + if ($self->vm eq VM_U12) { - # Tests fails on co7 because by default certs cannot be located. This logic may need to be changed in the future if - # this bug gets fixed by Red Hat. - $self->testResult(sub {$self->configLoadExpect(dclone($oOptionGlobal), CMD_ARCHIVE_PUSH)}, '', 'config load'); + &log(INFO, 'cannot test - certificates are no longer maintained for ' . $self->vm()); + } + else + { + #----------------------------------------------------------------------------------------------------------------------- + if ($self->vm() eq VM_CO7) + { + # Tests fails on co7 because by default certs cannot be located. This logic may need to be changed in the future if + # this bug gets fixed by Red Hat. + $self->testResult(sub {$self->configLoadExpect(dclone($oOptionGlobal), CMD_ARCHIVE_PUSH)}, '', 'config load'); - $self->testException( - sub {storageRepo({strStanza => 'test1'})->list('/')}, ERROR_HOST_CONNECT, - 'IO::Socket::IP configuration failed SSL connect attempt failed.*certificate verify failed', - 'cert verify fails on ' . VM_CO7); + $self->testException( + sub {storageRepo({strStanza => 'test1'})->list('/')}, ERROR_HOST_CONNECT, + 'IO::Socket::IP configuration failed SSL connect attempt failed.*certificate verify failed', + 'cert verify fails on ' . VM_CO7); - # It should work when verification is disabled + # It should work when verification is disabled + my $oOptionLocal = dclone($oOptionGlobal); + $self->optionBoolSetTest($oOptionLocal, OPTION_REPO_S3_VERIFY_SSL, false); + $self->testResult(sub {$self->configLoadExpect($oOptionLocal, CMD_ARCHIVE_PUSH)}, '', 'config load'); + + $self->testException( + sub {storageRepo({strStanza => 'test2'})->list('/')}, ERROR_PROTOCOL, 'S3 request error \[403\] Forbidden.*', + 'connection succeeds with verification disabled, (expected) error on invalid access key'); + } + + #----------------------------------------------------------------------------------------------------------------------- my $oOptionLocal = dclone($oOptionGlobal); - $self->optionBoolSetTest($oOptionLocal, OPTION_REPO_S3_VERIFY_SSL, false); + + # CO7 doesn't locate certs automatically so specify the path + if ($self->vm() eq VM_CO7) + { + $self->optionSetTest($oOptionLocal, OPTION_REPO_S3_CA_FILE, '/etc/pki/tls/certs/ca-bundle.crt'); + } + $self->testResult(sub {$self->configLoadExpect($oOptionLocal, CMD_ARCHIVE_PUSH)}, '', 'config load'); $self->testException( - sub {storageRepo({strStanza => 'test2'})->list('/')}, ERROR_PROTOCOL, 'S3 request error \[403\] Forbidden.*', - 'connection succeeds with verification disabled, (expected) error on invalid access key'); + sub {storageRepo({strStanza => 'test3'})->list('/')}, ERROR_PROTOCOL, 'S3 request error \[403\] Forbidden.*', + 'connection succeeds, (expected) error on invalid access key'); + + #----------------------------------------------------------------------------------------------------------------------- + $oOptionLocal = dclone($oOptionGlobal); + $self->optionSetTest($oOptionLocal, OPTION_REPO_S3_CA_PATH, '/bogus'); + $self->testResult(sub {$self->configLoadExpect($oOptionLocal, CMD_ARCHIVE_PUSH)}, '', 'config load'); + + $self->testException( + sub {storageRepo({strStanza => 'test4'})->list('/')}, ERROR_HOST_CONNECT, + $self->vm() eq VM_CO6 ? 'IO::Socket::INET configuration failed' : 'SSL_ca_path /bogus does not exist', + 'invalid ca path'); } - - #--------------------------------------------------------------------------------------------------------------------------- - my $oOptionLocal = dclone($oOptionGlobal); - - # CO7 doesn't locate certs automatically so specify the path - if ($self->vm() eq VM_CO7) - { - $self->optionSetTest($oOptionLocal, OPTION_REPO_S3_CA_FILE, '/etc/pki/tls/certs/ca-bundle.crt'); - } - - $self->testResult(sub {$self->configLoadExpect($oOptionLocal, CMD_ARCHIVE_PUSH)}, '', 'config load'); - - $self->testException( - sub {storageRepo({strStanza => 'test3'})->list('/')}, ERROR_PROTOCOL, 'S3 request error \[403\] Forbidden.*', - 'connection succeeds, (expected) error on invalid access key'); - - #--------------------------------------------------------------------------------------------------------------------------- - $oOptionLocal = dclone($oOptionGlobal); - $self->optionSetTest($oOptionLocal, OPTION_REPO_S3_CA_PATH, '/bogus'); - $self->testResult(sub {$self->configLoadExpect($oOptionLocal, CMD_ARCHIVE_PUSH)}, '', 'config load'); - - $self->testException( - sub {storageRepo({strStanza => 'test4'})->list('/')}, ERROR_HOST_CONNECT, - $self->vm() eq VM_CO6 ? 'IO::Socket::INET configuration failed' : 'SSL_ca_path /bogus does not exist', - 'invalid ca path'); } } diff --git a/test/package/u12-libdevel-cover-perl_1.23-2_amd64.deb b/test/package/u12-libdevel-cover-perl_1.23-2_amd64.deb new file mode 100644 index 000000000..f0aca7b1c Binary files /dev/null and b/test/package/u12-libdevel-cover-perl_1.23-2_amd64.deb differ