Mercurial > hg > nginx-tests
annotate memcached_fake.t @ 949:c657aaffdaa8
Tests: style.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 17 Jun 2016 11:41:30 +0300 |
parents | 9cd1a8dd47fc |
children | e9064d691790 |
rev | line source |
---|---|
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Test for memcached backend with fake daemon. |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 use Socket qw/ CRLF /; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use lib 'lib'; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 use Test::Nginx; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 ############################################################################### |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 |
128
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http rewrite memcached ssi/)->plan(3) |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 ->write_file_expand('nginx.conf', <<'EOF'); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
30 daemon off; |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 server { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 listen 127.0.0.1:8080; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 server_name localhost; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 location / { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 set $memcached_key $uri; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 memcached_pass 127.0.0.1:8081; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 } |
128
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
46 |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
47 location /ssi { |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
48 default_type text/html; |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
49 ssi on; |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
50 } |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 EOF |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 |
128
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
56 $t->write_file('ssi.html', '<!--#include virtual="/" set="blah" -->blah: <!--#echo var="blah" -->'); |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 $t->run_daemon(\&memcached_fake_daemon); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 $t->run(); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 |
267
9cd1a8dd47fc
Tests: eliminate race in memcached_fake.t startup.
Valentin Bartenev <vbart@nginx.com>
parents:
257
diff
changeset
|
60 $t->waitforsocket('127.0.0.1:8081') |
9cd1a8dd47fc
Tests: eliminate race in memcached_fake.t startup.
Valentin Bartenev <vbart@nginx.com>
parents:
257
diff
changeset
|
61 or die "Can't start fake memcached"; |
9cd1a8dd47fc
Tests: eliminate race in memcached_fake.t startup.
Valentin Bartenev <vbart@nginx.com>
parents:
257
diff
changeset
|
62 |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 ############################################################################### |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 like(http_get('/'), qr/SEE-THIS/, 'memcached split trailer'); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 |
128
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
67 like(http_get('/ssi.html'), qr/SEE-THIS/, 'memcached ssi var'); |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
68 |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 like(`grep -F '[error]' ${\($t->testdir())}/error.log`, qr/^$/s, 'no error'); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 ############################################################################### |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 sub memcached_fake_daemon { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 my $server = IO::Socket::INET->new( |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 Proto => 'tcp', |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 LocalAddr => '127.0.0.1:8081', |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 Listen => 5, |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 Reuse => 1 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 ) |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 or die "Can't create listening socket: $!\n"; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 |
267
9cd1a8dd47fc
Tests: eliminate race in memcached_fake.t startup.
Valentin Bartenev <vbart@nginx.com>
parents:
257
diff
changeset
|
82 local $SIG{PIPE} = 'IGNORE'; |
9cd1a8dd47fc
Tests: eliminate race in memcached_fake.t startup.
Valentin Bartenev <vbart@nginx.com>
parents:
257
diff
changeset
|
83 |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 while (my $client = $server->accept()) { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 $client->autoflush(1); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 while (<$client>) { |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 last if (/\x0d\x0a$/); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 print $client 'VALUE / 0 8' . CRLF; |
128
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
92 print $client 'SEE-TH'; |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
93 select(undef, undef, undef, 0.1); |
25047dc6ae9b
Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents:
127
diff
changeset
|
94 print $client 'IS'; |
127
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 select(undef, undef, undef, 0.1); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 print $client CRLF . 'EN'; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 select(undef, undef, undef, 0.1); |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 print $client 'D' . CRLF; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 close $client; |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 } |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
2bf0c4c80aa7
Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 ############################################################################### |