annotate gunzip_memcached.t @ 540:481d705b8610

Tests: SSL support in mail backends. Socket is now embedded into every mail module. Socket methods are wrapped where appropriate. The new "SSL" extra flag specifies to accept connection over SSL.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 03 Apr 2015 00:11:38 +0300
parents 847ea345becb
children c0b4ae82fd9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
231
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for gunzip filter module with memcached.
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx qw/ :DEFAULT :gzip /;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 eval { require Cache::Memcached; };
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 plan(skip_all => 'Cache::Memcached not installed') if $@;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 eval { require IO::Compress::Gzip; };
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 plan(skip_all => "IO::Compress::Gzip not found") if $@;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
309
6c5597ad40a3 Tests: added one more missing rewrite prerequisite.
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
30 my $t = Test::Nginx->new()->has(qw/http gunzip memcached rewrite/)
231
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 ->has_daemon('memcached')
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 ->write_file_expand('nginx.conf', <<'EOF');
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 %%TEST_GLOBALS%%
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 231
diff changeset
36 daemon off;
231
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 events {
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 http {
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 %%TEST_GLOBALS_HTTP%%
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 server {
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 listen 127.0.0.1:8080;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 server_name localhost;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 gunzip on;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 location / {
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 set $memcached_key $uri;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 memcached_pass 127.0.0.1:8081;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 memcached_gzip_flag 2;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 EOF
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 my $memhelp = `memcached -h`;
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 my @memopts = ();
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 if ($memhelp =~ /repcached/) {
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 # repcached patch adds additional listen socket
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 push @memopts, '-X', '8082';
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 if ($memhelp =~ /-U/) {
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 # UDP port is on by default in memcached 1.2.7+
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 push @memopts, '-U', '0';
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 }
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 $t->run_daemon('memcached', '-l', '127.0.0.1', '-p', '8081', @memopts);
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73
397
847ea345becb Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 392
diff changeset
74 $t->run()->plan(2);
231
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 $t->waitforsocket('127.0.0.1:8081')
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 or die "Can't start memcached";
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 # Put compressed value into memcached. This requires compress_threshold to be
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 # set and compressed value to be at least 20% less than original one.
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 my $memd = Cache::Memcached->new(servers => [ '127.0.0.1:8081' ],
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 compress_threshold => 1);
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 $memd->set('/', 'TEST' x 10)
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 or die "can't put value into memcached: $!";
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 ###############################################################################
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 http_gzip_like(http_gzip_request('/'), qr/TEST/, 'memcached response gzipped');
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 like(http_get('/'), qr/TEST/, 'memcached response gunzipped');
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91
bc1861122d0c Tests: gunzip filter tests import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 ###############################################################################