1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00
pgbackrest/test/lib/pgBackRestTest/File/FileCommonTest.pm

126 lines
4.4 KiB
Perl
Raw Normal View History

####################################################################################################################################
# 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;