jdk/test/java/net/InetAddress/CheckJNI.java
changeset 44671 d1d011d4654d
parent 7668 d4a77089c587
child 45186 387a39577f09
equal deleted inserted replaced
44670:77e54dd0675f 44671:d1d011d4654d
    22  */
    22  */
    23 
    23 
    24 /* @test
    24 /* @test
    25    @bug 4889870 4890033
    25    @bug 4889870 4890033
    26    @summary java -Xcheck:jni failing in net code on Solaris / [Datagram]Socket.getLocalAddress() failure
    26    @summary java -Xcheck:jni failing in net code on Solaris / [Datagram]Socket.getLocalAddress() failure
       
    27    @library /lib/testlibrary
       
    28    @build jdk.testlibrary.NetworkConfiguration
    27    @run main/othervm -Xcheck:jni CheckJNI
    29    @run main/othervm -Xcheck:jni CheckJNI
    28 */
    30 */
    29 
    31 
    30 import java.net.*;
    32 import java.net.*;
    31 import java.util.*;
    33 import java.util.*;
       
    34 import java.util.stream.Collectors;
       
    35 import jdk.testlibrary.NetworkConfiguration;
    32 
    36 
    33 public class CheckJNI {
    37 public class CheckJNI {
    34     static Socket s;
    38     static Socket s;
    35     static ServerSocket server;
    39     static ServerSocket server;
    36     static DatagramSocket dg1, dg2;
    40     static DatagramSocket dg1, dg2;
    47         System.out.println ("Testing IPv4 DatagramSocket");
    51         System.out.println ("Testing IPv4 DatagramSocket");
    48         dg1 = new DatagramSocket (0, InetAddress.getByName ("127.0.0.1"));
    52         dg1 = new DatagramSocket (0, InetAddress.getByName ("127.0.0.1"));
    49         dg2 = new DatagramSocket (0, InetAddress.getByName ("127.0.0.1"));
    53         dg2 = new DatagramSocket (0, InetAddress.getByName ("127.0.0.1"));
    50         testDatagrams (dg1, dg2);
    54         testDatagrams (dg1, dg2);
    51 
    55 
    52         /* Use NetworkInterface to find link local IPv6 addrs to test */
    56         /* Find link local IPv6 addrs to test */
       
    57         List<Inet6Address> addrs = NetworkConfiguration.probe()
       
    58                 .ip6Addresses()
       
    59                 .filter(Inet6Address::isLinkLocalAddress)
       
    60                 .collect(Collectors.toList());
    53 
    61 
    54         Enumeration ifs = NetworkInterface.getNetworkInterfaces();
    62         server = new ServerSocket(0);
    55         server = new ServerSocket (0);
    63         for (Inet6Address ia6 : addrs) {
       
    64             System.out.println("Address:" + ia6);
       
    65             System.out.println("Testing IPv6 Socket");
       
    66             s = new Socket(ia6, server.getLocalPort());
       
    67             s.close();
    56 
    68 
    57         while (ifs.hasMoreElements()) {
    69             System.out.println("Testing IPv6 DatagramSocket");
    58             NetworkInterface nif = (NetworkInterface)ifs.nextElement();
    70             dg1 = new DatagramSocket(0, ia6);
    59             if (!nif.isUp())
    71             dg2 = new DatagramSocket(0, ia6);
    60                 continue;
    72             testDatagrams(dg1, dg2);
    61             Enumeration addrs = nif.getInetAddresses();
       
    62             while (addrs.hasMoreElements()) {
       
    63                 InetAddress addr = (InetAddress) addrs.nextElement();
       
    64                 if (addr instanceof Inet6Address) {
       
    65                     Inet6Address ia6 = (Inet6Address) addr;
       
    66                     if (ia6.isLinkLocalAddress()) {
       
    67                         System.out.println ("Testing IPv6 Socket");
       
    68                         s = new Socket (ia6, server.getLocalPort());
       
    69                         s.close();
       
    70 
       
    71                         System.out.println ("Testing IPv6 DatagramSocket");
       
    72                         dg1 = new DatagramSocket (0, ia6);
       
    73                         dg2 = new DatagramSocket (0, ia6);
       
    74                         testDatagrams (dg1, dg2);
       
    75                     }
       
    76                 }
       
    77             }
       
    78         }
    73         }
    79         server.close();
    74         server.close();
    80         System.out.println ("OK");
    75         System.out.println ("OK");
    81     }
    76     }
    82 
    77