Welcome! Log In Create A New Profile

Advanced

[PATCH 1 of 1] Test proxy_unfinished: limit buffers to force buffering on no proxy temp

Markus Linnala
April 15, 2014 08:28AM
# HG changeset patch
# User Markus Linnala <Markus.Linnala@cybercom.com>
# Date 1397505734 -10800
# Mon Apr 14 23:02:14 2014 +0300
# Node ID cf54213675d59b801bee34328223c28f992cf8c7
# Parent 74a015aad3521ffef6b404cdaa9eafd991824301
Test proxy_unfinished: limit buffers to force buffering on no proxy temp

With some systems (Fedora-20 Linux 3.13) socket buffers are huge and
nginx does not use temp files when proxying. Set buffer sizes to small
values to make use of temp files more probable. Currently there is no
way to force temp buffers.

no proxy temp should fail on 1.5.2 and work okay on later versions.

sub_filter forces chunked encoding and so it is possible to notice
problem because last chunk is 0 chunk when there is error.

Only use limited buffers on 'no proxy temp' as other tests fail
because tests take too long.

http://trac.nginx.org/nginx/ticket/541

diff -r 74a015aad352 -r cf54213675d5 proxy_unfinished.t
--- a/proxy_unfinished.t Mon Mar 17 16:02:19 2014 +0400
+++ b/proxy_unfinished.t Mon Apr 14 23:02:14 2014 +0300
@@ -19,7 +19,7 @@

use Test::More;

-use Socket qw/ CRLF /;
+use Socket qw/ CRLF SOL_SOCKET SO_RCVBUF /;

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

@@ -33,7 +33,7 @@

plan(skip_all => 'win32') if $^O eq 'MSWin32';

-my $t = Test::Nginx->new()->has(qw/http proxy cache sub/)->plan(15)
+my $t = Test::Nginx->new()->has(qw/http proxy cache sub/)->plan(16)
->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%
@@ -72,6 +72,15 @@
add_header X-Cache-Status $upstream_cache_status;
}

+ location /local/ {
+ alias %%TESTDIR%%/;
+ }
+ }
+
+ server {
+ listen 127.0.0.1:8082 sndbuf=4096;
+ server_name localhost;
+
location /proxy/ {
sub_filter foo bar;
sub_filter_types *;
@@ -79,10 +88,6 @@
proxy_buffer_size 1k;
proxy_buffers 4 1k;
}
-
- location /local/ {
- alias %%TESTDIR%%/;
- }
}
}

@@ -159,8 +164,22 @@
# no final chunk

chmod(0000, $t->testdir() . '/proxy_temp');
-like(http_get_11('/proxy/big.html', sleep => 0.5),
- qr/X(?!.*\x0d\x0a?0\x0d\x0a?)/s, 'no proxy temp');
+# Limit socket buffers here and listen to force buffering to temp file.
+like(http_get_11('/proxy/big.html',
+ socket =>
+ do {
+ my $s = IO::Socket::INET->new(
+ Proto => 'tcp',
+ PeerAddr => '127.0.0.1:8082'
+ )
+ or die "Can't connect to nginx: $!\n";
+ $s->setsockopt(SOL_SOCKET, SO_RCVBUF, 1) or die;
+ $s;
+ }),
+ qr/X(?:\x0d\x0a?)?$/s, 'no proxy temp');
+
+# If this test fails, previous test did not test buffering properly
+is(lines($t, 'error.log', '\[crit\] .*? open\(\) .*? failed .*? request: "GET /proxy/big\.html HTTP/1\.1"'), 1, "no proxy temp actual");

}

@@ -270,3 +289,17 @@
}

###############################################################################
+
+# from error_log.t
+
+sub lines {
+ my ($t, $file, $pattern) = @_;
+
+ my $path = $t->testdir() . '/' . $file;
+ open my $fh, '<', $path or return "$!";
+ my $value = map { $_ =~ /$pattern/ } (<$fh>);
+ close $fh;
+ return $value;
+}
+
+###############################################################################

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH 0 of 1] nginx-test proxy_unfinished fix for huge buffers

Markus Linnala 690 April 15, 2014 08:28AM

[PATCH 1 of 1] Test proxy_unfinished: limit buffers to force buffering on no proxy temp

Markus Linnala 367 April 15, 2014 08:28AM

Re: [PATCH 1 of 1] Test proxy_unfinished: limit buffers to force buffering on no proxy temp

Maxim Dounin 298 April 15, 2014 09:06AM

Re: [PATCH 1 of 1] Test proxy_unfinished: limit buffers to force buffering on no proxy temp

Markus Linnala 298 April 15, 2014 10:52AM

[PATCH] Test proxy_unfinished: limit sndbuf to force buffering on no proxy temp

Markus Linnala 347 April 15, 2014 10:58AM

Re: [PATCH 1 of 1] Test proxy_unfinished: limit buffers to force buffering on no proxy temp

Maxim Dounin 357 April 15, 2014 02:08PM

Re: [PATCH 1 of 1] Test proxy_unfinished: limit buffers to force buffering on no proxy temp

Homutov Vladimir 302 April 15, 2014 01:58PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 111
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready