test/java/net/SocketOption/UnsupportedOptionsTest.java

Print this page
rev 14282 : 8044773: Refactor jdk.net API so that it can be moved out of the base module
Reviewed-by:

*** 19,64 **** * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ - import jdk.net.ExtendedSocketOptions; - import java.io.IOException; import java.net.*; /* * @test ! * @bug 8143554 ! * @run main UnsupportedOptionsTest * @summary Test checks that UnsupportedOperationException for unsupported * SOCKET_OPTIONS is thrown by both getOption() and setOption() methods. */ public class UnsupportedOptionsTest { ! private static final SocketOption[] SOCKET_OPTIONS = { ! StandardSocketOptions.IP_MULTICAST_IF, ! StandardSocketOptions.IP_MULTICAST_LOOP, ! StandardSocketOptions.IP_MULTICAST_TTL, ! StandardSocketOptions.IP_TOS, ! StandardSocketOptions.SO_BROADCAST, ! StandardSocketOptions.SO_KEEPALIVE, ! StandardSocketOptions.SO_LINGER, ! StandardSocketOptions.SO_RCVBUF, ! StandardSocketOptions.SO_REUSEADDR, ! StandardSocketOptions.SO_SNDBUF, ! StandardSocketOptions.TCP_NODELAY, ! ExtendedSocketOptions.SO_FLOW_SLA ! }; public static void main(String[] args) throws IOException { Socket s = new Socket(); ServerSocket ss = new ServerSocket(); DatagramSocket ds = new DatagramSocket(); MulticastSocket ms = new MulticastSocket(); ! for (SocketOption option : SOCKET_OPTIONS) { if (!s.supportedOptions().contains(option)) { testUnsupportedSocketOption(s, option); } if (!ss.supportedOptions().contains(option)) { --- 19,78 ---- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ import java.io.IOException; + import java.lang.reflect.Field; import java.net.*; + import java.util.ArrayList; + import java.util.List; /* * @test ! * @bug 8143554 8044773 * @summary Test checks that UnsupportedOperationException for unsupported * SOCKET_OPTIONS is thrown by both getOption() and setOption() methods. + * @run main UnsupportedOptionsTest + * @run main/othervm -Djdk.launcher.limitmods=java.base UnsupportedOptionsTest */ + public class UnsupportedOptionsTest { ! private static final List<SocketOption<?>> socketOptions = new ArrayList<>(); ! ! static { ! socketOptions.add(StandardSocketOptions.IP_MULTICAST_IF); ! socketOptions.add(StandardSocketOptions.IP_MULTICAST_LOOP); ! socketOptions.add(StandardSocketOptions.IP_MULTICAST_TTL); ! socketOptions.add(StandardSocketOptions.IP_TOS); ! socketOptions.add(StandardSocketOptions.SO_BROADCAST); ! socketOptions.add(StandardSocketOptions.SO_KEEPALIVE); ! socketOptions.add(StandardSocketOptions.SO_LINGER); ! socketOptions.add(StandardSocketOptions.SO_RCVBUF); ! socketOptions.add(StandardSocketOptions.SO_REUSEADDR); ! socketOptions.add(StandardSocketOptions.SO_SNDBUF); ! socketOptions.add(StandardSocketOptions.TCP_NODELAY); ! ! try { ! Class<?> c = Class.forName("jdk.net.ExtendedSocketOptions"); ! Field field = c.getField("SO_FLOW_SLA"); ! socketOptions.add((SocketOption<?>)field.get(null)); ! } catch (ClassNotFoundException e) { ! // ignore, jdk.net module not present ! } catch (ReflectiveOperationException e) { ! throw new AssertionError(e); ! } ! } public static void main(String[] args) throws IOException { Socket s = new Socket(); ServerSocket ss = new ServerSocket(); DatagramSocket ds = new DatagramSocket(); MulticastSocket ms = new MulticastSocket(); ! for (SocketOption option : socketOptions) { if (!s.supportedOptions().contains(option)) { testUnsupportedSocketOption(s, option); } if (!ss.supportedOptions().contains(option)) {