The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=pod

=head1 NAME

t/tcp.t - Net::Prober test suite

=head1 DESCRIPTION

Try to probe localhost via TCP/UDP connections.
It doesn't matter if it succeeds or not.
Some ports might be closed.

=cut

use strict;
use warnings;

use Test::More tests => 6;
use Net::Prober;

my $result = Net::Prober::probe_tcp({
    proto   => 'tcp',
    port    => '22',
    host    => 'localhost',
    timeout => 0.5,
});

ok($result && ref $result eq 'HASH', 'probe_tcp() returns a hashref');
ok(exists $result->{ok} && $result->{ok} =~ m{^[01]$},
    "TCP probe result: '$result->{ok}'"
);

ok(exists $result->{time}
    && $result->{time} > 0.0
    && $result->{time} <= 1.0,
    "Got an elapsed time too ($result->{time}s)",
);

$result = Net::Prober::probe_tcp({
    proto   => 'udp',
    port    => 'echo',
    host    => 'localhost',
    timeout => 0.5,
});

ok($result && ref $result eq 'HASH', 'probe_tcp() returns a hashref');
ok(exists $result->{ok} && $result->{ok} =~ m{^[01]$},
    "UDP probe result: '$result->{ok}'"
);

ok(exists $result->{time}
    && $result->{time} > 0.0
    && $result->{time} <= 1.0,
    "Got an elapsed time too ($result->{time}s)",
);