annotate memcached.t @ 114:44b281ac4bc6

Tests: add server name tests, including fancy regex ones. With test config nginx will fail to start as of 0.8.28 due to incorrect conversion of regular expressions to lowercase. Patch was discussed on mailing list and will be included in next release.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 30 Nov 2009 14:47:17 +0300
parents 1c0ec30614c6
children 8ac1faaddd2c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Test for memcached backend.
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 eval { require Cache::Memcached; };
54
ec7903def1bb Tests: fix typo.
Maxim Dounin <mdounin@mdounin.ru>
parents: 50
diff changeset
25 plan(skip_all => 'Cache::Memcached not installed') if $@;
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
41
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
27 my $t = Test::Nginx->new()->has('rewrite')->has_daemon('memcached')->plan(4)
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 84
diff changeset
30 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 84
diff changeset
31
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 master_process off;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 daemon off;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 events {
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 }
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 84
diff changeset
39 %%TEST_GLOBALS_HTTP%%
35
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 34
diff changeset
40
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 server {
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 41
diff changeset
42 listen 127.0.0.1:8080;
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 server_name localhost;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 location / {
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 set $memcached_key $uri;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 memcached_pass 127.0.0.1:8081;
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 }
34
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
49
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
50 location /next {
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
51 set $memcached_key $uri;
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
52 memcached_next_upstream not_found;
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
53 memcached_pass 127.0.0.1:8081;
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
54 }
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 }
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 }
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 EOF
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 $t->run_daemon('memcached', '-l', '127.0.0.1', '-p', '8081');
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 $t->run();
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
50
b494fe5b12d1 Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
63 $t->waitforsocket('127.0.0.1:8081')
b494fe5b12d1 Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
64 or die "Can't start memcached";
b494fe5b12d1 Tests: add waitforfile() and waitforsocket() functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 45
diff changeset
65
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 ###############################################################################
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 my $memd = Cache::Memcached->new(servers => [ '127.0.0.1:8081' ]);
84
e48ac6e9a390 Tests: die if we failed to put test data into memcached.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
69 $memd->set('/', 'SEE-THIS')
e48ac6e9a390 Tests: die if we failed to put test data into memcached.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
70 or die "can't put value into memcached: $!";
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 like(http_get('/'), qr/SEE-THIS/, 'memcached request');
61
74f276d0fca1 Tests: mark memcached notfound test as TODO, broken for too long.
Maxim Dounin <mdounin@mdounin.ru>
parents: 54
diff changeset
73
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 like(http_get('/notfound'), qr/404/, 'memcached not found');
61
74f276d0fca1 Tests: mark memcached notfound test as TODO, broken for too long.
Maxim Dounin <mdounin@mdounin.ru>
parents: 54
diff changeset
75
34
689174c36e94 Tests: memcached in 0.7.19 works only with next_upstream.
Maxim Dounin <mdounin@mdounin.ru>
parents: 29
diff changeset
76 like(http_get('/next'), qr/404/, 'not found with memcached_next_upstream');
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77
41
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
78 unlike(http_head('/'), qr/SEE-THIS/, 'memcached no data in HEAD');
1b3c22a87e5d Tests: add some HEAD tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 36
diff changeset
79
29
71ea39729fa0 Tests: memcached module generic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 ###############################################################################