# HG changeset patch # User xiaofeya # Date 1450676633 -28800 # Node ID 1d23e916f1890034b064c33b28c4e8a334ade164 # Parent 59801fbd042eb41a10ed1d77dbe4bc2399cd7198 8131155: java/net/NetworkInterface/NetworkInterfaceStreamTest.java failed because of Teredo Tunneling Pseudo-Interface Reviewed-by: amlu, chegar, psandoz diff -r 59801fbd042e -r 1d23e916f189 jdk/test/java/net/NetworkInterface/NetworkInterfaceStreamTest.java --- a/jdk/test/java/net/NetworkInterface/NetworkInterfaceStreamTest.java Mon Dec 21 09:40:00 2015 +0530 +++ b/jdk/test/java/net/NetworkInterface/NetworkInterfaceStreamTest.java Mon Dec 21 13:43:53 2015 +0800 @@ -22,13 +22,12 @@ */ /* @test - * @bug 8081678 + * @bug 8081678 8131155 * @summary Tests for stream returning methods * @library ../../util/stream/bootlib/java.base * @build java.util.stream.OpTestCase * @run testng/othervm NetworkInterfaceStreamTest * @run testng/othervm -Djava.net.preferIPv4Stack=true NetworkInterfaceStreamTest - * @key intermittent */ import org.testng.annotations.Test; @@ -46,6 +45,8 @@ public class NetworkInterfaceStreamTest extends OpTestCase { + private final static boolean IS_WINDOWS = System.getProperty("os.name").startsWith("Windows"); + @Test public void testNetworkInterfaces() throws SocketException { Supplier> ss = () -> { @@ -74,7 +75,9 @@ } private void getAllSubNetworkInterfaces(NetworkInterface ni, Collection result) { - result.add(ni); + if (isIncluded(ni)) { + result.add(ni); + } for (NetworkInterface sni : Collections.list(ni.getSubInterfaces())) { getAllSubNetworkInterfaces(sni, result); @@ -114,7 +117,9 @@ public void testInetAddresses() throws SocketException { Supplier> ss = () -> { try { - return NetworkInterface.networkInterfaces().flatMap(NetworkInterface::inetAddresses); + return NetworkInterface.networkInterfaces() + .filter(ni -> isIncluded(ni)) + .flatMap(NetworkInterface::inetAddresses); } catch (SocketException e) { throw new RuntimeException(e); @@ -132,5 +137,21 @@ .exercise(); } + /** + * Check if the input network interface should be included in the test. It is necessary to exclude + * "Teredo Tunneling Pseudo-Interface" whose configuration can be variable during a test run. + * + * @param ni a network interace + * @return false if it is a "Teredo Tunneling Pseudo-Interface", otherwise true. + */ + private boolean isIncluded(NetworkInterface ni) { + if (!IS_WINDOWS) { + return true; + } + + String dName = ni.getDisplayName(); + return dName == null || !dName.contains("Teredo"); + } } +