annotate userid.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 382011b269f1
children 2d7fcd713b66
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for userid filter module.
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
15 use Config;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16 use MIME::Base64;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 use Time::Local;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
19 BEGIN { use FindBin; chdir($FindBin::Bin); }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21 use lib 'lib';
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22 use Test::Nginx;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
26 select STDERR; $| = 1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
27 select STDOUT; $| = 1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29 my $t = Test::Nginx->new()->has(qw/http userid map/)->plan(33);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31 $t->write_file_expand('nginx.conf', <<'EOF');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33 %%TEST_GLOBALS%%
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35 daemon off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37 events {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
40 http {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
41 %%TEST_GLOBALS_HTTP%%
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
42
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 map $args $uid_reset {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44 default 0;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45 value 1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46 log log;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
50 listen 127.0.0.1:8080;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 server_name localhost;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
53 add_header X-Got $uid_got;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
54 add_header X-Reset $uid_reset;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
55 add_header X-Set $uid_set;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 userid on;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58 location / {
1177
382011b269f1 Tests: do not inadvertently disable debug logging in userid.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
59 error_log %%TESTDIR%%/error.log debug;
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
60 error_log %%TESTDIR%%/error_reset.log info;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 location /name {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64 userid_name test;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 location /path {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68 userid_path /0123456789;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
69
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
70 location /path/r {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
71 userid_path /9876543210;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
72 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
73 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
74
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
75 location /domain {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
76 userid_domain test.domain;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
77 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
78
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
79 location /mark_off {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
80 userid_mark off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
81 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
82 location /mark_eq {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
83 userid_mark =;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
84 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85 location /mark_let {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86 userid_mark t;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
87 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
88 location /mark_num {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
89 userid_mark 9;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
90 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
91
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
92 location /expires_time {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
93 add_header X-Msec $msec;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
94 userid_expires 100;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
95 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
96 location /expires_max {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
97 userid_expires max;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
98
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
99 location /expires_max/off {
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
100 userid_expires off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
101 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
102 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
103 location /expires_off {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
104 userid_expires off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
105 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
106
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
107 location /p3p {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
108 userid_p3p policyref="/w3c/p3p.xml";
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
109 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
110
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
111 location /service {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
112 userid_service 65534;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
113 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
114
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
115 location /cv1 {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
116 userid v1;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
117 userid_mark t;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
118 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
119
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
120 location /clog {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
121 userid log;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
122 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
123
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
124 location /coff {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
125 userid off;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
126 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
127 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
128 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
129
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
130 EOF
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
131
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
132 $t->write_file('index.html', '');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
133 $t->write_file('expires_time', '');
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
134 $t->write_file('service', '');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
135 $t->write_file('cv1', '');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
136 $t->write_file('clog', '');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
137 $t->write_file('coff', '');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
138 $t->run();
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
139
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
140 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
141
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
142 # userid
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
143
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
144 like(http_get('/'), qr/Set-Cookie:/, 'cookie on');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
145 like(http_get('/cv1'), qr/Set-Cookie:/, 'cookie v1');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
146 unlike(http_get('/clog'), qr/Set-Cookie:/, 'cookie log');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
147 unlike(http_get('/coff'), qr/Set-Cookie:/, 'cookie off');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
148
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
149 # default
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
150
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
151 my %cookie = get_cookie('/');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
152 isnt($cookie{'uid'}, undef, 'name default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
153 is($cookie{'path'}, '/', 'path default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
154 is($cookie{'domain'}, undef, 'domain default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
155 is($cookie{'expires'}, undef, 'expires default');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
156 like($cookie{'uid'}, '/\w+={0,2}$/', 'mark default');
817
ada7d1ad985b Tests: fixed occasional negative match failure in userid.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 614
diff changeset
157 unlike(http_get('/'), qr/^P3P/m, 'p3p default');
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
158 like(http_get('/'), qr/X-Reset: 0/, 'uid reset variable default');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
159
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
160 # name, path, domain and p3p
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
161
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
162 isnt(get_cookie('/name', 'test'), undef, 'name');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
163 is(get_cookie('/path', 'path'), '/0123456789', 'path');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
164 is(get_cookie('/domain', 'domain'), 'test.domain', 'domain');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
165 like(http_get('/p3p'), qr!P3P: policyref="/w3c/p3p.xml"!, 'p3p');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
166
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
167 # mark
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
168
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
169 like(get_cookie('/mark_off', 'uid'), '/\w+={0,2}$/', 'mark off');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
170 like(get_cookie('/mark_eq', 'uid'), '/==$/', 'mark equal');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
171 like(get_cookie('/mark_let', 'uid'), '/t=$/', 'mark letter');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
172 like(get_cookie('/mark_num', 'uid'), '/9=$/', 'mark number');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
173
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
174 # expires
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
175
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
176 my $r = http_get('/expires_time');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
177 my ($t1) = $r =~ /X-Msec: (\d+)/;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
178 is(expires2timegm(cookie($r, 'expires')), $t1 + 100, 'expires time');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
179 is(get_cookie('/expires_max', 'expires'), 'Thu, 31-Dec-37 23:55:55 GMT',
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
180 'expires max');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
181 is(get_cookie('/expires_off', 'expires'), undef, 'expires off');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
182
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
183 # redefinition
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
184
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
185 unlike(http_get('/expires_max/off'), qr/expires/, 'redefine expires');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
186 like(http_get('/path/r'), qr!/9876543210!, 'redefine path');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
187
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
188 # requests
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
189
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
190 $r = http_get('/');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
191 my ($uid) = uid_set($r);
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
192 isnt($uid, undef, 'uid set variable');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
193
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
194 $r = send_uid('/', cookie($r, 'uid'));
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
195 is(uid_got($r), $uid, 'uid got variable');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
196 unlike($r, qr/Set-Cookie:/, 'same path request');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
197
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
198 $r = send_uid('/coff', $uid);
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
199 unlike($r, qr/Set-Cookie:/, 'other path request');
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
200
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
201 $r = send_uid('/?value', $uid);
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
202 like($r, qr/Set-Cookie:/, 'uid reset variable value');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
203
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
204 # service
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
205
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
206 is(substr(uid_set(http_get('/cv1')), 0, 8), '00000000', 'service default v1');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
207
614
0597ca82c26a Tests: respected byteorder value on longsize=4 but USE_64_BIT_INT.
Sergey Kandaurov <pluknet@nginx.com>
parents: 605
diff changeset
208 my $bigendian = $Config{byteorder} =~ '1234' ? 0 : 1;
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
209 my $addr = $bigendian ? "7F000001" : "0100007F";
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
210 is(substr(uid_set(http_get('/')), 0, 8), $addr, 'service default v2');
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
211
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
212 $addr = $bigendian ? "0000FFFE" : "FEFF0000";
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
213 is(substr(uid_set(http_get('/service')), 0, 8), $addr, 'service custom');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
214
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
215 # reset log
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
216
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
217 send_uid('/?log', cookie($r, 'uid'));
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
218
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
219 $t->stop();
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
220
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
221 like($t->read_file('error_reset.log'),
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
222 '/userid cookie "uid=\w+" was reset/m', 'uid reset variable log');
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
223
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
224 ###############################################################################
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
225
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
226 sub cookie {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
227 my ($r, $key) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
228 my %cookie;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
229
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
230 $r =~ /(Set-Cookie:[^\x0d]*).*\x0d\x0a?\x0d/ms;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
231 if ($1) {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
232 %cookie = $1 =~ /(\w+)=([^;]+)/g;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
233 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
234
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
235 return $cookie{$key} if defined $key;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
236 return %cookie;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
237 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
238
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
239 sub get_cookie {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
240 my ($url, $key) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
241 return cookie(http_get($url), $key);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
242 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
243
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
244 sub expires2timegm {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
245 my ($e) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
246 my %months = (Jan => 0, Feb => 1, Mar => 2, Apr => 3, May =>4, Jun => 5,
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
247 Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
248
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
249 my ($w, $date, $time) = split(" ", $e);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
250 my ($day, $month, $year) = split("-", $date);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
251 my ($hour, $min, $sec) = split(":", $time);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
252
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
253 return timegm($sec, $min, $hour, $day, $months{$month}, $year);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
254 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
255
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
256 sub uid_set {
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
257 my ($r) = @_;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
258 my ($uid) = $r =~ /X-Set: uid=(.*)\n/m;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
259 return $uid;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
260 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
261
605
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
262 sub uid_got {
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
263 my ($r) = @_;
a77f19282f63 Tests: switched to using headers to test variables in userid.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 604
diff changeset
264 my ($uid) = $r =~ /X-Got: uid=(.*)\n/m;
604
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
265 return $uid;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
266 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
267
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
268 sub send_uid {
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
269 my ($url, $uid) = @_;
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
270 return http(<<EOF);
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
271 GET $url HTTP/1.0
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
272 Host: localhost
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
273 Cookie: uid=$uid
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
274
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
275 EOF
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
276 }
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
277
b96c4739ca85 Tests: some userid tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
278 ###############################################################################