Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/com/sun/jmx/remote/NotificationMarshalVersions/TestSerializationMismatch.java
41155 views
1
/*
2
* Copyright (c) 2013, 2015, 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
import java.io.File;
25
import java.lang.reflect.Method;
26
import java.net.URL;
27
import java.net.URLClassLoader;
28
import java.util.Arrays;
29
30
/**
31
* @test
32
* @summary Tests for the RMI unmarshalling errors not to cause silent failure.
33
* @author Jaroslav Bachorik
34
* @bug 6937053 8005472
35
*
36
* @modules java.management
37
* jdk.compiler
38
* @run clean TestSerializationMismatch
39
* @run main/othervm TestSerializationMismatch
40
*
41
*/
42
public class TestSerializationMismatch {
43
static final String clientDir = "Client";
44
static final String serverDir = "Server";
45
static final String testSrc = System.getProperty("test.src");
46
static final String testSrcDir = testSrc != null ? testSrc : ".";
47
static final String testSrcClientDir = testSrcDir + File.separator + clientDir + File.separator;
48
static final String testSrcServerDir = testSrcDir + File.separator + serverDir + File.separator;
49
static final String testClasses = System.getProperty("test.classes");
50
static final String testClassesDir = testClasses != null ? testClasses : ".";
51
static final String testClassesClientDir = testClassesDir + File.separator + clientDir + File.separator;
52
static final String testClassesServerDir = testClassesDir + File.separator + serverDir + File.separator;
53
54
static final boolean debug = true;
55
56
public static void main(String[] args) throws Exception {
57
setup();
58
59
compileClient();
60
compileServer();
61
62
debug("starting server");
63
String url = startServer();
64
debug("server started and listening on " + url);
65
debug("starting client");
66
startClient(url);
67
}
68
69
static void setup() {
70
debug("setting up the output dirs");
71
cleanupDir(testClassesClientDir);
72
cleanupDir(testClassesServerDir);
73
}
74
75
static void cleanupDir(String path) {
76
debug("cleaning " + path);
77
File dir = new File(path);
78
if (dir.exists()) {
79
for(File src : dir.listFiles()) {
80
boolean rslt = src.delete();
81
debug((rslt == false ? "not " : "") + "deleted " + src);
82
}
83
} else {
84
dir.mkdirs();
85
}
86
}
87
88
static void compileClient() {
89
debug("compiling client");
90
compile("-d" , testClassesClientDir,
91
"-sourcepath", testSrcClientDir,
92
testSrcClientDir + "Client.java",
93
testSrcClientDir + "ConfigKey.java",
94
testSrcClientDir + "TestNotification.java");
95
}
96
97
static void compileServer() {
98
debug("compiling server");
99
compile("-d" , testClassesServerDir,
100
"-sourcepath", testSrcServerDir,
101
testSrcServerDir + "Server.java",
102
testSrcServerDir + "ConfigKey.java",
103
testSrcServerDir + "TestNotification.java",
104
testSrcServerDir + "Ste.java",
105
testSrcServerDir + "SteMBean.java");
106
}
107
108
static String startServer() throws Exception {
109
ClassLoader serverCL = customCL(testClassesServerDir);
110
111
Class serverClz = serverCL.loadClass("Server");
112
Method startMethod = serverClz.getMethod("start");
113
return (String)startMethod.invoke(null);
114
}
115
116
static void startClient(String url) throws Exception {
117
ClassLoader clientCL = customCL(testClassesClientDir);
118
119
Thread.currentThread().setContextClassLoader(clientCL);
120
Class clientClz = clientCL.loadClass("Client");
121
Method runMethod = clientClz.getMethod("run", String.class);
122
runMethod.invoke(null, url);
123
}
124
125
static ClassLoader customCL(String classDir) throws Exception {
126
return new URLClassLoader(
127
new URL[]{
128
new File(classDir).toURI().toURL()
129
},
130
TestSerializationMismatch.class.getClassLoader()
131
);
132
}
133
134
static void debug(Object message) {
135
if (debug) {
136
System.out.println(message);
137
}
138
}
139
140
/* run javac <args> */
141
static void compile(String... args) {
142
debug("Running: javac " + Arrays.toString(args));
143
if (com.sun.tools.javac.Main.compile(args) != 0) {
144
throw new RuntimeException("javac failed: args=" + Arrays.toString(args));
145
}
146
}
147
}
148
149