From 1abec0da61a46fa5a4a881c29a2e95a51e9013fa Mon Sep 17 00:00:00 2001 From: Mike Rylander Date: Wed, 1 Nov 2017 11:11:08 -0400 Subject: [PATCH] LP#1729610: Add a service useful for testing behavior in slow response conditions This service, opensrf.slooooooow, offers a opensrf.slooooooow.wait method that waits for the number of seconds specified in its sole parameter. Signed-off-by: Mike Rylander Signed-off-by: Galen Charlton Signed-off-by: Bill Erickson Signed-off-by: Mike Rylander --- examples/opensrf.xml.example | 19 ++++++++ .../lib/OpenSRF/Application/Slooooooow.pm | 48 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/perl/lib/OpenSRF/Application/Slooooooow.pm diff --git a/examples/opensrf.xml.example b/examples/opensrf.xml.example index 7e1dccb..2e52c7a 100644 --- a/examples/opensrf.xml.example +++ b/examples/opensrf.xml.example @@ -183,6 +183,24 @@ vim:et:ts=2:sw=2: + + 1 + 1 + perl + OpenSRF::Application::Slooooooow + 100 + + opensrf.slooooooow_unix.sock + opensrf.slooooooow_unix.pid + 1000 + opensrf.slooooooow_unix.log + 2 + 5 + 1 + 2 + + + 1 1 @@ -242,6 +260,7 @@ vim:et:ts=2:sw=2: opensrf.math opensrf.dbmath opensrf.validator + opensrf.slooooooow diff --git a/src/perl/lib/OpenSRF/Application/Slooooooow.pm b/src/perl/lib/OpenSRF/Application/Slooooooow.pm new file mode 100644 index 0000000..bf218ce --- /dev/null +++ b/src/perl/lib/OpenSRF/Application/Slooooooow.pm @@ -0,0 +1,48 @@ +package OpenSRF::Application::Slooooooow; +use base qw/OpenSRF::Application/; +use OpenSRF::Application; + +use OpenSRF::Utils::SettingsClient; +use OpenSRF::EX qw/:try/; +use OpenSRF::Utils qw/:common/; +use OpenSRF::Utils::Logger; + +my $log; + +sub initialize { + $log = 'OpenSRF::Utils::Logger'; +} + +sub child_init {} + +sub wait_for_it { + my $self = shift; + my $client = shift; + my $pause = shift; + + $pause =~ s/\D//g if (defined $pause); + $pause //= 1; + + $log->info("Holding for $pause seconds..."); + sleep($pause); + $log->info("Done waiting, time to return."); + return [$pause, @_] +} +__PACKAGE__->register_method( + api_name => 'opensrf.slooooooow.wait', + method => 'wait_for_it', + argc => 1, + signature => { + params => [ + {name => "pause", type => "number", desc => "Seconds to sleep, can be fractional"}, + {name => "extra", type => "string", desc => "Extra optional parameter used to inflate the payload size"} + ], + return => { + desc => "Array of passed parameters", + type => "array" + } + } + +); + +1; -- 2.43.2