aboutsummaryrefslogtreecommitdiff
path: root/regress/tests/httpd.pl
diff options
context:
space:
mode:
Diffstat (limited to 'regress/tests/httpd.pl')
-rw-r--r--regress/tests/httpd.pl73
1 files changed, 73 insertions, 0 deletions
diff --git a/regress/tests/httpd.pl b/regress/tests/httpd.pl
new file mode 100644
index 0000000..481a587
--- /dev/null
+++ b/regress/tests/httpd.pl
@@ -0,0 +1,73 @@
+#!/usr/bin/perl
+# $OpenBSD: httpd.pl,v 1.1 2015/07/16 16:35:57 reyk Exp $
+
+# Copyright (c) 2010-2015 Alexander Bluhm <bluhm@openbsd.org>
+# Copyright (c) 2015 Reyk Floeter <reyk@openbsd.org>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+use strict;
+use warnings;
+use Socket;
+use Socket6;
+
+use Client;
+use Httpd;
+require 'funcs.pl';
+
+sub usage {
+ die "usage: httpd.pl chroot [test-args.pl]\n";
+}
+
+my $testfile;
+our %args;
+if (@ARGV and -f $ARGV[-1]) {
+ $testfile = pop;
+ do $testfile
+ or die "Do test file $testfile failed: ", $@ || $!;
+}
+@ARGV == 1 or usage();
+
+my $redo = $args{lengths} && @{$args{lengths}};
+$redo = 0 if $args{client}{http_vers}; # run only one persistent connection
+my($sport, $rport) = find_ports(num => 2);
+my $d = Httpd->new(
+ chroot => $ARGV[0],
+ listendomain => AF_INET,
+ listenaddr => "127.0.0.1",
+ listenport => $rport,
+ connectdomain => AF_INET,
+ connectaddr => "127.0.0.1",
+ connectport => $sport,
+ %{$args{httpd}},
+ testfile => $testfile,
+);
+my $c = Client->new(
+ chroot => $ARGV[0],
+ func => \&http_client,
+ connectdomain => AF_INET,
+ connectaddr => "127.0.0.1",
+ connectport => $rport,
+ %{$args{client}},
+ testfile => $testfile,
+) unless $args{client}{noclient};
+
+$d->run;
+$d->up;
+$c->run->up unless $args{client}{noclient};
+
+$c->down unless $args{client}{noclient};
+$d->kill_child;
+$d->down;
+
+check_logs($c, $d, %args);