jdk/test/java/net/InetAddress/IsReachableViaLoopbackTest.java
author chegar
Mon, 12 Oct 2015 10:33:51 +0100
changeset 33303 0c109c1c04c5
parent 32845 e630c3008f2c
child 38471 7baac1d79ed1
permissions -rw-r--r--
8139352: java/net/InetAddress/getOriginalHostName.java fails to compile Reviewed-by: mchung, henryjen
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32845
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     1
import java.io.*;
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     2
import java.net.*;
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     3
import java.util.*;
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     4
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     5
/**
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     6
 * @test
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     7
 * @bug 8135305
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     8
 * @summary ensure we can't ping external hosts via loopback if
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
     9
 */
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    10
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    11
public class IsReachableViaLoopbackTest {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    12
    public static void main(String[] args) {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    13
        try {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    14
            InetAddress addr = InetAddress.getByName("localhost");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    15
            InetAddress remoteAddr = InetAddress.getByName("bugs.openjdk.java.net");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    16
            if (!addr.isReachable(10000))
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    17
                throw new RuntimeException("Localhost should always be reachable");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    18
            NetworkInterface inf = NetworkInterface.getByInetAddress(addr);
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    19
            if (inf != null) {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    20
                if (!addr.isReachable(inf, 20, 10000)) {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    21
                    throw new RuntimeException("Localhost should always be reachable");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    22
                } else {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    23
                    System.out.println(addr + "  is reachable");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    24
                }
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    25
                if (remoteAddr.isReachable(inf, 20, 10000)) {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    26
                    throw new RuntimeException(remoteAddr + " is reachable");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    27
                } else {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    28
                    System.out.println(remoteAddr + "  is NOT reachable");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    29
                }
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    30
            } else {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    31
                System.out.println("inf == null");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    32
            }
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    33
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    34
        } catch (IOException e) {
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    35
            throw new RuntimeException("Unexpected exception:" + e);
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    36
        }
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    37
        System.out.println("IsReachableViaLoopbackTest EXIT");
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    38
    }
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    39
}
e630c3008f2c 8135305: InetAddress.isReachable reports true when loopback interface is specified
robm
parents:
diff changeset
    40