Skip to content

Commit

Permalink
moved SO_REUSEPORT tests into morbo.t
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Dec 4, 2013
1 parent a82a5be commit 9ca2244
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 32 deletions.
32 changes: 0 additions & 32 deletions t/mojo/daemon.t
Expand Up @@ -7,14 +7,12 @@ BEGIN {

use Test::More;
use File::Spec::Functions 'catdir';
use IO::Socket::INET;
use Mojo;
use Mojo::IOLoop;
use Mojo::Log;
use Mojo::Server::Daemon;
use Mojo::UserAgent;
use Mojolicious;
use Socket qw(SO_REUSEPORT SOL_SOCKET);

# Timeout
{
Expand Down Expand Up @@ -243,34 +241,4 @@ ok $tx->success, 'successful';
is $tx->res->code, 200, 'right status';
is $tx->res->body, 'Whatever!', 'right content';

# SO_REUSEPORT
SKIP: {
skip 'SO_REUSEPORT support required!', 2 unless eval { _probe() };

$port = Mojo::IOLoop->generate_port;
$daemon = Mojo::Server::Daemon->new(
listen => ["http://127.0.0.1:$port"],
silent => 1
)->start;
ok !$daemon->ioloop->acceptor($daemon->acceptors->[0])
->handle->getsockopt(SOL_SOCKET, SO_REUSEPORT),
'no SO_REUSEPORT socket option';
$daemon = Mojo::Server::Daemon->new(
listen => ["http://127.0.0.1:$port?reuse=1"],
silent => 1
);
$daemon->start;
ok $daemon->ioloop->acceptor($daemon->acceptors->[0])
->handle->getsockopt(SOL_SOCKET, SO_REUSEPORT),
'SO_REUSEPORT socket option';
}

sub _probe {
IO::Socket::INET->new(
Listen => 1,
LocalPort => Mojo::IOLoop->generate_port,
ReusePort => 1
);
}

done_testing();
32 changes: 32 additions & 0 deletions t/mojo/morbo.t
Expand Up @@ -15,9 +15,11 @@ use File::Temp 'tempdir';
use FindBin;
use IO::Socket::INET;
use Mojo::IOLoop;
use Mojo::Server::Daemon;
use Mojo::Server::Morbo;
use Mojo::UserAgent;
use Mojo::Util 'spurt';
use Socket qw(SO_REUSEPORT SOL_SOCKET);

# Prepare script
my $dir = tempdir CLEANUP => 1;
Expand Down Expand Up @@ -117,6 +119,36 @@ is $tx->res->body, 'Hello!', 'right content';
kill 'INT', $pid;
sleep 1 while _port($port);

# SO_REUSEPORT
SKIP: {
skip 'SO_REUSEPORT support required!', 2 unless eval { _reuse_port() };

my $port = Mojo::IOLoop->generate_port;
my $daemon = Mojo::Server::Daemon->new(
listen => ["http://127.0.0.1:$port"],
silent => 1
)->start;
ok !$daemon->ioloop->acceptor($daemon->acceptors->[0])
->handle->getsockopt(SOL_SOCKET, SO_REUSEPORT),
'no SO_REUSEPORT socket option';
$daemon = Mojo::Server::Daemon->new(
listen => ["http://127.0.0.1:$port?reuse=1"],
silent => 1
);
$daemon->start;
ok $daemon->ioloop->acceptor($daemon->acceptors->[0])
->handle->getsockopt(SOL_SOCKET, SO_REUSEPORT),
'SO_REUSEPORT socket option';
}

sub _port { IO::Socket::INET->new(PeerAddr => '127.0.0.1', PeerPort => shift) }

sub _reuse_port {
IO::Socket::INET->new(
Listen => 1,
LocalPort => Mojo::IOLoop->generate_port,
ReusePort => 1
);
}

done_testing();

0 comments on commit 9ca2244

Please sign in to comment.