You are viewing a plain text version of this content. The canonical link for it is here.
Posted to test-dev@httpd.apache.org by Geoffrey Young <ge...@modperlcookbook.org> on 2002/10/28 21:25:58 UTC
testing server restarts?
hi all...
has anyone given any thought to adding an API whereby a test can issue a server
restart? I'd like to be able to do this in order to test code that takes action when the
server is restarted (clearing caches, updating Last-Modified, etc), but I'm sure there
could be other uses if the API gets written in.
I whipped up something quick that sorta works on unix (2.0 seem to be ok on linux, but
1.3 has trouble when request.t immediately follows ping.t - maybe not checking something
right), but if people think it's a good idea then this could serve as a starting point for
something more portable (Win32, etc)...
--Geoff
Index: t/ping.t
===================================================================
RCS file: /home/cvspublic/httpd-test/perl-framework/Apache-Test/t/ping.t,v
retrieving revision 1.2
diff -u -r1.2 ping.t
--- t/ping.t 10 Sep 2001 17:12:37 -0000 1.2
+++ t/ping.t 28 Oct 2002 20:25:17 -0000
@@ -3,7 +3,7 @@
use Apache::Test;
-plan tests => 3;
+plan tests => 4;
my $config = Apache::Test::config();
@@ -14,4 +14,6 @@
ok $server;
ok $server->ping;
+
+ok $server->restart;
Index: lib/Apache/TestServer.pm
===================================================================
RCS file: /home/cvspublic/httpd-test/perl-framework/Apache-Test/lib/Apache/TestServer.pm,v
retrieving revision 1.60
diff -u -r1.60 TestServer.pm
--- lib/Apache/TestServer.pm 1 Jul 2002 08:11:50 -0000 1.60
+++ lib/Apache/TestServer.pm 28 Oct 2002 20:25:17 -0000
@@ -511,6 +511,32 @@
return 0;
}
+sub restart {
+ my $self = shift;
+ my $pid = $self->pid;
+
+ if (Apache::TestConfig::WIN32) {
+ # do something Win32 specific here
+ }
+ else {
+ # unix variant
+ if (kill HUP => $pid) {
+ warning "server $self->{name} restarted";
+ }
+ else {
+ error "kill -HUP $pid failed: $!";
+ $self->failed_msg("failed to restart server!");
+ return 0;
+ }
+ }
+
+ my $timeout = 60; # secs XXX: make a constant?
+
+ return 1 if $self->wait_till_is_up($timeout);
+
+ $self->failed_msg("failed to restart server!");
+ return 0;
+}
# wait till the server is up and return 1
# if the waiting times out returns 0