summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJerry Lundström <lundstrom.jerry@gmail.com>2016-01-05 09:08:41 +0100
committerJerry Lundström <lundstrom.jerry@gmail.com>2016-01-07 11:13:28 +0100
commitbc2e16d167eece20baacf423687bda519171f1be (patch)
tree11636a8151adaaaaa9f67f289e624803dfa8360c /t
parente819588ba44ececba4821f050289345d01c713bb (diff)
Make it possible to run tests without network
Diffstat (limited to 't')
-rw-r--r--t/axfr.t36
-rw-r--r--t/dnssec.t10
-rw-r--r--t/netldns.t166
-rw-r--r--t/optrr.t17
-rw-r--r--t/packet.t3
-rw-r--r--t/regression.t12
-rw-r--r--t/resolver.t124
-rw-r--r--t/rr.t211
-rw-r--r--t/rrlist.t22
-rw-r--r--t/threads.t9
-rw-r--r--t/utils.t22
11 files changed, 356 insertions, 276 deletions
diff --git a/t/axfr.t b/t/axfr.t
index 9ab4f63..5fc28ed 100644
--- a/t/axfr.t
+++ b/t/axfr.t
@@ -3,23 +3,27 @@ use Test::Fatal;
BEGIN { use_ok( 'Net::LDNS' ) }
-my $res = Net::LDNS->new( '46.21.100.115' );
-my $res2 = Net::LDNS->new( '192.36.144.107' );
+SKIP: {
+ skip 'no network', 3 if $ENV{TEST_NO_NETWORK};
-my $counter = 0;
-my $return = $res->axfr( 'cyberpomo.com',
- sub {
- my ($rr) = @_;
- $counter += 1;
- if ($rr->type eq 'CNAME') {
- return 0;
- } else {
- return 1;
- }
- });
-ok(!$return, 'Terminated early');
-ok(($counter > 1), 'Saw more than one entry (' . $counter . ')');
+ my $res = Net::LDNS->new( '46.21.100.115' );
+ my $res2 = Net::LDNS->new( '192.36.144.107' );
-like( exception { $res2->axfr( 'iis.se', sub { return 1 })}, qr/NOTAUTH/, 'Expected exception');
+ my $counter = 0;
+ my $return = $res->axfr( 'cyberpomo.com',
+ sub {
+ my ($rr) = @_;
+ $counter += 1;
+ if ($rr->type eq 'CNAME') {
+ return 0;
+ } else {
+ return 1;
+ }
+ });
+ ok(!$return, 'Terminated early');
+ ok(($counter > 1), 'Saw more than one entry (' . $counter . ')');
+
+ like( exception { $res2->axfr( 'iis.se', sub { return 1 })}, qr/NOTAUTH/, 'Expected exception');
+}
done_testing;
diff --git a/t/dnssec.t b/t/dnssec.t
index 3832f46..37f16ee 100644
--- a/t/dnssec.t
+++ b/t/dnssec.t
@@ -63,11 +63,15 @@ my $nsec3 = Net::LDNS::RR->new('NR2E513KM693MBTNVHH56ENF54F886T0.com. 86400 IN N
isa_ok($nsec3, 'Net::LDNS::RR::NSEC3');
ok($nsec3->covers('xx-example.com'), 'Covers xx-example.com');
-$res = Net::LDNS->new( '212.247.7.228' );
-$res->dnssec( 1 );
-my $p1 = eval { $res->query('www.iis.se', 'A') };
SKIP: {
+ skip 'no network', 3 if $ENV{TEST_NO_NETWORK};
+
+ $res = Net::LDNS->new( '212.247.7.228' );
+ $res->dnssec( 1 );
+ my $p1 = eval { $res->query('www.iis.se', 'A') };
+
skip 'Remote server not responding', 3 if not $p1;
+
ok( $p1->needs_edns, 'Needs EDNS0');
ok( $p1->has_edns, 'Alias is there');
ok( ($p1->edns_size > 0), 'EDNS0 size larger than zero' );
diff --git a/t/netldns.t b/t/netldns.t
index 6b56b44..b36e531 100644
--- a/t/netldns.t
+++ b/t/netldns.t
@@ -7,89 +7,93 @@ BEGIN { use_ok( 'Net::LDNS' ) }
my $lib_v = version->parse(Net::LDNS::lib_version());
ok( $lib_v >= v1.6.16, 'ldns version at least 1.6.16' );
-my $s = Net::LDNS->new( '8.8.8.8' );
-isa_ok( $s, 'Net::LDNS' );
-my $p = $s->query( 'nic.se', 'MX' );
-isa_ok( $p, 'Net::LDNS::Packet' );
-is( $p->rcode, 'NOERROR', 'expected rcode' );
-
-my $p2 = $s->query( 'iis.se', 'NS', 'IN' );
-isa_ok( $p2, 'Net::LDNS::Packet' );
-is( $p2->rcode, 'NOERROR' );
-is( $p2->opcode, 'QUERY', 'expected opcode' );
-my $pround = Net::LDNS::Packet->new_from_wireformat( $p2->wireformat );
-isa_ok( $pround, 'Net::LDNS::Packet' );
-is( $pround->opcode, $p2->opcode, 'roundtrip opcode OK' );
-is( $pround->rcode, $p2->rcode, 'roundtrip rcode OK' );
-
-ok( $p2->id() > 0, 'packet ID set' );
-ok( $p2->qr(), 'QR bit set' );
-ok( !$p2->aa(), 'AA bit not set' );
-ok( !$p2->tc(), 'TC bit not set' );
-ok( $p2->rd(), 'RD bit set' );
-ok( !$p2->cd(), 'CD bit not set' );
-ok( $p2->ra(), 'RA bit set' );
-ok( !$p2->ad(), 'AD bit not set' );
-ok( !$p2->do(), 'DO bit not set' );
-
-ok( $p2->querytime > 0 );
-is( $p2->answerfrom, '8.8.8.8', 'expected answerfrom' );
-$p2->answerfrom( '1.2.3.4' );
-is( $p2->answerfrom, '1.2.3.4', 'setting answerfrom works' );
-
-ok($p2->timestamp > 0, 'has a timestamp to begin with');
-$p2->timestamp( 4711 );
-is( $p2->timestamp, 4711, 'setting timestamp works' );
-$p2->timestamp( 4711.4711 );
-ok( $p2->timestamp - 4711.4711 < 0.0001, 'setting timestamp works with microseconds too' );
-
-eval { $s->query( 'nic.se', 'gurksallad', 'CH' ) };
-like( $@, qr/Unknown RR type: gurksallad/ );
-
-eval { $s->query( 'nic.se', 'SOA', 'gurksallad' ) };
-like( $@, qr/Unknown RR class: gurksallad/ );
-
-eval { $s->query( 'nic.se', 'soa', 'IN' ) };
-ok( !$@ );
-
-my @answer = $p2->answer;
-is( scalar( @answer ), 3, 'expected number of NS records in answer' );
-my %known_ns = map { $_ => 1 } qw[ns.nic.se. i.ns.se. ns3.nic.se.];
-foreach my $rr ( @answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::NS' );
- is( lc($rr->owner), 'iis.se.', 'expected owner name' );
- ok( $rr->ttl > 0, 'positive TTL (' . $rr->ttl . ')' );
- is( $rr->type, 'NS', 'type is NS' );
- is( $rr->class, 'IN', 'class is IN' );
- ok( $known_ns{ lc($rr->nsdname) }, 'known nsdname (' . $rr->nsdname . ')' );
+SKIP: {
+ skip 'no network', 59 if $ENV{TEST_NO_NETWORK};
+
+ my $s = Net::LDNS->new( '8.8.8.8' );
+ isa_ok( $s, 'Net::LDNS' );
+ my $p = $s->query( 'nic.se', 'MX' );
+ isa_ok( $p, 'Net::LDNS::Packet' );
+ is( $p->rcode, 'NOERROR', 'expected rcode' );
+
+ my $p2 = $s->query( 'iis.se', 'NS', 'IN' );
+ isa_ok( $p2, 'Net::LDNS::Packet' );
+ is( $p2->rcode, 'NOERROR' );
+ is( $p2->opcode, 'QUERY', 'expected opcode' );
+ my $pround = Net::LDNS::Packet->new_from_wireformat( $p2->wireformat );
+ isa_ok( $pround, 'Net::LDNS::Packet' );
+ is( $pround->opcode, $p2->opcode, 'roundtrip opcode OK' );
+ is( $pround->rcode, $p2->rcode, 'roundtrip rcode OK' );
+
+ ok( $p2->id() > 0, 'packet ID set' );
+ ok( $p2->qr(), 'QR bit set' );
+ ok( !$p2->aa(), 'AA bit not set' );
+ ok( !$p2->tc(), 'TC bit not set' );
+ ok( $p2->rd(), 'RD bit set' );
+ ok( !$p2->cd(), 'CD bit not set' );
+ ok( $p2->ra(), 'RA bit set' );
+ ok( !$p2->ad(), 'AD bit not set' );
+ ok( !$p2->do(), 'DO bit not set' );
+
+ ok( $p2->querytime > 0 );
+ is( $p2->answerfrom, '8.8.8.8', 'expected answerfrom' );
+ $p2->answerfrom( '1.2.3.4' );
+ is( $p2->answerfrom, '1.2.3.4', 'setting answerfrom works' );
+
+ ok($p2->timestamp > 0, 'has a timestamp to begin with');
+ $p2->timestamp( 4711 );
+ is( $p2->timestamp, 4711, 'setting timestamp works' );
+ $p2->timestamp( 4711.4711 );
+ ok( $p2->timestamp - 4711.4711 < 0.0001, 'setting timestamp works with microseconds too' );
+
+ eval { $s->query( 'nic.se', 'gurksallad', 'CH' ) };
+ like( $@, qr/Unknown RR type: gurksallad/ );
+
+ eval { $s->query( 'nic.se', 'SOA', 'gurksallad' ) };
+ like( $@, qr/Unknown RR class: gurksallad/ );
+
+ eval { $s->query( 'nic.se', 'soa', 'IN' ) };
+ ok( !$@ );
+
+ my @answer = $p2->answer;
+ is( scalar( @answer ), 3, 'expected number of NS records in answer' );
+ my %known_ns = map { $_ => 1 } qw[ns.nic.se. i.ns.se. ns3.nic.se.];
+ foreach my $rr ( @answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::NS' );
+ is( lc($rr->owner), 'iis.se.', 'expected owner name' );
+ ok( $rr->ttl > 0, 'positive TTL (' . $rr->ttl . ')' );
+ is( $rr->type, 'NS', 'type is NS' );
+ is( $rr->class, 'IN', 'class is IN' );
+ ok( $known_ns{ lc($rr->nsdname) }, 'known nsdname (' . $rr->nsdname . ')' );
+ }
+
+ my %known_mx = map { $_ => 1 } qw[mx1.iis.se. mx2.iis.se. ];
+ foreach my $rr ( $p->answer ) {
+ is( $rr->preference, 10, 'expected MX preference' );
+ ok( $known_mx{ lc($rr->exchange) }, 'known MX exchange (' . $rr->exchange . ')' );
+ }
+
+ my $lroot = Net::LDNS->new( '199.7.83.42' );
+ my $se = $lroot->query( 'se', 'NS' );
+
+ is( scalar( $se->question ), 1, 'one question' );
+ is( scalar( $se->answer ), 0, 'zero answers' );
+ is( scalar( $se->authority ), 9, 'nine authority' );
+ my $add = scalar( $se->additional );
+ ok( $add == 16 || $add == 15, 'sixteen additional' );
+
+ my $rr = Net::LDNS::RR->new_from_string(
+ 'se. 172800 IN SOA catcher-in-the-rye.nic.se. registry-default.nic.se. 2013111305 1800 1800 864000 7200' );
+ my $rr2 =
+ Net::LDNS::RR->new( 'se. 172800 IN TXT "SE zone update: 2013-11-13 15:08:28 +0000 (EPOCH 1384355308) (auto)"' );
+ ok( $se->unique_push( 'answer', $rr ), 'unique_push returns ok' );
+ is( $se->answer, 1, 'one record in answer section' );
+ ok( !$se->unique_push( 'answer', $rr ), 'unique_push returns false' );
+ is( $se->answer, 1, 'still one record in answer section' );
+ ok( $se->unique_push( 'ansWer', $rr2 ), 'unique_push returns ok again' );
+ is( $se->answer, 2, 'two records in answer section' );
}
-my %known_mx = map { $_ => 1 } qw[mx1.iis.se. mx2.iis.se. ];
-foreach my $rr ( $p->answer ) {
- is( $rr->preference, 10, 'expected MX preference' );
- ok( $known_mx{ lc($rr->exchange) }, 'known MX exchange (' . $rr->exchange . ')' );
-}
-
-my $lroot = Net::LDNS->new( '199.7.83.42' );
-my $se = $lroot->query( 'se', 'NS' );
-
-is( scalar( $se->question ), 1, 'one question' );
-is( scalar( $se->answer ), 0, 'zero answers' );
-is( scalar( $se->authority ), 9, 'nine authority' );
-my $add = scalar( $se->additional );
-ok( $add == 16 || $add == 15, 'sixteen additional' );
-
-my $rr = Net::LDNS::RR->new_from_string(
- 'se. 172800 IN SOA catcher-in-the-rye.nic.se. registry-default.nic.se. 2013111305 1800 1800 864000 7200' );
-my $rr2 =
- Net::LDNS::RR->new( 'se. 172800 IN TXT "SE zone update: 2013-11-13 15:08:28 +0000 (EPOCH 1384355308) (auto)"' );
-ok( $se->unique_push( 'answer', $rr ), 'unique_push returns ok' );
-is( $se->answer, 1, 'one record in answer section' );
-ok( !$se->unique_push( 'answer', $rr ), 'unique_push returns false' );
-is( $se->answer, 1, 'still one record in answer section' );
-ok( $se->unique_push( 'ansWer', $rr2 ), 'unique_push returns ok again' );
-is( $se->answer, 2, 'two records in answer section' );
-
my $made = Net::LDNS::Packet->new( 'foo.com', 'SOA', 'IN' );
isa_ok( $made, 'Net::LDNS::Packet' );
diff --git a/t/optrr.t b/t/optrr.t
index fc38dd4..a9cc93f 100644
--- a/t/optrr.t
+++ b/t/optrr.t
@@ -2,13 +2,16 @@ use Test::More;
use_ok('Net::LDNS');
-my $r = Net::LDNS->new('192.5.6.30');
-isa_ok($r, 'Net::LDNS');
-ok($r->dnssec(1), 'DO flag set.');
-
-my $p = $r->query('net', 'SOA');
SKIP: {
- skip "Remote server not responding." if not $p;
+ skip 'no network', 8 if $ENV{TEST_NO_NETWORK};
+
+ my $r = Net::LDNS->new('192.5.6.30');
+ isa_ok($r, 'Net::LDNS');
+ ok($r->dnssec(1), 'DO flag set.');
+
+ my $p = $r->query('net', 'SOA');
+
+ skip 'Remote server not responding.', 6 if not $p;
isa_ok($p, 'Net::LDNS::Packet');
my $rr = $p->opt_rr;
@@ -19,4 +22,4 @@ SKIP: {
ok(($rr->edns_z & 0x8000), 'DO bit is set in flags.');
}
-done_testing; \ No newline at end of file
+done_testing;
diff --git a/t/packet.t b/t/packet.t
index 03ce7cb..cf97bb5 100644
--- a/t/packet.t
+++ b/t/packet.t
@@ -28,5 +28,4 @@ is($p->answerfrom, undef, 'No answerfrom');
$p->answerfrom('127.0.0.1');
is($p->answerfrom, '127.0.0.1', 'Localhost');
-
-done_testing(); \ No newline at end of file
+done_testing();
diff --git a/t/regression.t b/t/regression.t
index a8abd12..a0290f6 100644
--- a/t/regression.t
+++ b/t/regression.t
@@ -6,8 +6,12 @@ use warnings;
BEGIN { use_ok("Net::LDNS")}
-my $s = Net::LDNS->new( '8.8.8.8' );
-isa_ok( $s, 'Net::LDNS' );
-like( exception { $s->query( 'xx--example..', 'A' ) }, qr/Invalid domain name: xx--example../, 'Died on invalid name');
+SKIP: {
+ skip 'no network', 2 if $ENV{TEST_NO_NETWORK};
-done_testing; \ No newline at end of file
+ my $s = Net::LDNS->new( '8.8.8.8' );
+ isa_ok( $s, 'Net::LDNS' );
+ like( exception { $s->query( 'xx--example..', 'A' ) }, qr/Invalid domain name: xx--example../, 'Died on invalid name');
+}
+
+done_testing;
diff --git a/t/resolver.t b/t/resolver.t
index c098402..15efb06 100644
--- a/t/resolver.t
+++ b/t/resolver.t
@@ -2,77 +2,89 @@ use Test::More;
use Net::LDNS;
-my $r = Net::LDNS->new( '8.8.8.8' );
+SKIP: {
+ skip 'no network', 20 if $ENV{TEST_NO_NETWORK};
-$r->recurse( 0 );
-ok( !$r->recurse, 'recursive off' );
-$r->recurse( 1 );
-ok( $r->recurse, 'recursive on' );
+ my $r = Net::LDNS->new( '8.8.8.8' );
-$r->retrans( 17 );
-is( $r->retrans, 17, 'retrans set' );
+ $r->recurse( 0 );
+ ok( !$r->recurse, 'recursive off' );
+ $r->recurse( 1 );
+ ok( $r->recurse, 'recursive on' );
-$r->retry( 17 );
-is( $r->retry, 17, 'retry set' );
+ $r->retrans( 17 );
+ is( $r->retrans, 17, 'retrans set' );
-$r->debug( 1 );
-ok( $r->debug, 'debug set' );
-$r->debug( 0 );
-ok( !$r->debug, 'debug unset' );
+ $r->retry( 17 );
+ is( $r->retry, 17, 'retry set' );
-$r->dnssec( 1 );
-ok( $r->dnssec, 'dnssec set' );
-$r->dnssec( 0 );
-ok( !$r->dnssec, 'dnssec unset' );
+ $r->debug( 1 );
+ ok( $r->debug, 'debug set' );
+ $r->debug( 0 );
+ ok( !$r->debug, 'debug unset' );
-$r->cd( 1 );
-ok( $r->cd, 'dnssec set' );
-$r->cd( 0 );
-ok( !$r->cd, 'dnssec unset' );
+ $r->dnssec( 1 );
+ ok( $r->dnssec, 'dnssec set' );
+ $r->dnssec( 0 );
+ ok( !$r->dnssec, 'dnssec unset' );
-$r->usevc( 1 );
-ok( $r->usevc, 'usevc set' );
-$r->usevc( 0 );
-ok( !$r->usevc, 'usevc unset' );
+ $r->cd( 1 );
+ ok( $r->cd, 'dnssec set' );
+ $r->cd( 0 );
+ ok( !$r->cd, 'dnssec unset' );
-$r->igntc( 1 );
-ok( $r->igntc, 'igntc set' );
-$r->igntc( 0 );
-ok( !$r->igntc, 'igntc unset' );
+ $r->usevc( 1 );
+ ok( $r->usevc, 'usevc set' );
+ $r->usevc( 0 );
+ ok( !$r->usevc, 'usevc unset' );
-$r->edns_size( 4711 );
-is($r->edns_size, 4711 , 'ENDS0 UDP size set');
-$r->edns_size( 0 );
-is($r->edns_size, 0 , 'ENDS0 UDP size set to zero');
+ $r->igntc( 1 );
+ ok( $r->igntc, 'igntc set' );
+ $r->igntc( 0 );
+ ok( !$r->igntc, 'igntc unset' );
-is($r->timeout, 5, 'Expected default timeout');
-$r->timeout(3.33);
-ok(($r->timeout - 3.33) < 0.01, 'Expected set timeout');
+ $r->edns_size( 4711 );
+ is($r->edns_size, 4711 , 'ENDS0 UDP size set');
+ $r->edns_size( 0 );
+ is($r->edns_size, 0 , 'ENDS0 UDP size set to zero');
-my $addr = '192.0.2.1'; # Reserved RFC5737
-ok($r->source($addr), "Source set.");
-is($r->source, $addr, 'Source got.');
+ is($r->timeout, 5, 'Expected default timeout');
+ $r->timeout(3.33);
+ ok(($r->timeout - 3.33) < 0.01, 'Expected set timeout');
+
+ my $addr = '192.0.2.1'; # Reserved RFC5737
+ ok($r->source($addr), "Source set.");
+ is($r->source, $addr, 'Source got.');
+}
subtest 'recursion' => sub {
- my $r = Net::LDNS->new( '8.8.4.4' );
- my $p1 = $r->query( 'www.iis.se' );
- is( scalar($p1->answer), 1);
- $r->recurse(0);
- my $p2 = $r->query( 'www.nic.se' );
- is( scalar($p2->answer), 0, 'Got a reply');
- ok(!$p2->rd, 'RD flag set');
+ SKIP: {
+ skip 'no network', 3 if $ENV{TEST_NO_NETWORK};
+
+ my $r = Net::LDNS->new( '8.8.4.4' );
+ my $p1 = $r->query( 'www.iis.se' );
+ is( scalar($p1->answer), 1);
+ $r->recurse(0);
+ my $p2 = $r->query( 'www.nic.se' );
+ is( scalar($p2->answer), 0, 'Got a reply');
+ ok(!$p2->rd, 'RD flag set');
+ }
};
subtest 'global' => sub {
- my $res = new_ok( 'Net::LDNS' );
- my $p = eval { $res->query( 'www.iis.se' ) } ;
-
- if (not $p) {
- diag $@;
- }
- else {
- isa_ok( $p, 'Net::LDNS::Packet' );
- isa_ok( $_, 'Net::LDNS::RR' ) for $p->answer;
+ SKIP: {
+ skip 'no network', 3 if $ENV{TEST_NO_NETWORK};
+
+ my $res = new_ok( 'Net::LDNS' );
+ my $p = eval { $res->query( 'www.iis.se' ) } ;
+
+ if (not $p) {
+ diag $@;
+ }
+ else {
+ isa_ok( $p, 'Net::LDNS::Packet' );
+ isa_ok( $_, 'Net::LDNS::RR' ) for $p->answer;
+ }
}
};
@@ -80,7 +92,7 @@ subtest 'global' => sub {
# my $res = Net::LDNS->new( '194.146.106.22' );
# my $p = eval { $res->query( 'www.iis.se' ) };
# plan skip_all => 'No response, cannot test' if not $p;
-#
+#
# is( scalar( $p->answer ), 1, 'answer count in scalar context' );
# is( scalar( $p->authority ), 3, 'authority count in scalar context' );
# is( scalar( $p->additional ), 6, 'additional count in scalar context' );
diff --git a/t/rr.t b/t/rr.t
index b47c6f1..70c5c1f 100644
--- a/t/rr.t
+++ b/t/rr.t
@@ -5,110 +5,143 @@ use MIME::Base64;
BEGIN { use_ok( 'Net::LDNS' ) }
-my $s = Net::LDNS->new( '8.8.8.8' );
+my $s;
+$s = Net::LDNS->new( '8.8.8.8' ) unless $ENV{TEST_NO_NETWORK};
subtest 'rdf' => sub {
- my $p = $s->query( 'iis.se', 'SOA' );
- plan skip_all => 'No response, cannot test' if not $p;
-
- foreach my $rr ( $p->answer ) {
- is( $rr->rd_count, 7 );
- foreach my $n (0..($rr->rd_count-1)) {
- ok(length($rr->rdf($n)) >= 4);
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ my $p = $s->query( 'iis.se', 'SOA' );
+ plan skip_all => 'No response, cannot test' if not $p;
+
+ foreach my $rr ( $p->answer ) {
+ is( $rr->rd_count, 7 );
+ foreach my $n (0..($rr->rd_count-1)) {
+ ok(length($rr->rdf($n)) >= 4);
+ }
+ like( exception { $rr->rdf(7) }, qr/Trying to fetch nonexistent RDATA at position/, 'died on overflow');
}
- like( exception { $rr->rdf(7) }, qr/Trying to fetch nonexistent RDATA at position/, 'died on overflow');
}
};
subtest 'SOA' => sub {
- my $p = $s->query( 'iis.se', 'SOA' );
- plan skip_all => 'No response, cannot test' if not $p;
-
- foreach my $rr ( $p->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::SOA' );
- is( lc($rr->mname), 'ns.nic.se.' );
- is( lc($rr->rname), 'hostmaster.iis.se.' );
- ok( $rr->serial >= 1381471502, 'serial' );
- is( $rr->refresh, 10800, 'refresh' );
- is( $rr->retry, 3600, 'retry' );
- is( $rr->expire, 1814400, 'expire' );
- is( $rr->minimum, 14400, 'minimum' );
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ my $p = $s->query( 'iis.se', 'SOA' );
+ plan skip_all => 'No response, cannot test' if not $p;
+
+ foreach my $rr ( $p->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::SOA' );
+ is( lc($rr->mname), 'ns.nic.se.' );
+ is( lc($rr->rname), 'hostmaster.iis.se.' );
+ ok( $rr->serial >= 1381471502, 'serial' );
+ is( $rr->refresh, 10800, 'refresh' );
+ is( $rr->retry, 3600, 'retry' );
+ is( $rr->expire, 1814400, 'expire' );
+ is( $rr->minimum, 14400, 'minimum' );
+ }
}
};
subtest 'A' => sub {
- my $p = $s->query( 'a.ns.se' );
- plan skip_all => 'No response, cannot test' if not $p;
-
- foreach my $rr ( $p->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::A' );
- is( $rr->address, '192.36.144.107', 'expected address string' );
- is( $rr->type, 'A' );
- is( length($rr->rdf(0)), 4 );
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ my $p = $s->query( 'a.ns.se' );
+ plan skip_all => 'No response, cannot test' if not $p;
+
+ foreach my $rr ( $p->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::A' );
+ is( $rr->address, '192.36.144.107', 'expected address string' );
+ is( $rr->type, 'A' );
+ is( length($rr->rdf(0)), 4 );
+ }
}
};
subtest 'AAAA' => sub {
- $p = $s->query( 'a.ns.se', 'AAAA' );
- plan skip_all => 'No response, cannot test' if not $p;
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ $p = $s->query( 'a.ns.se', 'AAAA' );
+ plan skip_all => 'No response, cannot test' if not $p;
- foreach my $rr ( $p->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::AAAA' );
- is( $rr->address, '2a01:3f0:0:301::53', 'expected address string' );
- is( length($rr->rdf(0)), 16 );
+ foreach my $rr ( $p->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::AAAA' );
+ is( $rr->address, '2a01:3f0:0:301::53', 'expected address string' );
+ is( length($rr->rdf(0)), 16 );
+ }
}
};
subtest 'TXT' => sub {
- my $se = Net::LDNS->new( '192.36.144.107' );
- my $pt = $se->query( 'se', 'TXT' );
- plan skip_all => 'No response, cannot test' if not $pt;
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
- foreach my $rr ( $pt->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::TXT' );
- like( $rr->txtdata, qr/^"SE zone update: / );
+ my $se = Net::LDNS->new( '192.36.144.107' );
+ my $pt = $se->query( 'se', 'TXT' );
+ plan skip_all => 'No response, cannot test' if not $pt;
+
+ foreach my $rr ( $pt->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::TXT' );
+ like( $rr->txtdata, qr/^"SE zone update: / );
+ }
}
};
subtest 'DNSKEY' => sub {
- my $se = Net::LDNS->new( '192.36.144.107' );
- my $pk = $se->query( 'se', 'DNSKEY' );
- plan skip_all => 'No response, cannot test' if not $pk;
-
- foreach my $rr ( $pk->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::DNSKEY' );
- ok( $rr->flags == 256 or $rr->flags == 257 );
- is( $rr->protocol, 3 );
- is( $rr->algorithm, 5 );
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ my $se = Net::LDNS->new( '192.36.144.107' );
+ my $pk = $se->query( 'se', 'DNSKEY' );
+ plan skip_all => 'No response, cannot test' if not $pk;
+
+ foreach my $rr ( $pk->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::DNSKEY' );
+ ok( $rr->flags == 256 or $rr->flags == 257 );
+ is( $rr->protocol, 3 );
+ is( $rr->algorithm, 5 );
+ }
}
};
subtest 'RRSIG' => sub {
- my $se = Net::LDNS->new( '192.36.144.107' );
- my $pr = $se->query( 'se', 'RRSIG' );
- plan skip_all => 'No response, cannot test' if not $pr;
-
- foreach my $rr ( $pr->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::RRSIG' );
- is( $rr->signer, 'se.' );
- is( $rr->labels, 1 );
- if ( $rr->typecovered eq 'DNSKEY' ) {
- is( $rr->keytag, 59747 ); # .SE KSK should not change very often
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ my $se = Net::LDNS->new( '192.36.144.107' );
+ my $pr = $se->query( 'se', 'RRSIG' );
+ plan skip_all => 'No response, cannot test' if not $pr;
+
+ foreach my $rr ( $pr->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::RRSIG' );
+ is( $rr->signer, 'se.' );
+ is( $rr->labels, 1 );
+ if ( $rr->typecovered eq 'DNSKEY' ) {
+ is( $rr->keytag, 59747 ); # .SE KSK should not change very often
+ }
}
}
};
subtest 'NSEC' => sub {
- my $se = Net::LDNS->new( '192.36.144.107' );
- my $pn = $se->query( 'se', 'NSEC' );
- plan skip_all => 'No response, cannot test' if not $pn;
-
- foreach my $rr ( $pn->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::NSEC' );
- ok( $rr->typehref->{TXT} );
- ok( !$rr->typehref->{MX} );
- ok( $rr->typehref->{TXT} );
- is( $rr->typelist, 'NS SOA TXT RRSIG NSEC DNSKEY ' );
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
+
+ my $se = Net::LDNS->new( '192.36.144.107' );
+ my $pn = $se->query( 'se', 'NSEC' );
+ plan skip_all => 'No response, cannot test' if not $pn;
+
+ foreach my $rr ( $pn->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::NSEC' );
+ ok( $rr->typehref->{TXT} );
+ ok( !$rr->typehref->{MX} );
+ ok( $rr->typehref->{TXT} );
+ is( $rr->typelist, 'NS SOA TXT RRSIG NSEC DNSKEY ' );
+ }
}
};
@@ -129,25 +162,29 @@ subtest 'From string' => sub {
};
subtest 'DS' => sub {
- my $se = Net::LDNS->new( '192.36.144.107' );
- my $pd = $se->query( 'nic.se', 'DS' );
- plan skip_all => 'No response, cannot test' if not $pd;
+ SKIP: {
+ skip 'no network', 1 if $ENV{TEST_NO_NETWORK};
- my $nic_key = Net::LDNS::RR->new(
-'nic.se IN DNSKEY 257 3 5 AwEAAdhJAx197qFpGGXuQn8XH0tQpQSfjvLKMcreRvJyO+f3F3weIHR3 6E8DObolHFp+m1YkxsgnHYjUFN4E9sKa38ZXU0oHTSsB3adExJkINA/t INDlKrzUDn4cIbyUCqHNGe0et+lHmjmfZdj62GJlHgVmxizYkoBd7Rg0 wxzEOo7CA3ZadaHuqmVJ2HvqRCoe+5NDsYpnDia7WggvLTe0vorV6kDc u6d5N9AUPwBsR7YUkbetfXMtUebux71kHCGUJdmzp84MeDi9wXYIssjR oTC5wUF2H3I2Mnj5GqdyBwQCdj5otFbRAx3jiMD+ROxXJxOFdFq7fWi1 yPqUf1jpJ+8='
- );
- my $made = Net::LDNS::RR->new_from_string( 'nic.se IN NS a.ns.se' );
- foreach my $rr ( $pd->answer ) {
- isa_ok( $rr, 'Net::LDNS::RR::DS' );
- is( $rr->keytag, 16696 );
- is( $rr->algorithm, 5 );
- ok( $rr->digtype == 1 or $rr->digtype == 2 );
- ok(
- $rr->hexdigest eq '40079ddf8d09e7f10bb248a69b6630478a28ef969dde399f95bc3b39f8cbacd7'
- or $rr->hexdigest eq 'ef5d421412a5eaf1230071affd4f585e3b2b1a60'
+ my $se = Net::LDNS->new( '192.36.144.107' );
+ my $pd = $se->query( 'nic.se', 'DS' );
+ plan skip_all => 'No response, cannot test' if not $pd;
+
+ my $nic_key = Net::LDNS::RR->new(
+ 'nic.se IN DNSKEY 257 3 5 AwEAAdhJAx197qFpGGXuQn8XH0tQpQSfjvLKMcreRvJyO+f3F3weIHR3 6E8DObolHFp+m1YkxsgnHYjUFN4E9sKa38ZXU0oHTSsB3adExJkINA/t INDlKrzUDn4cIbyUCqHNGe0et+lHmjmfZdj62GJlHgVmxizYkoBd7Rg0 wxzEOo7CA3ZadaHuqmVJ2HvqRCoe+5NDsYpnDia7WggvLTe0vorV6kDc u6d5N9AUPwBsR7YUkbetfXMtUebux71kHCGUJdmzp84MeDi9wXYIssjR oTC5wUF2H3I2Mnj5GqdyBwQCdj5otFbRAx3jiMD+ROxXJxOFdFq7fWi1 yPqUf1jpJ+8='
);
- ok( $rr->verify( $nic_key ), 'derived from expected DNSKEY' );
- ok( !$rr->verify( $made ), 'does not match a non-DS non-DNSKEY record' );
+ my $made = Net::LDNS::RR->new_from_string( 'nic.se IN NS a.ns.se' );
+ foreach my $rr ( $pd->answer ) {
+ isa_ok( $rr, 'Net::LDNS::RR::DS' );
+ is( $rr->keytag, 16696 );
+ is( $rr->algorithm, 5 );
+ ok( $rr->digtype == 1 or $rr->digtype == 2 );
+ ok(
+ $rr->hexdigest eq '40079ddf8d09e7f10bb248a69b6630478a28ef969dde399f95bc3b39f8cbacd7'
+ or $rr->hexdigest eq 'ef5d421412a5eaf1230071affd4f585e3b2b1a60'
+ );
+ ok( $rr->verify( $nic_key ), 'derived from expected DNSKEY' );
+ ok( !$rr->verify( $made ), 'does not match a non-DS non-DNSKEY record' );
+ }
}
};
diff --git a/t/rrlist.t b/t/rrlist.t
index 2180328..2b1d40e 100644
--- a/t/rrlist.t
+++ b/t/rrlist.t
@@ -3,15 +3,23 @@ use Devel::Peek;
use Net::LDNS;
-my $s = Net::LDNS->new( '8.8.8.8' );
-my $p = $s->query( 'iis.se', 'SOA' );
+my $rrl = Net::LDNS::Packet->new( 'foo.com', 'SOA', 'IN' )->all;
+$rrl->pop;
-my $rrl = $p->all;
-isa_ok( $rrl, 'Net::LDNS::RRList' );
+SKIP: {
+ skip 'no network', 3 if $ENV{TEST_NO_NETWORK};
+
+ my $s = Net::LDNS->new( '8.8.8.8' );
+ my $p = $s->query( 'iis.se', 'SOA' );
+
+ $rrl = $p->all;
+ isa_ok( $rrl, 'Net::LDNS::RRList' );
+
+ is( $rrl->count, 1, 'one RR in list' );
+ my $rr = $rrl->pop;
+ isa_ok( $rr, 'Net::LDNS::RR::SOA' );
+}
-is( $rrl->count, 1, 'one RR in list' );
-my $rr = $rrl->pop;
-isa_ok( $rr, 'Net::LDNS::RR::SOA' );
is( $rrl->count, 0, 'zero RRs in list' );
my $rr1 = Net::LDNS::RR->new_from_string( 'nic.se IN NS a.ns.se' );
diff --git a/t/threads.t b/t/threads.t
index 708d0c4..43d5be8 100644
--- a/t/threads.t
+++ b/t/threads.t
@@ -2,8 +2,10 @@ use Test::More;
use_ok('Net::LDNS');
-my $can_use_threads = eval 'use threads; 1';
-if ($can_use_threads) {
+SKIP: {
+ my $can_use_threads = eval 'use threads; 1';
+
+ skip 'no network or no threads', 4 if ( $ENV{TEST_NO_NETWORK} || !$can_use_threads );
my $resolver = Net::LDNS->new('8.8.8.8');
isa_ok($resolver, 'Net::LDNS');
@@ -22,7 +24,6 @@ if ($can_use_threads) {
} ) for 1..5;
$_->join for threads->list;
-
}
-done_testing; \ No newline at end of file
+done_testing;
diff --git a/t/utils.t b/t/utils.t
index 72f2dc6..3d9c5e6 100644
--- a/t/utils.t
+++ b/t/utils.t
@@ -2,17 +2,21 @@ use Test::More;
BEGIN { use_ok( 'Net::LDNS' ) }
-my $res = new_ok( 'Net::LDNS', ['8.8.4.4'] );
+SKIP: {
+ skip 'no network', 5 if $ENV{TEST_NO_NETWORK};
-my @addrs = sort $res->name2addr( 'b.ns.se' );
-my $count = $res->name2addr( 'b.ns.se' );
+ my $res = new_ok( 'Net::LDNS', ['8.8.4.4'] );
-is_deeply( \@addrs, [ "192.36.133.107", "2001:67c:254c:301::53" ], 'expected addresses' );
-is( $count, 2, 'expected count' );
+ my @addrs = sort $res->name2addr( 'b.ns.se' );
+ my $count = $res->name2addr( 'b.ns.se' );
-my @names = sort $res->addr2name( '8.8.8.8' );
-$count = $res->addr2name( '8.8.8.8' );
-is_deeply( [map {lc($_)} @names], ['google-public-dns-a.google.com.'], 'expected names' );
-is( $count, 1, 'expected name count' );
+ is_deeply( \@addrs, [ "192.36.133.107", "2001:67c:254c:301::53" ], 'expected addresses' );
+ is( $count, 2, 'expected count' );
+
+ my @names = sort $res->addr2name( '8.8.8.8' );
+ $count = $res->addr2name( '8.8.8.8' );
+ is_deeply( [map {lc($_)} @names], ['google-public-dns-a.google.com.'], 'expected names' );
+ is( $count, 1, 'expected name count' );
+}
done_testing;