From be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 04:57:58 +0200 Subject: Adding upstream version 1.44.3. Signed-off-by: Daniel Baumann --- .../libh2o/misc/p5-Server-Starter/t/07-envdir.t | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 web/server/h2o/libh2o/misc/p5-Server-Starter/t/07-envdir.t (limited to 'web/server/h2o/libh2o/misc/p5-Server-Starter/t/07-envdir.t') diff --git a/web/server/h2o/libh2o/misc/p5-Server-Starter/t/07-envdir.t b/web/server/h2o/libh2o/misc/p5-Server-Starter/t/07-envdir.t new file mode 100644 index 00000000..f10fbade --- /dev/null +++ b/web/server/h2o/libh2o/misc/p5-Server-Starter/t/07-envdir.t @@ -0,0 +1,77 @@ +use strict; +use warnings; + +use File::Temp (); +use Test::TCP; +use Test::More tests => 4; + +use Server::Starter qw(start_server); + +$SIG{PIPE} = sub {}; + +my $tempdir = File::Temp::tempdir(CLEANUP => 1); + +# Prepare envdir +mkdir "$tempdir/env" or die $!; +open my $envfh, ">", "$tempdir/env/FOO" or die $!; +print $envfh "foo-value1"; +close $envfh; +undef $envfh; +sleep 1; + +test_tcp( + server => sub { + my $port = shift; + start_server( + port => $port, + exec => [ + $^X, qw(t/07-envdir-print.pl), + ], + status_file => "$tempdir/status", + envdir => "$tempdir/env", + ); + }, + client => sub { + my ($port, $server_pid) = @_; + #sleep 1; + my $fetch_env = sub { + my $sock = IO::Socket::INET->new( + PeerAddr => "127.0.0.1:$port", + Proto => 'tcp', + ) or die $!; + my $buf; + $sock->sysread($buf, 1048576) + or die $!; + undef $sock; + $buf; + }; + my $restart = sub { + sleep 1; + kill "HUP", $server_pid; + sleep 2; + }; + # Initial worker does not read envdir + my $buf = $fetch_env->(); + ok($buf !~ qr/^FOO=foo-value1$/m, 'changed env'); + # rewrite envdir + open my $envfh, ">", "$tempdir/env/FOO" or die $!; + print $envfh "foo-value2"; + close $envfh; + undef $envfh; + # switch to next gen + $restart->(); + # new worker reads the rewritten envdir + $buf = $fetch_env->(); + ok($buf =~ /^FOO=foo-value2$/m, 'changed env'); + # remove the env file and check that the removal gets reflected + unlink "$tempdir/env/FOO" + or die $!; + # switch to next gen + $restart->(); + # new worker reads the rewritten envdir + $buf = $fetch_env->(); + ok($buf !~ /^FOO=foo-value2$/m, 'removed env'); + }, +); + +ok ! -e "$tempdir/status", 'no more status file'; -- cgit v1.2.3