# vim:set ft= ts=4 sw=4 et fdm=marker:
use Test::Nginx::Socket::Lua;
use t::StapThread;

our $GCScript = $t::StapThread::GCScript;
our $StapScript = $t::StapThread::StapScript;

#worker_connections(1014);
#master_on();
#workers(2);
#log_level('warn');

repeat_each(2);

plan tests => repeat_each() * (blocks() * 3 + 2);

#no_diff();
#no_long_string();
run_tests();

__DATA__

=== TEST 1: If-Modified-Since true
--- config
    location /lua {
        content_by_lua '
            ngx.header.last_modified = "Thu, 10 May 2012 07:50:59 GMT"
            ngx.say("hello")
        ';
    }
--- request
GET /lua
--- more_headers
If-Modified-Since: Thu, 10 May 2012 07:50:59 GMT
--- response_body
--- error_code: 304
--- no_error_log
[error]



=== TEST 2: If-Modified-Since true
--- config
    location /lua {
        if_modified_since before;
        content_by_lua '
            ngx.header.last_modified = "Thu, 10 May 2012 07:50:48 GMT"
            ngx.say("hello")
        ';
    }
--- request
GET /lua
--- more_headers
If-Modified-Since: Thu, 10 May 2012 07:50:59 GMT
--- response_body
--- error_code: 304
--- no_error_log
[error]



=== TEST 3: If-Unmodified-Since false
--- config
    location /lua {
        #if_modified_since before;
        content_by_lua '
            ngx.header.last_modified = "Thu, 10 May 2012 07:50:48 GMT"
            local ok, err = ngx.say("hello")
            if not ok then
                ngx.log(ngx.WARN, "say failed: ", err)
            end
        ';
    }
--- request
GET /lua
--- more_headers
If-Unmodified-Since: Thu, 10 May 2012 07:50:47 GMT

--- stap2 eval: $::StapScript
--- stap eval: $::GCScript
--- stap_out
terminate 1: ok
delete thread 1

--- response_body_like: 412 Precondition Failed
--- error_code: 412
--- error_log
say failed: nginx output filter error
--- no_error_log
[error]
--- skip_eval: 5:defined($ENV{MOCKEAGAIN}) && ($ENV{MOCKEAGAIN} =~ /w/)
