1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
# vi:filetype=
use lib 'lib';
use Test::Nginx::Socket;
#repeat_each(2);
plan tests => repeat_each() * (5 * blocks() + 5);
$ENV{TEST_NGINX_MEMCACHED_PORT} ||= 11211;
#master_on();
no_shuffle();
run_tests();
__DATA__
=== TEST 1: flush all (not using ngx_srcache)
--- config
location /flush {
set $memc_cmd 'flush_all';
memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT;
add_header X-Fetch-Status $srcache_fetch_status;
add_header X-Store-Status $srcache_store_status;
}
--- response_headers
Content-Type: text/plain
Content-Length: 4
X-Fetch-Status: BYPASS
X-Store-Status: BYPASS
--- stap
F(ngx_http_srcache_access_handler) {
println("srcache access handler")
}
F(ngx_http_srcache_header_filter) {
println("srcache header filter")
}
F(ngx_http_srcache_body_filter) {
println("srcache body filter")
}
--- stap_out
--- request
GET /flush
--- response_body eval: "OK\r\n"
=== TEST 2: basic fetch (cache miss)
--- config
location /foo {
default_type text/css;
srcache_fetch GET /memc $uri;
srcache_store PUT /memc $uri;
echo hello;
add_header X-Fetch-Status $srcache_fetch_status;
add_header X-Store-Status $srcache_store_status;
}
location /memc {
internal;
set $memc_key $query_string;
set $memc_exptime 300;
memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT;
}
--- request
GET /foo
--- response_headers
Content-Type: text/css
Content-Length:
X-Fetch-Status: MISS
X-Store-Status: STORE
--- response_body
hello
--- wait: 0.1
--- error_log
srcache_store: subrequest returned status 201
--- log_level: debug
=== TEST 3: basic fetch (cache hit)
--- config
location /foo {
default_type text/css;
srcache_fetch GET /memc $uri;
srcache_store PUT /memc $uri;
echo world;
add_header X-Fetch-Status $srcache_fetch_status;
add_header X-Store-Status $srcache_store_status;
}
location /memc {
internal;
set $memc_key $query_string;
set $memc_exptime 300;
memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT;
}
--- request
GET /foo
--- response_headers
Content-Type: text/css
Content-Length: 6
X-Fetch-Status: HIT
X-Store-Status: BYPASS
--- response_body
hello
=== TEST 4: rewrite directives run before srcache directives
--- config
location /foo {
default_type text/css;
set $key $uri;
set $loc /memc;
srcache_fetch GET $loc $key;
srcache_store PUT $loc $key;
echo world;
add_header X-Fetch-Status $srcache_fetch_status;
}
location /memc {
internal;
set $memc_key $query_string;
set $memc_exptime 300;
memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT;
}
--- request
GET /foo
--- response_headers
Content-Type: text/css
Content-Length: 6
X-Fetch-Status: HIT
--- response_body
hello
|