Mercurial > hg > ngx_http_gunzip_filter_module
annotate t/gunzip_memcached.t @ 21:c0301992025a draft default tip
Gunzip: tests cleanup.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 07 Sep 2012 19:38:56 +0400 |
parents | 1adc6718cc05 |
children |
rev | line source |
---|---|
6
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for gunzip filter module with memcached. |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 use Test::Nginx qw/ :DEFAULT :gzip /; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 ############################################################################### |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 select STDERR; $| = 1; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 select STDOUT; $| = 1; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 eval { require Cache::Memcached; }; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 plan(skip_all => 'Cache::Memcached not installed') if $@; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 eval { require IO::Compress::Gzip; }; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 plan(skip_all => "IO::Compress::Gzip not found") if $@; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
21 | 26 my $t = Test::Nginx->new()->has(qw/http gunzip memcached/) |
27 ->has_daemon('memcached') | |
6
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 ->write_file_expand('nginx.conf', <<'EOF'); |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 daemon off; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 events { |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 } |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 http { |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 server { |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 listen 127.0.0.1:8080; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 server_name localhost; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 gunzip on; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 location / { |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 set $memcached_key $uri; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 memcached_pass 127.0.0.1:8081; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 memcached_gzip_flag 2; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 } |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 } |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 } |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 EOF |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 |
7
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
56 my $memhelp = `memcached -h`; |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
57 my @memopts = (); |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
58 |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
59 if ($memhelp =~ /repcached/) { |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
60 # repcached patch adds additional listen socket |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
61 push @memopts, '-X', '8082'; |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
62 } |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
63 if ($memhelp =~ /-U/) { |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
64 # UDP port is on by default in memcached 1.2.7+ |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
65 push @memopts, '-U', '0'; |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
66 } |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
67 |
9158103f8571
Gunzip: fix tests for repcached and memcached 1.2.7+.
Maxim Dounin <mdounin@mdounin.ru>
parents:
6
diff
changeset
|
68 $t->run_daemon('memcached', '-l', '127.0.0.1', '-p', '8081', @memopts); |
6
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 eval { |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 open OLDERR, ">&", \*STDERR; close STDERR; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 $t->run(); |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 open STDERR, ">&", \*OLDERR; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 }; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 plan(skip_all => 'no memcached_gzip_flag') if $@; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 $t->plan(2); |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 $t->waitforsocket('127.0.0.1:8081') |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 or die "Can't start memcached"; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 # Put compressed value into memcached. This requires compress_threshold to be |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 # set and compressed value to be at least 20% less than original one. |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 my $memd = Cache::Memcached->new(servers => [ '127.0.0.1:8081' ], |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 compress_threshold => 1); |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 $memd->set('/', 'TEST' x 10) |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 or die "can't put value into memcached: $!"; |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 ############################################################################### |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 http_gzip_like(http_gzip_request('/'), qr/TEST/, 'memcached response gzipped'); |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 like(http_get('/'), qr/TEST/, 'memcached response gunzipped'); |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 |
45e54370c2d0
Gunzip: add tests for replies from memcached with gzip.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 ############################################################################### |