Path: blob/master/test/hotspot/jtreg/serviceability/dcmd/framework/TestProcessJarLauncher.java
41155 views
/*1* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223import jdk.test.lib.util.JarUtils;2425import java.io.File;26import java.io.IOException;27import java.nio.file.Path;28import java.nio.file.Paths;29import java.util.jar.Attributes;30import java.util.jar.Manifest;3132/**33* Launches a new Java process using -jar Java option.34*/3536public class TestProcessJarLauncher extends TestProcessLauncher {3738private static final String JAR_FILE = "testprocess.jar";394041public TestProcessJarLauncher(String className) {42super(className);43}4445protected String prepareLaunch(String javaExec, String pipePort) {46try {47File jarFile = prepareJar();48return javaExec + " -jar " + jarFile.getAbsolutePath() + " -pipe.port=" + pipePort;49} catch (IOException e) {50throw new RuntimeException("Failed to prepare a jar file", e);51}52}5354private File prepareJar() throws IOException {55Path jarFile = USER_DIR.resolve(JAR_FILE);56Manifest manifest = createManifest();57Path testClass = TEST_CLASSES_DIR.resolve(className + ".class");58JarUtils.createJarFile(jarFile, manifest, TEST_CLASSES_DIR, Paths.get("."));59return jarFile.toFile();60}6162private Manifest createManifest() {63Manifest manifest = new Manifest();64manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");65manifest.getMainAttributes().put(Attributes.Name.MAIN_CLASS, className);66return manifest;67}6869public String getJarFile() {70return JAR_FILE;71}72}737475