view perl_sleep.t @ 1721:6842b0f7fb9e

Tests: restored HTTP/2 request body tests with Content-Length. This partially reverts 3a334b20208e, which prevented testing request body with Content-Length. Arguably, it appeared as an early attempt to address new implementation requirements in 0aa07850922f (1.9.15) for request body flow control. After the HTTP/2 request body preread buffer introduction in ce94f07d5082 (1.11.0), and emitting HTTP/2 SETTINGS acknowledgement in tests since 48d277065309, it became barely necessary, if ever.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 20 Jul 2021 16:12:54 +0300
parents 766bcbb632ee
children
line wrap: on
line source

#!/usr/bin/perl

# (C) Maxim Dounin

# Tests for embedded perl module, $r->sleep().

###############################################################################

use warnings;
use strict;

use Test::More;

BEGIN { use FindBin; chdir($FindBin::Bin); }

use lib 'lib';
use Test::Nginx;

###############################################################################

select STDERR; $| = 1;
select STDOUT; $| = 1;

my $t = Test::Nginx->new()->has(qw/http perl ssi/)->plan(2)
	->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

http {
    %%TEST_GLOBALS_HTTP%%

    server {
        listen       127.0.0.1:8080;
        server_name  localhost;

        location / {
            ssi on;
            sendfile_max_chunk 100;
            postpone_output 0;
        }

        location /sleep {
            perl 'sub {
                my $r = shift;

                $r->sleep(100, sub {
                    my $r = shift;
                    $r->send_http_header;
                    $r->print("it works");
                    return OK;
                });

                return OK;
            }';
        }
    }
}

EOF

$t->write_file('subrequest.html', ('x' x 200) .
	'X<!--#include virtual="/sleep" -->X');

$t->run();

###############################################################################

like(http_get('/sleep'), qr/works/, 'perl sleep');
like(http_get('/subrequest.html'), qr/works/, 'perl sleep in subrequest');

###############################################################################