# vi:filetype= use lib 'lib'; use Test::Nginx::Socket; #repeat_each(2); plan tests => repeat_each() * 4 * blocks(); $ENV{TEST_NGINX_MEMCACHED_PORT} ||= 11211; #master_on(); no_shuffle(); run_tests(); __DATA__ === TEST 1: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 2: basic fetch (cache miss), and not stored due to Cache-Control: private --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; content_by_lua ' ngx.header.cache_control = "private" ngx.say("hello") '; } 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: --- response_body hello === TEST 3: basic fetch (cache miss again, not stored in the previous case) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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: --- response_body world === TEST 4: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 5: basic fetch (cache miss), and not stored due to Cache-Control: private (srcache_store_private off) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; srcache_store_private off; content_by_lua ' ngx.header.cache_control = "private" ngx.say("hello") '; } 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: --- response_body hello === TEST 6: basic fetch (cache miss again, not stored in the previous case) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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: --- response_body world === TEST 7: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 8: basic fetch (cache miss), and stored due to srcache_store_private on --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; srcache_store_private on; content_by_lua ' ngx.header.cache_control = "private" ngx.say("hello") '; } 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: --- response_body hello === TEST 9: basic fetch (cache miss again, not stored in the previous case) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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 --- response_body hello === TEST 10: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 11: basic fetch (cache miss), and not stored due to Cache-Control: private --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; content_by_lua ' ngx.header.cache_control = { "blah", "blah; Private" } ngx.say("hello") '; } 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: --- response_body hello === TEST 12: basic fetch (cache miss again, not stored in the previous case) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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: --- response_body world === TEST 13: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 14: basic fetch (cache miss), and not stored due to Cache-Control: private, proxy_pass --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; proxy_pass http://127.0.0.1:$server_port/bar; } location /bar { default_type text/css; content_by_lua ' ngx.header.cache_control = "private" ngx.say("hello") '; } 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 --- response_body hello === TEST 15: basic fetch (cache miss again, not stored in the previous case) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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: --- response_body world === TEST 16: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 17: basic fetch (cache miss), and not stored due to Cache-Control: private, proxy_pass --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; content_by_lua ' ngx.header["Cache-Control"] = "private" ngx.say("hello") '; } 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: --- response_body hello === TEST 18: basic fetch (cache miss again, not stored in the previous case) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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: --- response_body world === TEST 19: flush all --- config location /flush { set $memc_cmd 'flush_all'; memc_pass 127.0.0.1:$TEST_NGINX_MEMCACHED_PORT; } --- response_headers Content-Type: text/plain Content-Length: 4 --- request GET /flush --- response_body eval: "OK\r\n" === TEST 20: basic fetch (cache miss), and stored due to Cache-Control: private but srcache_response_cache_control off --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; srcache_store_private off; srcache_response_cache_control off; content_by_lua ' ngx.header.cache_control = { "blah", "blah; Private" } ngx.say("hello") '; } 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: --- response_body hello === TEST 21: basic fetch (cache hit) --- config location /foo { default_type text/css; srcache_fetch GET /memc $uri; srcache_store PUT /memc $uri; echo world; } 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 --- response_body hello