Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/net/PortUnreachableException/Test.java
41149 views
1
/*
2
* Copyright (c) 2001, 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 4413768
27
* @summary Checking that PortUnreachableException is thrown when
28
* ICMP Port Unreachable is received.
29
*/
30
import java.net.*;
31
import java.util.Properties;
32
33
public class Test {
34
35
/*
36
* Return an available port
37
*/
38
int getPort() throws Exception {
39
DatagramSocket s = new DatagramSocket(0);
40
int port = s.getLocalPort();
41
s.close();
42
return port;
43
}
44
45
/*
46
* Perform test by sending to remote_host:port
47
* sendOnly => send datagram to host and expect PUE on subsequent
48
* send
49
* !sendOnly => send datagram to host and expect PUE on subsequent
50
* send or receive.
51
*/
52
void doTest(String remote_host, int port, boolean sendOnly) throws Exception {
53
54
System.out.println("***");
55
System.out.println("Test Description:");
56
System.out.println(" DatagramSocket.connect");
57
System.out.println(" Loop: DatagramSocket.send");
58
if (!sendOnly) {
59
System.out.println(" DatagramSocket.receive");
60
}
61
System.out.println("");
62
System.out.println("Test Run:");
63
64
InetAddress ia = InetAddress.getByName(remote_host);
65
DatagramSocket s = new DatagramSocket(0);
66
s.setSoTimeout(1000);
67
s.connect(ia, port);
68
69
byte[] b = "Hello".getBytes();
70
DatagramPacket p1 = new DatagramPacket(b, b.length, ia, port);
71
72
DatagramPacket p2 = new DatagramPacket(b, b.length);
73
74
int i = 0;
75
boolean gotPUE = false;
76
77
do {
78
79
System.out.println("Sending datagram to unreachable port...");
80
try {
81
s.send(p1);
82
} catch (PortUnreachableException e) {
83
System.out.println("DatagramSocket.send threw PUE");
84
gotPUE = true;
85
}
86
87
if (!gotPUE) {
88
Thread.currentThread().sleep(1000);
89
}
90
91
if (!sendOnly && !gotPUE) {
92
System.out.println("DatagramSocket.receive...");
93
try {
94
s.receive(p2);
95
} catch (PortUnreachableException e) {
96
System.out.println("DatagramSocket.receive threw PUE");
97
gotPUE = true;
98
} catch (SocketTimeoutException e) {
99
System.out.println("DatagramSocket.receive timed out - no PUE");
100
}
101
}
102
103
i++;
104
} while (i < 10 && !gotPUE);
105
106
if (!gotPUE) {
107
System.out.println("DatagramSocket.{send,receive} didn't throw " +
108
"PortUnreachableException - passing anyway!");
109
} else {
110
System.out.println(" Test passed.");
111
}
112
System.out.println("");
113
}
114
115
/*
116
* Perform tests via remote_host.
117
*/
118
Test(String remote_host) throws Exception {
119
120
int port = getPort();
121
122
doTest(remote_host, port, true);
123
doTest(remote_host, port, false);
124
}
125
126
public static void main(String args[]) throws Exception {
127
128
String remote_host = "localhost";
129
if (args.length > 0) {
130
remote_host = args[0];
131
}
132
133
new Test(remote_host);
134
}
135
}
136
137