annotate sub_filter_merge.t @ 1752:ba6e24e38f03

Tests: improved stop_daemons() to send signal again. As was observed, it's possible that a signal to complete a uwsgi daemon can be ignored while it is starting up, which results in tests hang due to eternal waiting on child processes termination. Notably, it is seen when running tests with a high number of prove jobs on a low-profile VM against nginx with broken modules and/or configuration. To reproduce: $ TEST_NGINX_GLOBALS=ERROR prove -j16 uwsgi*.t Inspecting uwsgi under ktrace on FreeBSD confirms that a SIGTERM signal is ignored at the very beginning of uwsgi startup. It is then replaced with a default action after listen(), thus waiting until uwsgi is ready to accept new TCP connections doesn't completely solve the hang window. The fix is to retry sending a signal some time after waitpid(WNOHANG) continuously demonstrated no progress with reaping a signaled process. It is modelled after f13ead27f89c that improved stop() for nginx.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 29 Dec 2021 22:29:23 +0300
parents 196d33c2bb45
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
703
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Test for sub_filter inheritance from http context.
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http sub/);
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 $t->plan(1)->write_file_expand('nginx.conf', <<'EOF');
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 http {
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 sub_filter foo bar;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
42 listen 127.0.0.1:8080;
703
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server_name localhost;
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 location / { }
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 }
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 }
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 EOF
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 $t->write_file('foo.html', 'foo');
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 $t->run();
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 ###############################################################################
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 like(http_get('/foo.html'), qr/bar/, 'sub_filter inheritance');
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
62dad59cfb67 Tests: sub_filter inheritance test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 ###############################################################################