test/jdk/java/net/NetworkInterface/NetworkInterfaceRetrievalTests.java
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 47216 71c04702a3d5
child 58679 9c3209ff7550
--- a/test/jdk/java/net/NetworkInterface/NetworkInterfaceRetrievalTests.java	Thu Oct 17 20:27:44 2019 +0100
+++ b/test/jdk/java/net/NetworkInterface/NetworkInterfaceRetrievalTests.java	Thu Oct 17 20:53:35 2019 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,22 +23,35 @@
 
 /**
  * @test
- * @bug 8179559
+ * @bug 8179559 8225239
+ * @library /test/lib
+ * @modules java.base/java.net:open
  */
 
 import java.net.InetAddress;
 import java.net.NetworkInterface;
 import java.util.Enumeration;
+import java.lang.reflect.Method;
+import jdk.test.lib.Platform;
 
 public class NetworkInterfaceRetrievalTests {
     public static void main(String[] args) throws Exception {
         int checkFailureCount = 0;
 
+        Method isBound = NetworkInterface.class.getDeclaredMethod("isBoundInetAddress", InetAddress.class);
+        isBound.setAccessible(true);
+
         try {
             Enumeration<NetworkInterface> en = NetworkInterface
                     .getNetworkInterfaces();
             while (en.hasMoreElements()) {
                 NetworkInterface ni = en.nextElement();
+
+                //JDK-8230132: Should not test on Windows with Teredo Tunneling Pseudo-Interface
+                String dName = ni.getDisplayName();
+                if (Platform.isWindows() && dName != null && dName.contains("Teredo"))
+                    continue;
+
                 Enumeration<InetAddress> addrs = ni.getInetAddresses();
                 System.out.println("############ Checking network interface + "
                         + ni + " #############");
@@ -58,6 +71,13 @@
                         checkFailureCount++;
                     }
 
+                    // Any bound address should return true when calling isBoundInetAddress
+                    if (!((boolean)isBound.invoke(null, addr))) {
+                        System.out.println("Retreived net if bound addr " + addr
+                                + "NOT shown as bound using NetworkInterface.isBoundAddress "
+                                + "***********");
+                        checkFailureCount++;
+                    }
                 }
             }