70 lines
2.8 KiB
Perl
70 lines
2.8 KiB
Perl
use strict;
|
|
use warnings FATAL => 'all';
|
|
|
|
use Apache::Test;
|
|
use Apache::TestRequest;
|
|
use Apache::TestUtil qw(t_write_file);
|
|
|
|
# test multi-byterange-requests with overlaps (merges)
|
|
|
|
my $url = "/apache/chunked/byteranges.txt";
|
|
my $file = Apache::Test::vars('serverroot') . "/htdocs$url";
|
|
|
|
my $content = "";
|
|
$content .= sprintf("%04d", $_) for (1 .. 2000);
|
|
t_write_file($file, $content);
|
|
my $clen = length($content);
|
|
|
|
|
|
my $medrange = "";
|
|
my $longrange = "";
|
|
my $i;
|
|
|
|
for (0 .. 50) {
|
|
$longrange .= "0-1,3-4,0-1,3-4,";
|
|
if ($_ % 2) {
|
|
$medrange .= "0-1,3-4,0-1,3-4,";
|
|
}
|
|
}
|
|
|
|
my @test_cases = (
|
|
{ url => "/maxranges/default/byteranges.txt" , h => "0-100", status => "206"},
|
|
{ url => "/maxranges/default/byteranges.txt" , h => $medrange, status => "206"},
|
|
{ url => "/maxranges/default/byteranges.txt" , h => $longrange, status => "200"},
|
|
|
|
{ url => "/maxranges/default-explicit/byteranges.txt" , h => "0-100", status => "206"},
|
|
{ url => "/maxranges/default-explicit/byteranges.txt" , h => $medrange, status => "206"},
|
|
{ url => "/maxranges/default-explicit/byteranges.txt" , h => $longrange, status => "200"},
|
|
|
|
{ url => "/maxranges/none/byteranges.txt" , h => "0-100", status => "200"},
|
|
{ url => "/maxranges/none/byteranges.txt" , h => "$medrange", status => "200"},
|
|
{ url => "/maxranges/none/byteranges.txt" , h => "$longrange", status => "200"},
|
|
|
|
{ url => "/maxranges/1/merge/none/byteranges.txt" , h => "0-100", status => "200"},
|
|
{ url => "/maxranges/1/merge/none/byteranges.txt" , h => "$medrange", status => "200"},
|
|
{ url => "/maxranges/1/merge/none/byteranges.txt" , h => "$longrange", status => "200"},
|
|
|
|
{ url => "/maxranges/1/byteranges.txt" , h => "0-100", status => "206"},
|
|
{ url => "/maxranges/1/byteranges.txt" , h => "0-100,200-300", status => "200"},
|
|
{ url => "/maxranges/2/byteranges.txt" , h => "0-100,200-300", status => "206"},
|
|
{ url => "/maxranges/2/byteranges.txt" , h => "0-100,200-300,400-500", status => "200"},
|
|
{ url => "/maxranges/unlimited/byteranges.txt" , h => "0-100", status => "206"},
|
|
{ url => "/maxranges/unlimited/byteranges.txt" , h => "$medrange", status => "206"},
|
|
{ url => "/maxranges/unlimited/byteranges.txt" , h => "$longrange", status => "206"},
|
|
|
|
);
|
|
plan tests => scalar(@test_cases), need need_lwp, need_min_apache_version('2.3.15') || need_min_apache_version('2.2.21'),
|
|
need_module('mod_alias');
|
|
|
|
|
|
foreach my $test (@test_cases) {
|
|
my $result = GET $test->{"url"}, "Range" => "bytes=" . $test->{"h"} ;
|
|
my $boundary;
|
|
my $ctype = $result->header("Content-Type");
|
|
if ($test->{"status"} ne $result->code()) {
|
|
print "Wrong status code: " . $result->code() ."\n";
|
|
ok(0);
|
|
next;
|
|
}
|
|
ok (1);
|
|
}
|