mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-14 10:13:05 +02:00
e2ac7e1ea6
This happened if files were removed (e.g. tables dropped) while the manifest was being built. Reported by Navid Golpayegani.
126 lines
4.4 KiB
Perl
126 lines
4.4 KiB
Perl
####################################################################################################################################
|
|
# FileCommonTest.pm - Common code for File tests
|
|
####################################################################################################################################
|
|
package pgBackRestTest::File::FileCommonTest;
|
|
use parent 'pgBackRestTest::Common::RunTest';
|
|
|
|
####################################################################################################################################
|
|
# Perl includes
|
|
####################################################################################################################################
|
|
use strict;
|
|
use warnings FATAL => qw(all);
|
|
use Carp qw(confess);
|
|
use English '-no_match_vars';
|
|
|
|
use pgBackRest::Common::Log;
|
|
use pgBackRest::Config::Config;
|
|
use pgBackRest::FileCommon;
|
|
use pgBackRest::Protocol::Common;
|
|
use pgBackRest::Protocol::RemoteMaster;
|
|
|
|
use pgBackRestTest::Common::Host::HostBackupTest;
|
|
use pgBackRestTest::Common::ExecuteTest;
|
|
|
|
####################################################################################################################################
|
|
# initModule
|
|
#
|
|
# Common objects and variables used by all tests.
|
|
####################################################################################################################################
|
|
sub initModule
|
|
{
|
|
my $self = shift;
|
|
|
|
# Create the repo path so the remote won't complain that it's missing
|
|
my $strRepoPath = $self->testPath() . '/repo';
|
|
|
|
mkdir($strRepoPath, oct('0770'))
|
|
or confess "Unable to create repo directory: ${strRepoPath}";
|
|
|
|
# Create local
|
|
$self->{oLocal} = new pgBackRest::Protocol::Common(
|
|
262144,
|
|
1,
|
|
OPTION_DEFAULT_COMPRESS_LEVEL_NETWORK,
|
|
HOST_PROTOCOL_TIMEOUT);
|
|
|
|
# Create remote
|
|
$self->{oRemote} = new pgBackRest::Protocol::RemoteMaster(
|
|
BACKUP,
|
|
OPTION_DEFAULT_CMD_SSH,
|
|
$self->backrestExeOriginal() . ' --stanza=' . $self->stanza() .
|
|
" --type=backup --repo-path=${strRepoPath} --no-config --command=test remote",
|
|
262144,
|
|
OPTION_DEFAULT_COMPRESS_LEVEL,
|
|
OPTION_DEFAULT_COMPRESS_LEVEL_NETWORK,
|
|
$self->host(),
|
|
$self->backrestUser(),
|
|
HOST_PROTOCOL_TIMEOUT);
|
|
|
|
rmdir($strRepoPath)
|
|
or confess "Unable to remove repo directory: ${strRepoPath}";
|
|
}
|
|
|
|
####################################################################################################################################
|
|
# cleanModule
|
|
#
|
|
# Close objects created for tests.
|
|
####################################################################################################################################
|
|
sub cleanModule
|
|
{
|
|
my $self = shift;
|
|
|
|
$self->remote()->close();
|
|
}
|
|
|
|
####################################################################################################################################
|
|
# setup
|
|
#
|
|
# Setup directories for file tests.
|
|
####################################################################################################################################
|
|
sub setup
|
|
{
|
|
my $self = shift;
|
|
my $bRemote = shift;
|
|
my $bPrivate = shift;
|
|
|
|
# Remove the backrest private directory
|
|
if (fileExists($self->testPath() . '/private'))
|
|
{
|
|
executeTest(
|
|
'ssh ' . $self->backrestUser() . '\@' . $self->host() . ' rm -rf ' . $self->testPath() . '/private',
|
|
{bSuppressStdErr => true});
|
|
}
|
|
|
|
# Remove contents of the test directory
|
|
executeTest('rm -rf ' . $self->testPath() . '/*');
|
|
|
|
# Create the private directories
|
|
if (defined($bPrivate) && $bPrivate)
|
|
{
|
|
executeTest(
|
|
'ssh ' . $self->backrestUser() . '\@' . $self->host() . ' mkdir -m 700 ' . $self->testPath() . '/backrest_private',
|
|
{bSuppressStdErr => true});
|
|
|
|
executeTest('mkdir -m 700 ' . $self->testPath() . '/user_private');
|
|
}
|
|
|
|
# Create the file object
|
|
my $oFile = new pgBackRest::File
|
|
(
|
|
$self->stanza(),
|
|
$self->testPath(),
|
|
$bRemote ? $self->remote() : $self->local()
|
|
);
|
|
|
|
return $oFile;
|
|
}
|
|
|
|
####################################################################################################################################
|
|
# Getters
|
|
####################################################################################################################################
|
|
sub host {return '127.0.0.1'}
|
|
sub local {return shift->{oLocal}}
|
|
sub remote {return shift->{oRemote}}
|
|
|
|
1;
|