# $Id: 01-resolver.t 1055 2012-11-21 23:08:47Z willem $ -*-perl-*- use strict; use Test::More tests => 46; use t::NonFatal; use Net::DNS; my $res = Net::DNS::Resolver->new(); for ($^O) { diag $_ if eval { $res->SUPER::isa("Net::DNS::Resolver::$_") }; } isa_ok( $res, 'Net::DNS::Resolver', 'new() created object' ); 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 sticks.'); 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, cdflag => 0, adflag => 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); } SKIP: { # Test first, if we want online tests at all. skip 'Online tests disabled.', 2 unless -e 't/online.enabled'; skip 'Online tests disabled.', 2 if -e 't/online.disabled'; # Some people try to run these on private address space - test for this case and skip. use IO::Socket::INET; my $sock = IO::Socket::INET->new(PeerAddr => '193.0.14.129', # k.root-servers.net. PeerPort => '53', Proto => 'udp'); my $ip = $sock ? inet_ntoa($sock->sockaddr) : undef; skip "Tests may not succeed from private IP: $ip", 2 if $ip && $ip =~ /^(10|172\.(1[6-9]|2.|30|31)|192.168)\./; NonFatalBegin(); my $res = Net::DNS::Resolver->new(udp_timeout => 3, tcp_timeout => 3); $res->nameservers('a.t.net-dns.org'); $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) ; NonFatalEnd(); }