test/jdk/java/net/SocketOption/AfterClose.java
changeset 59092 625262261ef2
parent 55288 ae41e1037bde
equal deleted inserted replaced
59091:1c071f73949a 59092:625262261ef2
    32 import java.io.IOException;
    32 import java.io.IOException;
    33 import java.lang.reflect.Field;
    33 import java.lang.reflect.Field;
    34 import java.lang.reflect.Method;
    34 import java.lang.reflect.Method;
    35 import java.net.DatagramSocket;
    35 import java.net.DatagramSocket;
    36 import java.net.MulticastSocket;
    36 import java.net.MulticastSocket;
       
    37 import java.net.NetworkInterface;
    37 import java.net.ServerSocket;
    38 import java.net.ServerSocket;
    38 import java.net.Socket;
    39 import java.net.Socket;
       
    40 import java.net.SocketException;
    39 import java.net.SocketOption;
    41 import java.net.SocketOption;
    40 import java.nio.channels.DatagramChannel;
    42 import java.nio.channels.DatagramChannel;
    41 import java.nio.channels.ServerSocketChannel;
    43 import java.nio.channels.ServerSocketChannel;
    42 import java.nio.channels.SocketChannel;
    44 import java.nio.channels.SocketChannel;
    43 import java.util.ArrayList;
    45 import java.util.ArrayList;
    44 import java.util.Arrays;
    46 import java.util.Arrays;
    45 import java.util.HashMap;
    47 import java.util.HashMap;
    46 import java.util.List;
    48 import java.util.List;
    47 import java.util.Map;
    49 import java.util.Map;
       
    50 import java.util.stream.Collectors;
    48 import org.testng.annotations.DataProvider;
    51 import org.testng.annotations.DataProvider;
    49 import org.testng.annotations.Test;
    52 import org.testng.annotations.Test;
    50 import static java.lang.Boolean.*;
    53 import static java.lang.Boolean.*;
    51 import static java.net.StandardSocketOptions.*;
    54 import static java.net.StandardSocketOptions.*;
    52 import static org.testng.Assert.expectThrows;
    55 import static org.testng.Assert.expectThrows;
    55 
    58 
    56     static final Class<IOException> IOE = IOException.class;
    59     static final Class<IOException> IOE = IOException.class;
    57 
    60 
    58     static Map<SocketOption<?>,List<Object>> OPTION_VALUES_MAP = optionValueMap();
    61     static Map<SocketOption<?>,List<Object>> OPTION_VALUES_MAP = optionValueMap();
    59 
    62 
       
    63     static boolean supportsMulticast(NetworkInterface ni) {
       
    64         try {
       
    65             return ni.supportsMulticast();
       
    66         } catch (SocketException e) {
       
    67             return false;
       
    68         }
       
    69     }
       
    70 
       
    71     static List<Object> listNetworkInterfaces() {
       
    72         try {
       
    73             return NetworkInterface.networkInterfaces()
       
    74                     .filter(AfterClose::supportsMulticast)
       
    75                     .collect(Collectors.toList());
       
    76         } catch (Exception e) { }
       
    77         return List.of();
       
    78     }
       
    79 
    60     static Map<SocketOption<?>,List<Object>> optionValueMap() {
    80     static Map<SocketOption<?>,List<Object>> optionValueMap() {
    61         Map<SocketOption<?>,List<Object>> map = new HashMap<>();
    81         Map<SocketOption<?>,List<Object>> map = new HashMap<>();
    62         map.put(IP_MULTICAST_IF,   listOf(TRUE, FALSE) );
    82         map.put(IP_MULTICAST_IF,   listNetworkInterfaces() );
    63         map.put(IP_MULTICAST_LOOP, listOf(TRUE, FALSE) );
    83         map.put(IP_MULTICAST_LOOP, listOf(TRUE, FALSE) );
    64         map.put(IP_MULTICAST_TTL,  listOf(0, 100, 255) );
    84         map.put(IP_MULTICAST_TTL,  listOf(0, 100, 255) );
    65         map.put(IP_TOS,            listOf(0, 101, 255) );
    85         map.put(IP_TOS,            listOf(0, 101, 255) );
    66         map.put(SO_BROADCAST,      listOf(TRUE, FALSE) );
    86         map.put(SO_BROADCAST,      listOf(TRUE, FALSE) );
    67         map.put(SO_KEEPALIVE,      listOf(TRUE, FALSE) );
    87         map.put(SO_KEEPALIVE,      listOf(TRUE, FALSE) );