annotate server_tokens.t @ 1236:93f749c1d5c5

Tests: fixed parallel tests execution with UDP. Previously, when checking ports availability, a UDP socket was always created first, then a TCP socket was created. On success, one of UDP and TCP sockets was closed (depending on the "udp" option) and the second one was used to busy this port in other scripts. This lead to the following problem: in an attempt to reopen a UDP socket used in a given testing script it could be stolen by another script as part of checking ports availability. To solve this problem, UDP and TCP ports were split into two non-overlapping ranges: TCP ports are only used in the range 8000-8499, and UDP ports - in the range 8500-8999. In addition, the order of creating sockets in UDP tests has been reversed: now a TCP socket used as a lock precedes a UDP socket.
author Andrey Zelenkov <zelenkov@nginx.com>
date Thu, 26 Oct 2017 18:00:21 +0300
parents d737d6606504
children 766bcbb632ee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for server_tokens directive.
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use lib 'lib';
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
19
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20 ###############################################################################
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24
1121
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http rewrite/)
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30 daemon off;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32 events {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35 http {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
39 listen 127.0.0.1:8080;
881
56ed4be9ff41 Tests: added server_name and fixed indentation in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 878
diff changeset
40 server_name localhost;
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42 location /200 {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 return 200;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46 location /404 {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 return 404;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50 location /off {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 server_tokens off;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
53 location /off/200 {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
54 return 200;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
55 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57 location /off/404 {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 return 404;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
59 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62 location /on {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 server_tokens on;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65 location /on/200 {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66 return 200;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
69 location /on/404 {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
70 return 404;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
71 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
72 }
1121
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
73
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
74 location /b {
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
75 server_tokens build;
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
76
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
77 location /b/200 {
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
78 return 200;
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
79 }
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
80
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
81 location /b/404 {
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
82 return 404;
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
83 }
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
84 }
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
87
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
88 EOF
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
89
1121
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
90 $t->try_run('no server_tokens build')->plan(12);
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
91
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
92 ###############################################################################
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
93
1120
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
94 my $re = qr/nginx\/\d+\.\d+\.\d+/;
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
95
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
96 like(http_get_server('/200'), $re, 'tokens default 200');
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
97 like(http_get_server('/404'), $re, 'tokens default 404');
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
98 like(http_body('/404'), $re, 'tokens default 404 body');
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
99
878
327044615c87 Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 877
diff changeset
100 is(http_get_server('/off/200'), 'nginx', 'tokens off 200');
327044615c87 Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 877
diff changeset
101 is(http_get_server('/off/404'), 'nginx', 'tokens off 404');
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
102 like(http_body('/off/404'), qr/nginx(?!\/)/, 'tokens off 404 body');
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
103
1120
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
104 like(http_get_server('/on/200'), $re, 'tokens on 200');
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
105 like(http_get_server('/on/404'), $re, 'tokens on 404');
a6ffc722dfcb Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1119
diff changeset
106 like(http_body('/on/404'), $re, 'tokens on 404 body');
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
107
1121
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
108 $re = qr/$re \Q($1)\E/ if $t->{_configure_args} =~ /--build=(\S+)/;
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
109
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
110 TODO: {
1123
d737d6606504 Tests: fixed server_tokens TODO version in previous change.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1122
diff changeset
111 local $TODO = 'not yet' unless $t->has_version('1.11.10');
1121
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
112
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
113 like(http_get_server('/b/200'), $re, 'tokens build 200');
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
114 like(http_get_server('/b/404'), $re, 'tokens build 404');
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
115 like(http_body('/b/404'), $re, 'tokens build 404 body');
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
116
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
117 }
c883d3d3a3ab Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1120
diff changeset
118
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
119 ###############################################################################
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
120
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
121 sub http_body {
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
122 my ($uri) = shift;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
123 return http_get($uri) =~ /.*?\x0d\x0a?\x0d\x0a?(.*)/ms && $1;
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
124 }
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
125
878
327044615c87 Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 877
diff changeset
126 sub http_get_server {
327044615c87 Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 877
diff changeset
127 my ($url) = @_;
1119
cfe1bc3162f9 Tests: fixed capturing Server header in server_tokens.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
128 return http_get($url) =~ /^Server:\s(.+?)\x0d?$/mi && $1 || undef;
878
327044615c87 Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 877
diff changeset
129 }
327044615c87 Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 877
diff changeset
130
869
f528369414aa Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
131 ###############################################################################