diff --git a/doc/xml/release.xml b/doc/xml/release.xml index f552fb5b5..ccbbf3e30 100644 --- a/doc/xml/release.xml +++ b/doc/xml/release.xml @@ -129,6 +129,10 @@

Automate generation of WAL and pg_control test files. The existing static files would not work with 32-bit or big-endian systems so create functions to generate these files dynamically rather than creating a bunch of new static files.

+ + +

Automated tests for 32-bit i386/i686 architecture.

+
diff --git a/test/lib/pgBackRestTest/Common/CiTest.pm b/test/lib/pgBackRestTest/Common/CiTest.pm index 45d4c1de5..b6b916a09 100644 --- a/test/lib/pgBackRestTest/Common/CiTest.pm +++ b/test/lib/pgBackRestTest/Common/CiTest.pm @@ -113,7 +113,7 @@ sub process " aws configure list\n" . " - |\n" . " # Install Devel::Cover\n" . - " sudo dpkg -i \${TRAVIS_BUILD_DIR?}/test/package/u14-" . LIB_COVER_PACKAGE . "\n" . + " sudo dpkg -i \${TRAVIS_BUILD_DIR?}/test/package/u14-" . packageDevelCover(VM_ARCH_AMD64) . "\n" . ' ' . LIB_COVER_EXE . " -v\n" . "\n" . "install:\n" . diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index 439f6ff3b..39adc2e14 100755 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -50,8 +50,6 @@ use constant BACKREST_USER_ID => getpwnam( #################################################################################################################################### use constant LIB_COVER_VERSION => '1.23-2'; push @EXPORT, qw(LIB_COVER_VERSION); -use constant LIB_COVER_PACKAGE => 'libdevel-cover-perl_' . LIB_COVER_VERSION . '_amd64.deb'; - push @EXPORT, qw(LIB_COVER_PACKAGE); use constant LIB_COVER_EXE => '/usr/bin/cover'; push @EXPORT, qw(LIB_COVER_EXE); @@ -71,6 +69,18 @@ use constant CERT_FAKE_SERVER_KEY => CERT_FAKE #################################################################################################################################### use constant CONTAINER_DEBUG => false; +#################################################################################################################################### +# Generate Devel::Cover package name +#################################################################################################################################### +sub packageDevelCover +{ + my $strArch = shift; + + return 'libdevel-cover-perl_' . LIB_COVER_VERSION . "_${strArch}.deb"; +} + +push @EXPORT, qw(packageDevelCover); + #################################################################################################################################### # Container repo - defines the Docker repository where the containers will be located #################################################################################################################################### @@ -538,7 +548,7 @@ sub containerBuild $strImage = "${strOS}-build"; $strCopy = undef; - my $strPkgDevelCover = LIB_COVER_PACKAGE; + my $strPkgDevelCover = packageDevelCover($oVm->{$strOS}{&VM_ARCH}); my $bPkgDevelCoverBuild = vmCoverage($strOS) && !$oStorageDocker->exists("test/package/${strOS}-${strPkgDevelCover}"); # Install Perl packages diff --git a/test/lib/pgBackRestTest/Common/RunTest.pm b/test/lib/pgBackRestTest/Common/RunTest.pm index d3bcdc32d..ad06a9611 100644 --- a/test/lib/pgBackRestTest/Common/RunTest.pm +++ b/test/lib/pgBackRestTest/Common/RunTest.pm @@ -590,6 +590,7 @@ push(@EXPORT, qw(storageTest)); #################################################################################################################################### # Getters #################################################################################################################################### +sub archBits {return vmArchBits(shift->{strVm})} sub backrestExe {return shift->{strBackRestExe}} sub backrestExeOriginal {return shift->{strBackRestExeOriginal}} sub backrestUser {return shift->{strBackRestUser}} diff --git a/test/lib/pgBackRestTest/Common/VmTest.pm b/test/lib/pgBackRestTest/Common/VmTest.pm index 4b91bc06d..36e54c92d 100644 --- a/test/lib/pgBackRestTest/Common/VmTest.pm +++ b/test/lib/pgBackRestTest/Common/VmTest.pm @@ -19,6 +19,8 @@ use pgBackRest::DbVersion; #################################################################################################################################### # VM hash keywords #################################################################################################################################### +use constant VM_ARCH => 'arch'; + push @EXPORT, qw(VM_ARCH); use constant VM_DB => 'db'; push @EXPORT, qw(VM_DB); use constant VM_DB_TEST => 'db-test'; @@ -58,6 +60,14 @@ use constant VM_OS_DEBIAN => 'debian'; use constant VM_OS_UBUNTU => 'ubuntu'; push @EXPORT, qw(VM_OS_DEBIAN); +#################################################################################################################################### +# Valid architecture list +#################################################################################################################################### +use constant VM_ARCH_I386 => 'i386'; + push @EXPORT, qw(VM_ARCH_I386); +use constant VM_ARCH_AMD64 => 'amd64'; + push @EXPORT, qw(VM_ARCH_AMD64); + #################################################################################################################################### # Valid VM list #################################################################################################################################### @@ -102,6 +112,7 @@ my $oyVm = &VM_OS_BASE => VM_OS_BASE_RHEL, &VM_OS => VM_OS_CENTOS, &VM_IMAGE => 'centos:6', + &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/pgsql-{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib64/perl5', @@ -127,6 +138,7 @@ my $oyVm = &VM_OS_BASE => VM_OS_BASE_RHEL, &VM_OS => VM_OS_CENTOS, &VM_IMAGE => 'centos:7', + &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/pgsql-{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib64/perl5', @@ -143,6 +155,7 @@ my $oyVm = &VM_OS => VM_OS_DEBIAN, &VM_OS_REPO => 'jessie', &VM_IMAGE => 'debian:8', + &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/x86_64-linux-gnu/perl/5.20.2', @@ -159,8 +172,9 @@ my $oyVm = &VM_OS => VM_OS_DEBIAN, &VM_OS_REPO => 'stretch', &VM_IMAGE => 'debian:9', + &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', - &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/x86_64-linux-gnu/perl/5.24.1', + &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/i386-linux-gnu/perl/5.24.1', &VM_DB => [ @@ -174,7 +188,8 @@ my $oyVm = &VM_OS_BASE => VM_OS_BASE_DEBIAN, &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'precise', - &VM_IMAGE => 'ubuntu:12.04', + &VM_IMAGE => 'i386/ubuntu:12.04', + &VM_ARCH => VM_ARCH_I386, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/perl/5.14.2', @@ -194,6 +209,7 @@ my $oyVm = &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'trusty', &VM_IMAGE => 'ubuntu:14.04', + &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/perl/5.18.2', @@ -210,6 +226,7 @@ my $oyVm = &VM_OS => VM_OS_UBUNTU, &VM_OS_REPO => 'xenial', &VM_IMAGE => 'ubuntu:16.04', + &VM_ARCH => VM_ARCH_AMD64, &VMDEF_PGSQL_BIN => '/usr/lib/postgresql/{[version]}/bin', &VMDEF_PERL_ARCH_PATH => '/usr/local/lib/x86_64-linux-gnu/perl/5.22.1', @@ -316,4 +333,16 @@ sub vmCoverage push @EXPORT, qw(vmCoverage); +#################################################################################################################################### +# Get vm architecture bits +#################################################################################################################################### +sub vmArchBits +{ + my $strVm = shift; + + return ($oyVm->{$strVm}{&VM_ARCH} eq VM_ARCH_AMD64 ? 64 : 32); +} + +push @EXPORT, qw(vmArchBits); + 1; diff --git a/test/lib/pgBackRestTest/Env/HostEnvTest.pm b/test/lib/pgBackRestTest/Env/HostEnvTest.pm index 9a0be3738..a3309e710 100644 --- a/test/lib/pgBackRestTest/Env/HostEnvTest.pm +++ b/test/lib/pgBackRestTest/Env/HostEnvTest.pm @@ -405,7 +405,7 @@ sub walGenerateContent $tWalContent .= pack('S', 2); # Add junk (H for header) for the bytes that won't be read by the tests - my $iOffset = 12 + ($strPgVersion >= PG_VERSION_93 ? 8 : 0); + my $iOffset = 12 + ($strPgVersion >= PG_VERSION_93 ? testRunGet()->archBits() / 8 : 0); $tWalContent .= ('H' x $iOffset); # Add the system identifier