jdk/test/java/net/SocketPermission/SocketPermissionTest.java
author darcy
Thu, 19 Mar 2015 18:38:26 -0700
changeset 29528 d1a052f7ccef
parent 27089 913603a4fe1f
child 35378 7e19fa0e4e5b
permissions -rw-r--r--
8075565: Define @intermittent jtreg keyword and mark intermittently failing jdk tests Reviewed-by: lancea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27089
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     1
/*
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     2
 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     4
 *
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     7
 * published by the Free Software Foundation.
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     8
 *
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    13
 * accompanied this code).
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    14
 *
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    18
 *
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    21
 * questions.
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    22
 */
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    23
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    24
/*
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    25
 * @test
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    26
 * @bug 8047031
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    27
 * @summary SocketPermission tests for legacy socket types
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    28
 * @library ../../../lib/testlibrary
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    29
 * @run testng/othervm/policy=policy SocketPermissionTest
29528
d1a052f7ccef 8075565: Define @intermittent jtreg keyword and mark intermittently failing jdk tests
darcy
parents: 27089
diff changeset
    30
 * @key intermittent
27089
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    31
 */
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    32
import java.io.IOException;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    33
import java.net.DatagramPacket;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    34
import java.net.DatagramSocket;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    35
import java.net.InetAddress;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    36
import java.net.MulticastSocket;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    37
import java.net.ServerSocket;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    38
import java.net.Socket;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    39
import java.net.SocketPermission;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    40
import java.security.AccessControlContext;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    41
import java.security.AccessController;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    42
import java.security.Permission;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    43
import java.security.Permissions;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    44
import java.security.PrivilegedAction;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    45
import java.security.ProtectionDomain;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    46
import java.util.Arrays;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    47
import java.util.function.Function;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    48
import java.util.function.IntConsumer;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    49
import static jdk.testlibrary.Utils.getFreePort;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    50
import org.testng.annotations.BeforeMethod;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    51
import org.testng.annotations.DataProvider;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    52
import org.testng.annotations.Test;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    53
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    54
public class SocketPermissionTest {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    55
    private int freePort = -1;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    56
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    57
    //positive tests
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    58
    @Test(dataProvider = "positiveProvider")
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    59
    public void testPositive(Function<String, AccessControlContext> genAcc, IntConsumer func) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    60
        String addr = "localhost:" + freePort;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    61
        AccessControlContext acc = genAcc.apply(addr);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    62
        AccessController.doPrivileged((PrivilegedAction) () -> {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    63
            func.accept(freePort);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    64
            return null;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    65
        }, acc);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    66
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    67
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    68
    //negative tests
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    69
    @Test(dataProvider = "negativeProvider", expectedExceptions = SecurityException.class)
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    70
    public void testNegative(AccessControlContext acc, IntConsumer func) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    71
        AccessController.doPrivileged((PrivilegedAction) () -> {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    72
            func.accept(freePort);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    73
            return null;
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    74
        }, acc);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    75
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    76
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    77
    @BeforeMethod
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    78
    public void setFreePort() throws Exception {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    79
        freePort = getFreePort();
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    80
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    81
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    82
    @DataProvider
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    83
    public Object[][] positiveProvider() {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    84
        //test for SocketPermission "host:port","connect,resolve";
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    85
        Function<String, AccessControlContext> generateAcc1 = (addr) -> getAccessControlContext(
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    86
                new SocketPermission(addr, "listen, connect,resolve"));
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    87
        IntConsumer func1 = (i) -> connectSocketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    88
        IntConsumer func2 = (i) -> connectDatagramSocketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    89
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    90
        //test for SocketPermission "localhost:1024-","accept";
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    91
        Function<String, AccessControlContext> generateAcc2 = (addr) -> getAccessControlContext(
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    92
                new SocketPermission(addr, "listen,connect,resolve"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    93
                new SocketPermission("localhost:1024-", "accept"));
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    94
        IntConsumer func3 = (i) -> acceptServerSocketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    95
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    96
        //test for SocketPermission "229.227.226.221", "connect,accept"
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    97
        Function<String, AccessControlContext> generateAcc3 = (addr) -> getAccessControlContext(
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    98
                new SocketPermission(addr, "listen,resolve"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
    99
                new SocketPermission("229.227.226.221", "connect,accept"));
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   100
        IntConsumer func4 = (i) -> sendDatagramPacketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   101
        IntConsumer func5 = (i) -> joinGroupMulticastTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   102
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   103
        //test for SocketPermission "host:port", "listen"
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   104
        Function<String, AccessControlContext> generateAcc4 = (addr) -> getAccessControlContext(
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   105
                new SocketPermission(addr, "listen"));
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   106
        IntConsumer func6 = (i) -> listenDatagramSocketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   107
        IntConsumer func7 = (i) -> listenMulticastSocketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   108
        IntConsumer func8 = (i) -> listenServerSocketTest(i);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   109
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   110
        return new Object[][]{
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   111
            {generateAcc1, func1},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   112
            {generateAcc1, func2},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   113
            {generateAcc2, func3},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   114
            {generateAcc3, func4},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   115
            {generateAcc3, func5},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   116
            {generateAcc4, func6},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   117
            {generateAcc4, func7},
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   118
            {generateAcc4, func8}
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   119
        };
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   120
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   121
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   122
    @DataProvider
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   123
    public Object[][] negativeProvider() {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   124
        IntConsumer[] funcs = {i -> connectSocketTest(i),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   125
            i -> connectDatagramSocketTest(i), i -> acceptServerSocketTest(i),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   126
            i -> sendDatagramPacketTest(i), i -> joinGroupMulticastTest(i),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   127
            i -> listenDatagramSocketTest(i), i -> listenMulticastSocketTest(i),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   128
            i -> listenServerSocketTest(i)};
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   129
        return Arrays.stream(funcs).map(f -> {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   130
            //Construct an AccessControlContext without SocketPermission
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   131
            AccessControlContext acc = getAccessControlContext(
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   132
                    new java.io.FilePermission("<<ALL FILES>>", "read,write,execute,delete"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   133
                    new java.net.NetPermission("*"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   134
                    new java.util.PropertyPermission("*", "read,write"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   135
                    new java.lang.reflect.ReflectPermission("*"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   136
                    new java.lang.RuntimePermission("*"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   137
                    new java.security.SecurityPermission("*"),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   138
                    new java.io.SerializablePermission("*"));
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   139
            return new Object[]{acc, f};
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   140
        }).toArray(Object[][]::new);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   141
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   142
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   143
    public void connectSocketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   144
        try (ServerSocket server = new ServerSocket(port);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   145
                Socket client = new Socket(InetAddress.getLocalHost(), port);) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   146
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   147
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   148
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   149
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   150
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   151
    public void connectDatagramSocketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   152
        String msg = "Hello";
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   153
        try {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   154
            InetAddress me = InetAddress.getLocalHost();
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   155
            try (DatagramSocket ds = new DatagramSocket(port, me)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   156
                DatagramPacket dp = new DatagramPacket(msg.getBytes(),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   157
                        msg.length(), me, port);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   158
                ds.send(dp);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   159
            }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   160
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   161
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   162
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   163
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   164
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   165
    public void acceptServerSocketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   166
        try {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   167
            InetAddress me = InetAddress.getLocalHost();
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   168
            try (ServerSocket server = new ServerSocket(port)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   169
                Socket client = new Socket(me, port);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   170
                server.accept();
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   171
            }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   172
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   173
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   174
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   175
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   176
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   177
    public static void sendDatagramPacketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   178
        String msg = "Hello";
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   179
        try {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   180
            InetAddress group = InetAddress.getByName("229.227.226.221");
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   181
            try (DatagramSocket s = new DatagramSocket(port)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   182
                DatagramPacket hi = new DatagramPacket(msg.getBytes(),
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   183
                        msg.length(), group, port);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   184
                s.send(hi);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   185
            }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   186
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   187
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   188
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   189
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   190
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   191
    public void joinGroupMulticastTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   192
        try {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   193
            InetAddress group = InetAddress.getByName("229.227.226.221");
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   194
            try (MulticastSocket s = new MulticastSocket(port)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   195
                s.joinGroup(group);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   196
                s.leaveGroup(group);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   197
            }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   198
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   199
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   200
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   201
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   202
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   203
    public void listenDatagramSocketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   204
        try (DatagramSocket ds = new DatagramSocket(port)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   205
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   206
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   207
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   208
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   209
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   210
    public void listenMulticastSocketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   211
        try (MulticastSocket ms = new MulticastSocket(port)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   212
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   213
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   214
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   215
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   216
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   217
    public void listenServerSocketTest(int port) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   218
        try (ServerSocket ms = new ServerSocket(port)) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   219
        } catch (IOException ex) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   220
            throw new RuntimeException(ex);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   221
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   222
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   223
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   224
    private static AccessControlContext getAccessControlContext(Permission... ps) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   225
        Permissions perms = new Permissions();
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   226
        for (Permission p : ps) {
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   227
            perms.add(p);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   228
        }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   229
        /*
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   230
         *Create an AccessControlContext that consist a single protection domain
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   231
         * with only the permissions calculated above
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   232
         */
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   233
        ProtectionDomain pd = new ProtectionDomain(null, perms);
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   234
        return new AccessControlContext(new ProtectionDomain[]{pd});
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   235
    }
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   236
913603a4fe1f 8047031: Add SocketPermission tests for legacy socket types
chegar
parents:
diff changeset
   237
}