< prev index next >
test/jdk/java/net/SocketOption/OptionsTest.java
Print this page
*** 21,34 ****
* questions.
*/
/*
* @test
! * @bug 8036979 8072384 8044773
* @library /test/lib
* @requires !vm.graal.enabled
* @run main/othervm -Xcheck:jni OptionsTest
* @run main/othervm -Xcheck:jni -Djava.net.preferIPv4Stack=true OptionsTest
* @run main/othervm --limit-modules=java.base OptionsTest
*/
import java.lang.reflect.Method;
--- 21,35 ----
* questions.
*/
/*
* @test
! * @bug 8036979 8072384 8044773 8225214
* @library /test/lib
* @requires !vm.graal.enabled
* @run main/othervm -Xcheck:jni OptionsTest
+ * @run main/othervm -Djdk.net.usePlainSocketImpl OptionsTest
* @run main/othervm -Xcheck:jni -Djava.net.preferIPv4Stack=true OptionsTest
* @run main/othervm --limit-modules=java.base OptionsTest
*/
import java.lang.reflect.Method;
*** 50,68 ****
}
}
// The tests set the option using the new API, read back the set value
! // which could be diferent, and then use the legacy get API to check
// these values are the same
static Test<?>[] socketTests = new Test<?>[] {
Test.create(StandardSocketOptions.SO_KEEPALIVE, Boolean.TRUE),
Test.create(StandardSocketOptions.SO_SNDBUF, Integer.valueOf(10 * 100)),
Test.create(StandardSocketOptions.SO_RCVBUF, Integer.valueOf(8 * 100)),
Test.create(StandardSocketOptions.SO_REUSEADDR, Boolean.FALSE),
Test.create(StandardSocketOptions.SO_REUSEPORT, Boolean.FALSE),
Test.create(StandardSocketOptions.SO_LINGER, Integer.valueOf(80)),
Test.create(StandardSocketOptions.IP_TOS, Integer.valueOf(0)), // lower-bound
Test.create(StandardSocketOptions.IP_TOS, Integer.valueOf(100)),
Test.create(StandardSocketOptions.IP_TOS, Integer.valueOf(255)) //upper-bound
};
--- 51,71 ----
}
}
// The tests set the option using the new API, read back the set value
! // which could be different, and then use the legacy get API to check
// these values are the same
static Test<?>[] socketTests = new Test<?>[] {
Test.create(StandardSocketOptions.SO_KEEPALIVE, Boolean.TRUE),
Test.create(StandardSocketOptions.SO_SNDBUF, Integer.valueOf(10 * 100)),
Test.create(StandardSocketOptions.SO_RCVBUF, Integer.valueOf(8 * 100)),
Test.create(StandardSocketOptions.SO_REUSEADDR, Boolean.FALSE),
Test.create(StandardSocketOptions.SO_REUSEPORT, Boolean.FALSE),
+ Test.create(StandardSocketOptions.SO_LINGER, Integer.valueOf(-1)),
+ Test.create(StandardSocketOptions.SO_LINGER, Integer.valueOf(0)),
Test.create(StandardSocketOptions.SO_LINGER, Integer.valueOf(80)),
Test.create(StandardSocketOptions.IP_TOS, Integer.valueOf(0)), // lower-bound
Test.create(StandardSocketOptions.IP_TOS, Integer.valueOf(100)),
Test.create(StandardSocketOptions.IP_TOS, Integer.valueOf(255)) //upper-bound
};
*** 232,242 ****
} else if (option.equals(StandardSocketOptions.IP_TOS)) {
return Integer.valueOf(socket.getTrafficClass());
} else if (option.equals(StandardSocketOptions.TCP_NODELAY)) {
return Boolean.valueOf(socket.getTcpNoDelay());
} else {
! throw new RuntimeException("unexecpted socket option");
}
} else if (type.equals(ServerSocket.class)) {
ServerSocket socket = (ServerSocket)s;
Set<SocketOption<?>> options = socket.supportedOptions();
boolean reuseport = options.contains(StandardSocketOptions.SO_REUSEPORT);
--- 235,245 ----
} else if (option.equals(StandardSocketOptions.IP_TOS)) {
return Integer.valueOf(socket.getTrafficClass());
} else if (option.equals(StandardSocketOptions.TCP_NODELAY)) {
return Boolean.valueOf(socket.getTcpNoDelay());
} else {
! throw new RuntimeException("unexpected socket option");
}
} else if (type.equals(ServerSocket.class)) {
ServerSocket socket = (ServerSocket)s;
Set<SocketOption<?>> options = socket.supportedOptions();
boolean reuseport = options.contains(StandardSocketOptions.SO_REUSEPORT);
*** 248,258 ****
} else if (option.equals(StandardSocketOptions.SO_REUSEPORT) && reuseport) {
return Boolean.valueOf(socket.getOption(StandardSocketOptions.SO_REUSEPORT));
} else if (option.equals(StandardSocketOptions.IP_TOS)) {
return getServerSocketTrafficClass(socket);
} else {
! throw new RuntimeException("unexecpted socket option");
}
} else if (type.equals(DatagramSocket.class)) {
DatagramSocket socket = (DatagramSocket)s;
Set<SocketOption<?>> options = socket.supportedOptions();
boolean reuseport = options.contains(StandardSocketOptions.SO_REUSEPORT);
--- 251,261 ----
} else if (option.equals(StandardSocketOptions.SO_REUSEPORT) && reuseport) {
return Boolean.valueOf(socket.getOption(StandardSocketOptions.SO_REUSEPORT));
} else if (option.equals(StandardSocketOptions.IP_TOS)) {
return getServerSocketTrafficClass(socket);
} else {
! throw new RuntimeException("unexpected socket option");
}
} else if (type.equals(DatagramSocket.class)) {
DatagramSocket socket = (DatagramSocket)s;
Set<SocketOption<?>> options = socket.supportedOptions();
boolean reuseport = options.contains(StandardSocketOptions.SO_REUSEPORT);
*** 266,276 ****
} else if (option.equals(StandardSocketOptions.SO_REUSEPORT) && reuseport) {
return Boolean.valueOf(socket.getOption(StandardSocketOptions.SO_REUSEPORT));
} else if (option.equals(StandardSocketOptions.IP_TOS)) {
return Integer.valueOf(socket.getTrafficClass());
} else {
! throw new RuntimeException("unexecpted socket option");
}
} else if (type.equals(MulticastSocket.class)) {
MulticastSocket socket = (MulticastSocket)s;
Set<SocketOption<?>> options = socket.supportedOptions();
--- 269,279 ----
} else if (option.equals(StandardSocketOptions.SO_REUSEPORT) && reuseport) {
return Boolean.valueOf(socket.getOption(StandardSocketOptions.SO_REUSEPORT));
} else if (option.equals(StandardSocketOptions.IP_TOS)) {
return Integer.valueOf(socket.getTrafficClass());
} else {
! throw new RuntimeException("unexpected socket option");
}
} else if (type.equals(MulticastSocket.class)) {
MulticastSocket socket = (MulticastSocket)s;
Set<SocketOption<?>> options = socket.supportedOptions();
*** 291,312 ****
} else if (option.equals(StandardSocketOptions.IP_MULTICAST_TTL)) {
return Integer.valueOf(socket.getTimeToLive());
} else if (option.equals(StandardSocketOptions.IP_MULTICAST_LOOP)) {
return Boolean.valueOf(socket.getLoopbackMode());
} else {
! throw new RuntimeException("unexecpted socket option");
}
}
- throw new RuntimeException("unexecpted socket type");
}
public static void main(String args[]) throws Exception {
IPSupport.throwSkippedExceptionIfNonOperational();
doSocketTests();
doServerSocketTests();
doDatagramSocketTests();
doMulticastSocketTests();
}
// Reflectively access jdk.net.Sockets.getOption so that the test can run
// without the jdk.net module.
static Object getServerSocketTrafficClass(ServerSocket ss) throws Exception {
--- 294,332 ----
} else if (option.equals(StandardSocketOptions.IP_MULTICAST_TTL)) {
return Integer.valueOf(socket.getTimeToLive());
} else if (option.equals(StandardSocketOptions.IP_MULTICAST_LOOP)) {
return Boolean.valueOf(socket.getLoopbackMode());
} else {
! throw new RuntimeException("unexpected socket option");
! }
! }
! throw new RuntimeException("unexpected socket type");
! }
!
! // Tests default and negative values of SO_LINGER. All negative values should
! // retrieve as -1.
! public static void soLinger() throws Exception {
! try (Socket s = new Socket()) {
! // retrieve without set
! int ignoreValue = s.getOption(StandardSocketOptions.SO_LINGER);
!
! for (int v : List.of(-1, -2, -100, -65534, -65535, -65536, -100000)) {
! System.out.println("Testing SO_LINGER with:" + v);
! s.setOption(StandardSocketOptions.SO_LINGER, v);
! int value = s.getOption(StandardSocketOptions.SO_LINGER);
! testEqual(StandardSocketOptions.SO_LINGER, -1, value);
}
}
}
public static void main(String args[]) throws Exception {
IPSupport.throwSkippedExceptionIfNonOperational();
doSocketTests();
doServerSocketTests();
doDatagramSocketTests();
doMulticastSocketTests();
+ soLinger();
}
// Reflectively access jdk.net.Sockets.getOption so that the test can run
// without the jdk.net module.
static Object getServerSocketTrafficClass(ServerSocket ss) throws Exception {
< prev index next >