/* * Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/** * @test * @bug 4313887 7006126 8142968 8178380 8183320 8210112 8266345 8263940 * @modules jdk.jartool * @library /test/lib * @build SetDefaultProvider TestProvider m/* jdk.test.lib.process.ProcessTools * @run testng/othervm SetDefaultProvider * @summary Runs tests with -Djava.nio.file.spi.DefaultFileSystemProvider set on * the command line to override the default file system provider
*/
/** * Test override of default FileSystemProvider with the main application * on the class path.
*/ publicvoid testClassPath() throws Exception {
String moduleClasses = moduleClasses();
String testClasses = System.getProperty("test.classes");
String classpath = moduleClasses + File.pathSeparator + testClasses; int exitValue = exec(SET_DEFAULT_FSP, "-cp", classpath, "p.Main");
assertEquals(exitValue, 0);
}
/** * Test override of default FileSystemProvider with a * FileSystemProvider jar and the main application on the class path.
*/ publicvoid testClassPathWithFileSystemProviderJar() throws Exception {
String testClasses = System.getProperty("test.classes");
Path jar = Path.of("testFileSystemProvider.jar");
Files.deleteIfExists(jar);
createFileSystemProviderJar(jar, Path.of(testClasses));
String classpath = jar + File.pathSeparator + testClasses
+ File.separator + "modules" + File.separator + "m"; int exitValue = exec(SET_DEFAULT_FSP, "-cp", classpath, "p.Main");
assertEquals(exitValue, 0);
}
/** * Creates a JAR containing the FileSystemProvider used to override the * default FileSystemProvider
*/ privatevoid createFileSystemProviderJar(Path jar, Path dir) throws IOException {
/** * Test override of default FileSystemProvider with the main application * on the class path and a SecurityManager enabled.
*/ publicvoid testClassPathWithSecurityManager() throws Exception {
String moduleClasses = moduleClasses();
String testClasses = System.getProperty("test.classes");
String classpath = moduleClasses + File.pathSeparator + testClasses;
String policyFile = System.getProperty("test.src", ".")
+ File.separator + "fs.policy"; int exitValue = exec(SET_DEFAULT_FSP, "-cp", classpath, "-Dtest.classes=" + testClasses, "-Djava.security.manager", "-Djava.security.policy==" + policyFile, "p.Main");
assertEquals(exitValue, 0);
}
/** * Test override of default FileSystemProvider with the main application * on the module path as an exploded module.
*/ publicvoid testExplodedModule() throws Exception {
String modulePath = System.getProperty("jdk.module.path"); int exitValue = exec(SET_DEFAULT_FSP, "-p", modulePath, "-m", "m/p.Main");
assertEquals(exitValue, 0);
}
/** * Test override of default FileSystemProvider with the main application * on the module path as a modular JAR.
*/ publicvoid testModularJar() throws Exception {
String jarFile = createModularJar(); int exitValue = exec(SET_DEFAULT_FSP, "-p", jarFile, "-m", "m/p.Main");
assertEquals(exitValue, 0);
}
/** * Test override of default FileSystemProvider where the main application * is a module that is patched by an exploded patch.
*/ publicvoid testExplodedModuleWithExplodedPatch() throws Exception {
Path patchdir = createTempDirectory("patch");
String modulePath = System.getProperty("jdk.module.path"); int exitValue = exec(SET_DEFAULT_FSP, "--patch-module", "m=" + patchdir, "-p", modulePath, "-m", "m/p.Main");
assertEquals(exitValue, 0);
}
/** * Test override of default FileSystemProvider where the main application * is a module that is patched by an exploded patch.
*/ publicvoid testExplodedModuleWithJarPatch() throws Exception {
Path patchdir = createTempDirectory("patch");
Files.createDirectory(patchdir.resolve("m.properties"));
Path patch = createJarFile(patchdir);
String modulePath = System.getProperty("jdk.module.path"); int exitValue = exec(SET_DEFAULT_FSP, "--patch-module", "m=" + patch, "-p", modulePath, "-m", "m/p.Main");
assertEquals(exitValue, 0);
}
/** * Returns the directory containing the classes for module "m".
*/ private String moduleClasses() {
String mp = System.getProperty("jdk.module.path"); for (String dir : mp.split(File.pathSeparator)) {
Path m = Paths.get(dir, "m"); if (Files.exists(m)) return m.toString();
}
fail(); returnnull;
}
/** * Creates a modular JAR containing module "m".
*/ private String createModularJar() throws Exception {
Path dir = Paths.get(moduleClasses());
Path jar = createJarFile(dir); return jar.toString();
}
/** * Creates a JAR file containing the entries in the given file tree.
*/ private Path createJarFile(Path dir) throws Exception {
Path jar = createTempDirectory("tmp").resolve("m.jar");
String[] args = { "--create", "--file=" + jar, "-C", dir.toString(), "." }; int ret = JAR_TOOL.run(System.out, System.out, args);
assertEquals(ret, 0); return jar;
}
/** * Invokes the java launcher with the given arguments, returning the exit code.
*/ privateint exec(String... args) throws Exception { return ProcessTools.executeTestJava(args)
.outputTo(System.out)
.errorTo(System.out)
.getExitValue();
}
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.28 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.