46 lines
1.7 KiB
Perl
46 lines
1.7 KiB
Perl
use strict;
|
|
use warnings FATAL => 'all';
|
|
|
|
use Apache::Test;
|
|
use Apache::TestConfig;
|
|
use Apache::TestUtil qw(t_debug);
|
|
use IPC::Open3;
|
|
use Symbol;
|
|
use File::Spec::Functions qw(catfile);
|
|
use Data::Dumper;
|
|
|
|
my $vars = Apache::Test::vars();
|
|
|
|
plan tests => ($vars->{ssl_module_name} ? 5 : 2);
|
|
|
|
sub run_and_gather_output {
|
|
my $command = shift;
|
|
t_debug "# running: ", $command, "\n";
|
|
my ($cin, $cout, $cerr);
|
|
$cerr = gensym();
|
|
my $pid = open3($cin, $cout, $cerr, $command);
|
|
waitpid( $pid, 0 );
|
|
my $status = $? >> 8;
|
|
my @cstdout = <$cout>;
|
|
my @cstderr = <$cerr>;
|
|
return { status => $status, stdout => \@cstdout, stderr => \@cstderr };
|
|
}
|
|
|
|
my $ab_path = catfile $vars->{bindir}, "ab";
|
|
|
|
my $http_url = Apache::TestRequest::module2url("core", {scheme => 'http', path => '/'});
|
|
my $http_results = run_and_gather_output("ASAN_OPTIONS='detect_leaks=0' $ab_path -B 127.0.0.1 -q -n 10 $http_url");
|
|
ok $http_results->{status}, 0;
|
|
ok scalar(@{$http_results->{stderr}}), 0;
|
|
|
|
if ($vars->{ssl_module_name}) {
|
|
my $https_url = Apache::TestRequest::module2url($vars->{ssl_module_name}, {scheme => 'https', path => '/'});
|
|
my $https_results = run_and_gather_output("ASAN_OPTIONS='detect_leaks=0' $ab_path -B 127.0.0.1 -q -n 10 $https_url");
|
|
ok $https_results->{status}, 0;
|
|
ok (scalar(@{$https_results->{stderr}}), 0,
|
|
"https had stderr output:" . Dumper $https_results->{stderr});
|
|
|
|
#XXX: For some reason, stderr is getting pushed into stdout. This test will at least catch known SSL failures
|
|
ok (scalar(grep(/SSL.*(fail|err)/i, @{$https_results->{stdout}})), 0,
|
|
"https stdout had some possibly alarming content:" . Dumper $https_results->{stdout} );
|
|
}
|