Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/net/SocketImpl/ImplSupportedOptions.java
41149 views
1
/*
2
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 8213418
27
* @summary Ensure correct impl supported socket options
28
* @run testng ImplSupportedOptions
29
*/
30
31
import java.io.IOException;
32
import java.io.InputStream;
33
import java.io.OutputStream;
34
import java.net.InetAddress;
35
import java.net.ServerSocket;
36
import java.net.Socket;
37
import java.net.SocketAddress;
38
import java.net.SocketException;
39
import java.net.SocketImpl;
40
import java.net.SocketOption;
41
import java.net.StandardSocketOptions;
42
import java.util.Set;
43
import org.testng.annotations.Test;
44
import static org.testng.Assert.assertEquals;
45
import static org.testng.Assert.assertTrue;
46
47
public class ImplSupportedOptions {
48
49
@Test
50
public void socketSupportedOptions() throws Exception {
51
Socket s = new Socket();
52
Set<?> standardOptions = s.supportedOptions();
53
assertTrue(standardOptions.contains(StandardSocketOptions.SO_LINGER),
54
"Expected SO_LINGER, in:" + standardOptions);
55
assertEquals(standardOptions, s.supportedOptions());
56
assertEquals(standardOptions, s.supportedOptions());
57
58
s = new DummySocket();
59
Set<?> dummyOptions = s.supportedOptions();
60
assertEquals(dummyOptions.size(), 1);
61
assertTrue(dummyOptions.contains(DummySocketImpl.SOCKET_OPT));
62
assertEquals(dummyOptions, s.supportedOptions());
63
assertEquals(dummyOptions, s.supportedOptions());
64
65
s = new Socket();
66
standardOptions = s.supportedOptions();
67
assertTrue(standardOptions.contains(StandardSocketOptions.SO_LINGER),
68
"Expected SO_LINGER, in:" + standardOptions);
69
assertEquals(standardOptions, s.supportedOptions());
70
assertEquals(standardOptions, s.supportedOptions());
71
72
s = new DummySocket();
73
dummyOptions = s.supportedOptions();
74
assertEquals(dummyOptions.size(), 1);
75
assertTrue(dummyOptions.contains(DummySocketImpl.SOCKET_OPT));
76
assertEquals(dummyOptions, s.supportedOptions());
77
assertEquals(dummyOptions, s.supportedOptions());
78
}
79
80
@Test
81
public void serverSocketSupportedOptions() throws Exception {
82
ServerSocket s = new ServerSocket();
83
Set<?> standardOptions = s.supportedOptions();
84
assertTrue(standardOptions.contains(StandardSocketOptions.SO_REUSEADDR),
85
"Expected SO_REUSEADDR, in:" + standardOptions);
86
assertEquals(standardOptions, s.supportedOptions());
87
assertEquals(standardOptions, s.supportedOptions());
88
89
s = new DummyServerSocket();
90
Set<?> dummyOptions = s.supportedOptions();
91
assertEquals(dummyOptions.size(), 1);
92
assertTrue(dummyOptions.contains(DummySocketImpl.SOCKET_OPT));
93
assertEquals(dummyOptions, s.supportedOptions());
94
assertEquals(dummyOptions, s.supportedOptions());
95
96
s = new ServerSocket();
97
standardOptions = s.supportedOptions();
98
assertTrue(standardOptions.contains(StandardSocketOptions.SO_REUSEADDR),
99
"Expected SO_REUSEADDR, in:" + standardOptions);
100
assertEquals(standardOptions, s.supportedOptions());
101
assertEquals(standardOptions, s.supportedOptions());
102
103
s = new DummyServerSocket();
104
dummyOptions = s.supportedOptions();
105
assertEquals(dummyOptions.size(), 1);
106
assertTrue(dummyOptions.contains(DummySocketImpl.SOCKET_OPT));
107
assertEquals(dummyOptions, s.supportedOptions());
108
assertEquals(dummyOptions, s.supportedOptions());
109
}
110
111
static class DummySocket extends Socket {
112
DummySocket() throws IOException {
113
super(new DummySocketImpl());
114
}
115
}
116
117
static class DummyServerSocket extends ServerSocket {
118
DummyServerSocket() throws IOException {
119
super(new DummySocketImpl());
120
}
121
}
122
123
static class DummySocketImpl extends SocketImpl {
124
125
public static final SocketOption<String> SOCKET_OPT =
126
new ImplSocketOption<>("SOCKET_OPT", String.class);
127
128
private static class ImplSocketOption<T> implements SocketOption<T> {
129
private final String name;
130
private final Class<T> type;
131
ImplSocketOption(String name, Class<T> type) {
132
this.name = name;
133
this.type = type;
134
}
135
@Override public String name() { return name; }
136
@Override public Class<T> type() { return type; }
137
@Override public String toString() { return name; }
138
}
139
140
private final Set<SocketOption<?>> SO = Set.of(SOCKET_OPT);
141
142
@Override
143
public Set<SocketOption<?>> supportedOptions() { return SO; }
144
145
// ---
146
147
@Override
148
protected void create(boolean stream) throws IOException { }
149
150
@Override
151
protected void connect(String host, int port) throws IOException { }
152
153
@Override
154
protected void connect(InetAddress address, int port) throws IOException { }
155
156
@Override
157
protected void connect(SocketAddress address, int timeout) throws IOException { }
158
159
@Override
160
protected void bind(InetAddress host, int port) throws IOException { }
161
162
@Override
163
protected void listen(int backlog) throws IOException { }
164
165
@Override
166
protected void accept(SocketImpl s) throws IOException { }
167
168
@Override
169
protected InputStream getInputStream() throws IOException { return null; }
170
171
@Override
172
protected OutputStream getOutputStream() throws IOException { return null; }
173
174
@Override
175
protected int available() throws IOException { return 0; }
176
177
@Override
178
protected void close() throws IOException { }
179
180
@Override
181
protected void sendUrgentData(int data) throws IOException { }
182
183
@Override
184
public void setOption(int optID, Object value) throws SocketException { }
185
186
@Override
187
public Object getOption(int optID) throws SocketException { return null; }
188
}
189
}
190
191