1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00

Add performance module and basic performance test for archive-push.

This commit is contained in:
David Steele 2017-06-27 18:00:39 -04:00
parent 9e248a6627
commit 9e9286ee20
3 changed files with 91 additions and 0 deletions

View File

@ -301,6 +301,10 @@
<release-item>
<p>Automatically check that all supported <postgres/> versions are being tested on a single default VM.</p>
</release-item>
<release-item>
<p>Add <id>performance</id> module and basic performance test for <cmd>archive-push</cmd>.</p>
</release-item>
</release-refactor-list>
</release-test-list>
</release>

View File

@ -418,6 +418,18 @@ my $oTestDef =
}
]
},
# Performance tests
{
&TESTDEF_NAME => 'performance',
&TESTDEF_TEST =>
[
{
&TESTDEF_NAME => 'archive',
&TESTDEF_TOTAL => 1,
},
]
},
]
};

View File

@ -0,0 +1,75 @@
####################################################################################################################################
# Archive Performance Tests
####################################################################################################################################
package pgBackRestTest::Module::Performance::PerformanceArchiveTest;
use parent 'pgBackRestTest::Common::RunTest';
####################################################################################################################################
# Perl includes
####################################################################################################################################
use strict;
use warnings FATAL => qw(all);
use Carp qw(confess);
use English '-no_match_vars';
use Storable qw(dclone);
use Time::HiRes qw(gettimeofday);
use pgBackRest::Common::Log;
use pgBackRest::Config::Config;
use pgBackRestTest::Common::ExecuteTest;
use pgBackRestTest::Common::RunTest;
####################################################################################################################################
# initModule
####################################################################################################################################
sub initModule
{
my $self = shift;
$self->{strSpoolPath} = $self->testPath() . '/spool';
}
####################################################################################################################################
# initTest
####################################################################################################################################
sub initTest
{
my $self = shift;
# Create spool path
storageTest()->pathCreate($self->{strSpoolPath}, {bIgnoreExists => true, bCreateParent => true});
}
####################################################################################################################################
# run
####################################################################################################################################
sub run
{
my $self = shift;
################################################################################################################################
if ($self->begin("archive-push async (detect ok file)"))
{
#---------------------------------------------------------------------------------------------------------------------------
storageTest()->put(
storageTest()->openWrite(
'spool/archive/' . $self->stanza() . '/out/000000010000000100000001.ok', {bPathCreate => true}));
my $iRunTotal = 1;
my $lTimeBegin = gettimeofday();
for (my $iIndex = 0; $iIndex < $iRunTotal; $iIndex++)
{
executeTest(
$self->backrestExe() . ' --' . OPTION_STANZA . '=' . $self->stanza() . ' --' . OPTION_ARCHIVE_ASYNC .
' --' . OPTION_SPOOL_PATH . '=' . $self->{strSpoolPath} . ' --' . OPTION_ARCHIVE_TIMEOUT . '=1' .
' archive-push /pg_xlog/000000010000000100000001');
}
&log(INFO, 'time per execution: ' . ((gettimeofday() - $lTimeBegin) / $iRunTotal));
}
}
1;