annotate memcached_fake.t @ 251:df984d23f9d1

Tests: improve fastcgi keepalive tests. On some platforms fastcgi_keepalive.t tests failed due to problems in handling of data split into multiple packets. Harden tests to fail on all platforms by adding more sleeps, and mark them as TODO till underlying problems are fixed. Additionally, add some padding testing.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 25 Jan 2013 20:53:53 +0400
parents 6a0d934950bc
children 0cc5269bc62c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 ###############################################################################
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 like(http_get('/'), qr/SEE-THIS/, 'memcached split trailer');
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
128
25047dc6ae9b Tests: add test for memcached parsing problem as fixed in 0.6.14.
Maxim Dounin <mdounin@mdounin.ru>
parents: 127
diff changeset
64 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
65
127
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 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
67
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 ###############################################################################
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 sub memcached_fake_daemon {
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 my $server = IO::Socket::INET->new(
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 Proto => 'tcp',
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 LocalAddr => '127.0.0.1:8081',
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 Listen => 5,
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 Reuse => 1
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 )
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 or die "Can't create listening socket: $!\n";
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 while (my $client = $server->accept()) {
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 $client->autoflush(1);
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 while (<$client>) {
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 last if (/\x0d\x0a$/);
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 }
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 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
87 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
88 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
89 print $client 'IS';
127
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 select(undef, undef, undef, 0.1);
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 print $client CRLF . 'EN';
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 select(undef, undef, undef, 0.1);
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 print $client 'D' . CRLF;
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 close $client;
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 }
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 }
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97
2bf0c4c80aa7 Tests: memcached split trailer test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 ###############################################################################