Reset xxx_convert to empty string if none of 3 utilities is found
[perl.git] / dist / Net-Ping / t / 200_ping_tcp.t
1 use strict;
2
3 BEGIN {
4   if ($ENV{PERL_CORE}) {
5     unless ($ENV{PERL_TEST_Net_Ping}) {
6       print "1..0 # Skip: network dependent test\n";
7         exit;
8     }
9   }
10   unless (eval "require Socket") {
11     print "1..0 \# Skip: no Socket\n";
12     exit;
13   }
14   unless (getservbyname('echo', 'tcp')) {
15     print "1..0 \# Skip: no echo port\n";
16     exit;
17   }
18 }
19
20 # Hopefully this is never a routeable host
21 my $fail_ip = $ENV{NET_PING_FAIL_IP} || "172.29.249.249";
22
23 # Remote network test using tcp protocol.
24 #
25 # NOTE:
26 #   Network connectivity will be required for all tests to pass.
27 #   Firewalls may also cause some tests to fail, so test it
28 #   on a clear network.  If you know you do not have a direct
29 #   connection to remote networks, but you still want the tests
30 #   to pass, use the following:
31 #
32 # $ PERL_CORE=1 make test
33
34 use Test::More tests => 13;
35 BEGIN {use_ok('Net::Ping');}
36
37 my $p = new Net::Ping "tcp",9;
38
39 isa_ok($p, 'Net::Ping', 'new() worked');
40
41 # message_type can't be used
42 eval {
43   $p->message_type();
44 };
45 like($@, qr/message type only supported on 'icmp' protocol/, "message_type() API only concern 'icmp' protocol");
46
47 isnt($p->ping("localhost"), 0, 'Test on the default port');
48
49 # Change to use the more common web port.
50 # This will pull from /etc/services on UNIX.
51 # (Make sure getservbyname works in scalar context.)
52 isnt($p->{port_num} = (getservbyname("http", "tcp") || 80), undef);
53
54 isnt($p->ping("localhost"), 0, 'Test localhost on the web port');
55
56 is($p->ping($fail_ip), 0, "Can't reach $fail_ip");
57
58 # Test a few remote servers
59 # Hopefully they are up when the tests are run.
60
61 if ($p->ping('google.com')) { # check for firewall
62   foreach (qw(google.com www.google.com www.wisc.edu
63               yahoo.com www.yahoo.com www.about.com)) {
64     isnt($p->ping($_), 0, "Can ping $_");
65   }
66 } else {
67  SKIP: {
68     skip "Cannot ping google.com: no TCP connection or firewall", 6;
69   }
70 }