1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
# $Id: 01-resolver.t 673 2007-08-01 09:56:57Z olaf $ -*-perl-*-
use Test::More tests => 45;
use strict;
use File::Spec;
BEGIN { use_ok('Net::DNS'); }
my $res = Net::DNS::Resolver->new();
ok($res, 'new() returned something');
isa_ok($res, 'Net::DNS::Resolver', 'new() returns an object of the correct class.');
ok(scalar $res->nameservers, 'nameservers() works');
my $searchlist = [qw(t.net-dns.org t2.net-dns.org)];
is_deeply([$res->searchlist(@$searchlist)], $searchlist, 'setting searchlist returns correctly.');
is_deeply([$res->searchlist], $searchlist, 'setting searchlist stickts.');
my %good_input = (
port => 54,
srcaddr => '10.1.0.1',
srcport => 53,
domain => 'net-dns.org',
retrans => 6,
retry => 5,
usevc => 1,
stayopen => 1,
igntc => 1,
recurse => 0,
defnames => 0,
dnsrch => 0,
debug => 1,
tcp_timeout => 60,
udp_timeout => 60,
persistent_tcp => 1,
dnssec => 1,
force_v4 => 1,
);
#diag "\n\nIf you do not have Net::DNS::SEC installed you will see a warning.\n";
#diag "It is safe to ignore this\n";
while (my ($param, $value) = each %good_input) {
open (TMPFH,">/dev/null") or die "can't open /dev/null";
local *STDERR=*TMPFH;
is_deeply($res->$param($value), $value, "setting $param returns correctly");
is_deeply($res->$param(), $value, "setting $param sticks");
close (TMPFH);
}
my %bad_input = (
tsig_rr => 'set',
errorstring => 'set',
answerfrom => 'set',
answersize => 'set',
querytime => 'set',
axfr_sel => 'set',
axfr_rr => 'set',
axfr_soa_count => 'set',
udppacketsize => 'set',
cdflag => 'set',
);
# Some people try to run these on private address space."
use Net::IP;
use IO::Socket::INET;
my $sock = IO::Socket::INET->new(PeerAddr => '193.0.14.129', # k.root-servers.net.
PeerPort => '25',
Proto => 'udp');
my $ip=Net::IP->new(inet_ntoa($sock->sockaddr));
SKIP: {
skip 'Online tests disabled.', 3
unless -e 't/online.enabled';
skip 'Tests may not run succesful from private IP('.$ip->ip() .')', 3
if ($ip->iptype() ne "PUBLIC");
my $res = Net::DNS::Resolver->new;
$res->nameservers('a.t.net-dns.org');
my $ip = ($res->nameservers)[0];
is($ip, '10.0.1.128', 'Nameservers() looks up IP.') or
diag ($res->errorstring . $res->print) ;
$res->nameservers('cname.t.net-dns.org');
$ip = ($res->nameservers)[0];
is($ip, '10.0.1.128', 'Nameservers() looks up cname.') or
diag ($res->errorstring . $res->print) ;
# Test to trigger a bug in release 0.59 of Question.pm
# (rt.cpan.org #28198) (modification of $_ value in various
# places
my $die = 0;
undef ($res); # default values again
$res = Net::DNS::Resolver->new();
eval{
local $^W = 1;
local $SIG{__DIE__} = sub { $die++ };
for (0) # Sets $_ to 0
{
my $q=$res->send("net-dns.org","SOA");
}
};
is($die, 0, 'No deaths because of \$_');
}
|