109 lines
3 KiB
Perl
109 lines
3 KiB
Perl
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership.
|
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
|
# (the "License"); you may not use this file except in compliance with
|
|
# the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
package Apache::TestCommon;
|
|
|
|
use strict;
|
|
use warnings FATAL => 'all';
|
|
|
|
use File::Basename;
|
|
|
|
use Apache::Test;
|
|
use Apache::TestRequest;
|
|
use Apache::TestUtil;
|
|
use Apache::TestCommonPost ();
|
|
|
|
#this module contains common tests that are called from different .t files
|
|
|
|
#t/apache/passbrigade.t
|
|
#t/apache/rwrite.t
|
|
|
|
sub run_write_test {
|
|
my $module = shift;
|
|
|
|
#1k..9k, 10k..50k, 100k, 300k, 500k, 2Mb, 4Mb, 6Mb, 10Mb
|
|
my @sizes = (1..9, 10..50, 100, 300, 500, 2000, 4000, 6000, 10_000);
|
|
my @buff_sizes = (1024, 8192);
|
|
|
|
plan tests => @sizes * @buff_sizes, [$module, 'LWP'];
|
|
|
|
my $location = "/$module";
|
|
my $ua = Apache::TestRequest::user_agent();
|
|
|
|
for my $buff_size (@buff_sizes) {
|
|
for my $size (@sizes) {
|
|
my $length = $size * 1024;
|
|
my $received = 0;
|
|
|
|
$ua->do_request(GET => "$location?$buff_size,$length",
|
|
sub {
|
|
my($chunk, $res) = @_;
|
|
$received += length $chunk;
|
|
});
|
|
|
|
ok t_cmp($received, $length, 'bytes in body');
|
|
}
|
|
}
|
|
}
|
|
|
|
sub run_files_test {
|
|
my($verify, $skip_other) = @_;
|
|
|
|
my $vars = Apache::Test::vars();
|
|
my $perlpod = $vars->{perlpod};
|
|
|
|
my %pod = (
|
|
files => [],
|
|
num => 0,
|
|
url => '/getfiles-perl-pod',
|
|
dir => "",
|
|
);
|
|
|
|
if (-d $perlpod) {
|
|
my @files = map { basename $_ } <$perlpod/*.pod>;
|
|
$pod{files} = \@files;
|
|
$pod{num} = scalar @files;
|
|
$pod{dir} = $perlpod;
|
|
}
|
|
else {
|
|
push @Apache::Test::SkipReasons,
|
|
"dir $vars->{perlpod} does not exist";
|
|
}
|
|
|
|
my %other_files = ();
|
|
|
|
unless ($skip_other) { #allow to skip the large binary files
|
|
%other_files = map {
|
|
("/getfiles-binary-$_", $vars->{$_})
|
|
} qw(httpd perl);
|
|
}
|
|
|
|
my $tests = $pod{num} + keys(%other_files);
|
|
|
|
plan tests => $tests, sub { $pod{num} and have_lwp() };
|
|
|
|
my $ua = Apache::TestRequest::user_agent();
|
|
|
|
for my $file (@{ $pod{files} }) {
|
|
$verify->($ua, "$pod{url}/$file", "$pod{dir}/$file");
|
|
}
|
|
|
|
for my $url (sort keys %other_files) {
|
|
$verify->($ua, $url, $other_files{$url});
|
|
}
|
|
}
|
|
|
|
1;
|
|
__END__
|