]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/httpd.t
Merge remote-tracking branch 'origin/nntp-tls'
[public-inbox.git] / t / httpd.t
index 45cbcbfd62117f8a3b87918463bf8f243086424d..e085c4b9f502b2bbdae5828ff379ddb332fcbfd9 100644 (file)
--- a/t/httpd.t
+++ b/t/httpd.t
@@ -4,15 +4,13 @@ use strict;
 use warnings;
 use Test::More;
 
-foreach my $mod (qw(Plack::Util Plack::Builder PublicInbox::DS
-                       HTTP::Date HTTP::Status)) {
+foreach my $mod (qw(Plack::Util Plack::Builder HTTP::Date HTTP::Status)) {
        eval "require $mod";
        plan skip_all => "$mod missing for httpd.t" if $@;
 }
 use File::Temp qw/tempdir/;
-use Cwd qw/getcwd/;
-use IO::Socket;
-use Socket qw(SO_KEEPALIVE IPPROTO_TCP TCP_NODELAY);
+use IO::Socket::INET;
+use Socket qw(IPPROTO_TCP);
 require './t/common.perl';
 
 # FIXME: too much setup
@@ -102,6 +100,23 @@ EOF
                'fsck on cloned directory successful');
 }
 
+SKIP: {
+       skip 'TCP_DEFER_ACCEPT is Linux-only', 1 if $^O ne 'linux';
+       my $var = Socket::TCP_DEFER_ACCEPT();
+       defined(my $x = getsockopt($sock, IPPROTO_TCP, $var)) or die;
+       ok(unpack('i', $x) > 0, 'TCP_DEFER_ACCEPT set');
+};
+SKIP: {
+       skip 'SO_ACCEPTFILTER is FreeBSD-only', 1 if $^O ne 'freebsd';
+       if (system('kldstat -m accf_http >/dev/null') != 0) {
+               skip 'accf_http not loaded: kldload accf_http', 1;
+       }
+       require PublicInbox::Daemon;
+       my $var = PublicInbox::Daemon::SO_ACCEPTFILTER();
+       my $x = getsockopt($sock, SOL_SOCKET, $var);
+       like($x, qr/\Ahttpready\0+\z/, 'got httpready accf for HTTP');
+};
+
 done_testing();
 
 1;