[PATCH] Tests: clearing of pre-existing Content-Range headers
Sergey Kandaurov
pluknet at nginx.com
Thu Nov 17 17:35:15 UTC 2022
On Tue, Nov 15, 2022 at 09:55:40PM -0800, Eugene Grebenschikov via nginx-devel wrote:
> Hello,
>
> After discussion with Sergey Kandaurov, it was decided to seperate these tests
> into a separate file.
>
[..]
> >
> > It might be a good idea to keep this separate from the basic range
> > filter tests. E.g., in a separate file, similarly to
> > range_charset.t tests. Or in a generic test file for tests with
> > proxying, that is, combined with range_charset.t.
> >
> > This approach ensures that even a stripped-down nginx version,
> > such as one compiled with "--without-http_proxy_module", can be
> > properly tested by the test suite.
> >
> > --
> > Maxim Dounin
> # HG changeset patch
> # User Eugene Grebenschikov <e.grebenshchikov at f5.com>
> # Date 1668577517 28800
> # Tue Nov 15 21:45:17 2022 -0800
> # Node ID f9be09ba3198568642afd5107e0ab40faa3b3c11
> # Parent 01fcc82a435aedd41ed3c23dbf7252371652cc7a
> Tests: clearing of pre-existing Content-Range headers.
>
> diff -r 01fcc82a435a -r f9be09ba3198 range_clearing.t
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/range_clearing.t Tue Nov 15 21:45:17 2022 -0800
> @@ -0,0 +1,87 @@
> +#!/usr/bin/perl
> +
> +# (C) Eugene Grebenschikov
> +# (C) Sergey Kandaurov
> +# (C) Nginx, Inc.
> +
> +# Tests for clearing of pre-existing Content-Range headers.
> +
> +###############################################################################
> +
> +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 rewrite proxy cache/)
> + ->write_file_expand('nginx.conf', <<'EOF');
> +
> +%%TEST_GLOBALS%%
> +
> +daemon off;
> +
> +events {
> +}
> +
> +http {
> + %%TEST_GLOBALS_HTTP%%
> +
> + proxy_cache_path %%TESTDIR%%/cache levels=1:2 keys_zone=NAME:1m;
> +
> + server {
> + listen 127.0.0.1:8080;
> + server_name localhost;
> +
> + location / {
> + proxy_pass http://127.0.0.1:8080/stub;
> + proxy_cache NAME;
> + proxy_cache_valid 200 1m;
> + }
> +
> + location /stub {
> + add_header Content-Range stub;
> + add_header Accept-Ranges bytes;
> + return 200 "SEE-THIS";
> + }
> + }
> +}
> +
> +EOF
> +
> +$t->run()->plan(3);
> +
> +###############################################################################
> +
> +local $TODO = 'not yet' unless $t->has_version('1.23.1');
> +
> +like(http_get_range('/', 'Range: bytes=0-4'),
> + qr/ 206 (?!.*stub)/s, 'content range cleared - range request');
> +like(http_get_range('/', 'Range: bytes=0-2,4-'),
> + qr/ 206 (?!.*stub)/s, 'content range cleared - multipart');
> +like(http_get_range('/', 'Range: bytes=1000-'),
> + qr/ 416 (?!.*stub)/s, 'content range cleared - not satisfable');
> +
> +###############################################################################
> +
> +sub http_get_range {
> + my ($url, $extra) = @_;
> + return http(<<EOF);
> +GET $url HTTP/1.1
> +Host: localhost
> +Connection: close
> +$extra
> +
> +EOF
> +}
> +
> +###############################################################################
Good for me.
More information about the nginx-devel
mailing list