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