diff --git a/doc/xml/release.xml b/doc/xml/release.xml index bbcfbb64d..22efecaaa 100644 --- a/doc/xml/release.xml +++ b/doc/xml/release.xml @@ -301,6 +301,10 @@

Automatically check that all supported versions are being tested on a single default VM.

+ + +

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

+
diff --git a/test/lib/pgBackRestTest/Common/DefineTest.pm b/test/lib/pgBackRestTest/Common/DefineTest.pm index 3b8789bc3..7bfb7265c 100644 --- a/test/lib/pgBackRestTest/Common/DefineTest.pm +++ b/test/lib/pgBackRestTest/Common/DefineTest.pm @@ -418,6 +418,18 @@ my $oTestDef = } ] }, + # Performance tests + { + &TESTDEF_NAME => 'performance', + + &TESTDEF_TEST => + [ + { + &TESTDEF_NAME => 'archive', + &TESTDEF_TOTAL => 1, + }, + ] + }, ] }; diff --git a/test/lib/pgBackRestTest/Module/Performance/PerformanceArchiveTest.pm b/test/lib/pgBackRestTest/Module/Performance/PerformanceArchiveTest.pm new file mode 100644 index 000000000..7325c812b --- /dev/null +++ b/test/lib/pgBackRestTest/Module/Performance/PerformanceArchiveTest.pm @@ -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;