annotate h2_server_tokens.t @ 1021:ebdf239722b9

Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris. Assumed that the order of responses being arrived in nolock case may be ignored. An important part of such case is that the only last response should be cached.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 02 Sep 2016 12:17:35 +0300
parents 882267679006
children a6ffc722dfcb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
880
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for HTTP/2 protocol with server_tokens directive.
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use lib 'lib';
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
19 use Test::Nginx::HTTP2;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21 ###############################################################################
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http http_v2 rewrite/)->plan(9)
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31 daemon off;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 events {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36 http {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
40 listen 127.0.0.1:8080 http2;
880
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41 server_name localhost;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 location /200 {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44 return 200;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 location /404 {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48 return 404;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 location /off {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52 server_tokens off;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
53
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
54 location /off/200 {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
55 return 200;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 location /off/404 {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
59 return 404;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 location /on {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64 server_tokens on;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66 location /on/200 {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 return 200;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
69
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
70 location /on/404 {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
71 return 404;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
72 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
73 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
74 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
75 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
76
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
77 EOF
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
78
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
79 $t->run();
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
80
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
81 ###############################################################################
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
82
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
83 like(header_server('/200'), qr/^nginx\/\d+\.\d+\.\d+$/,
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
84 'http2 tokens default 200');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85 like(header_server('/404'), qr/^nginx\/\d+\.\d+\.\d+$/,
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86 'http2 tokens default 404');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
87 like(body('/404'), qr/nginx\/\d+\.\d+\.\d+/, 'http2 tokens default 404 body');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
88
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
89 is(header_server('/off/200'), 'nginx', 'http2 tokens off 200');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
90 is(header_server('/off/404'), 'nginx', 'http2 tokens off 404');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
91 like(body('/off/404'), qr/nginx(?!\/)/, 'http2 tokens off 404 body');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
92
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
93 like(header_server('/on/200'), qr/^nginx\/\d+\.\d+\.\d+$/,
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
94 'http2 tokens on 200');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
95 like(header_server('/on/404'), qr/^nginx\/\d+\.\d+\.\d+$/,
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
96 'http2 tokens on 404');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
97 like(body('/on/404'), qr/nginx\/\d+\.\d+\.\d+/, 'http2 tokens on 404 body');
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
98
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
99 ###############################################################################
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
100
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
101 sub header_server {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
102 my ($path) = shift;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
103
948
4dc302d8e04f Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents: 880
diff changeset
104 my $s = Test::Nginx::HTTP2->new();
4dc302d8e04f Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents: 880
diff changeset
105 my $sid = $s->new_stream({ path => $path });
4dc302d8e04f Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents: 880
diff changeset
106 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
880
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
107
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
108 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
109 return $frame->{headers}->{'server'};
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
110 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
111
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
112 sub body {
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
113 my ($path) = shift;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
114
948
4dc302d8e04f Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents: 880
diff changeset
115 my $s = Test::Nginx::HTTP2->new();
4dc302d8e04f Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents: 880
diff changeset
116 my $sid = $s->new_stream({ path => $path });
4dc302d8e04f Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents: 880
diff changeset
117 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
880
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
118
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
119 my ($frame) = grep { $_->{type} eq "DATA" } @$frames;
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
120 return $frame->{'data'};
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
121 }
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
122
697fc80b8606 Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
123 ###############################################################################