< prev index next >
test/java/net/MulticastSocket/SetOutgoingIf.java
Print this page
rev 17065 : 7155591: test/java/net/MulticastSocket/SetOutgoingIf.java fails on macOS
Reviewed-by:
*** 1,7 ****
/*
! * Copyright (c) 2007, 2010, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2007, 2017, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 23,36 ****
/*
* @test
* @bug 4742177
* @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code
*/
import java.net.*;
import java.util.*;
!
public class SetOutgoingIf {
private static int PORT = 9001;
private static String osname;
--- 23,40 ----
/*
* @test
* @bug 4742177
* @summary Re-test IPv6 (and specifically MulticastSocket) with latest Linux & USAGI code
+ * @library /lib/testlibrary
+ * @build jdk.testlibrary.NetworkConfiguration
+ * @run main SetOutgoingIf
*/
import java.net.*;
import java.util.*;
! import jdk.testlibrary.NetworkConfiguration;
! import static java.util.stream.Collectors.toList;
public class SetOutgoingIf {
private static int PORT = 9001;
private static String osname;
*** 39,59 ****
osname = System.getProperty("os.name");
return osname.contains("Windows");
}
private static boolean hasIPv6() throws Exception {
! List<NetworkInterface> nics = Collections.list(
! NetworkInterface.getNetworkInterfaces());
! for (NetworkInterface nic : nics) {
! List<InetAddress> addrs = Collections.list(nic.getInetAddresses());
! for (InetAddress addr : addrs) {
! if (addr instanceof Inet6Address)
! return true;
! }
! }
!
! return false;
}
public static void main(String[] args) throws Exception {
if (isWindows()) {
System.out.println("The test only run on non-Windows OS. Bye.");
--- 43,53 ----
osname = System.getProperty("os.name");
return osname.contains("Windows");
}
private static boolean hasIPv6() throws Exception {
! return NetworkConfiguration.probe().ip6Addresses().findAny().isPresent();
}
public static void main(String[] args) throws Exception {
if (isWindows()) {
System.out.println("The test only run on non-Windows OS. Bye.");
*** 63,97 ****
if (!hasIPv6()) {
System.out.println("No IPv6 available. Bye.");
return;
}
// We need 2 or more network interfaces to run the test
//
List<NetIf> netIfs = new ArrayList<NetIf>();
int index = 1;
! for (NetworkInterface nic : Collections.list(NetworkInterface.getNetworkInterfaces())) {
! // we should use only network interfaces with multicast support which are in "up" state
! if (!nic.isLoopback() && nic.supportsMulticast() && nic.isUp()) {
NetIf netIf = NetIf.create(nic);
! // now determine what (if any) type of addresses are assigned to this interface
! for (InetAddress addr : Collections.list(nic.getInetAddresses())) {
! if (addr.isAnyLocalAddress())
! continue;
!
! System.out.println(" addr " + addr);
! if (addr instanceof Inet4Address) {
netIf.ipv4Address(true);
! } else if (addr instanceof Inet6Address) {
netIf.ipv6Address(true);
! }
! }
if (netIf.ipv4Address() || netIf.ipv6Address()) {
netIf.index(index++);
netIfs.add(netIf);
! debug("Using: " + nic);
}
}
}
if (netIfs.size() <= 1) {
System.out.println("Need 2 or more network interfaces to run. Bye.");
--- 57,89 ----
if (!hasIPv6()) {
System.out.println("No IPv6 available. Bye.");
return;
}
+ NetworkConfiguration nc = NetworkConfiguration.probe();
+
// We need 2 or more network interfaces to run the test
//
List<NetIf> netIfs = new ArrayList<NetIf>();
int index = 1;
! for (NetworkInterface nic : nc.interfaces().collect(toList())) {
! // only use network interfaces with multicast support
! if (!nic.isLoopback() && nic.supportsMulticast()) {
NetIf netIf = NetIf.create(nic);
! // determine what (if any) type of addresses are assigned
! List<Inet4Address> ipv4Addrs = nc.ip4Addresses(nic).collect(toList());
! List<Inet6Address> ipv6Addrs = nc.ip6Addresses(nic).collect(toList());
! if (!ipv4Addrs.isEmpty())
netIf.ipv4Address(true);
! if (!ipv6Addrs.isEmpty())
netIf.ipv6Address(true);
!
if (netIf.ipv4Address() || netIf.ipv6Address()) {
netIf.index(index++);
netIfs.add(netIf);
! debug("Using: " + nic + "\n " + ipv4Addrs + ipv6Addrs);
}
}
}
if (netIfs.size() <= 1) {
System.out.println("Need 2 or more network interfaces to run. Bye.");
< prev index next >